Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: paulagarcum en 17 Octubre 2013, 23:04 pm



Título: lío ASCII
Publicado por: paulagarcum en 17 Octubre 2013, 23:04 pm
Hola a todos. Por lo visto hay varios tipos/versiones de tablas ASCII, principalmente 3:

1. (página de códigos 437)
2. (página de códigos 850)
3. ISO-8859-1

Para caracteres normales las tablas son la misma, pero para los caracteres extendidos cambian.


Para caracteres extendidos:

Las tablas 1 y 2 son parecidas, pero no iguales.
Y la tabla 3 ya es totalmente distinta.

Por ejemplo, si tomamos un carácter extendido, por ejemplo la letra ñ, para la tabla 1 y la tabla 2 el código es A4h, mientras que para la tabla 3 el código sería F1h.

Entonces esta es la pregunta:

Si yo quiero poner un mensaje con algún carácter extendido, ¿qué tabla utilizo?, para que luego con un desensamblador o editor hexadecimal se lea bien.

Por ejemplo: Hiew, OllyDbg, Immunity Debugger, IDA, sacan la ñ como A4h, mientras que WinHex saca la ñ con F1.

¿?

Para otros caracteres extendidos me parece que incluso las 3 tablas tienen un valor distinto.

Entonces: ¿qué tabla ASCII es la que se usa para ver los valores numéricos de los caracteres extendidos?

Gracias.


Título: Re: lío ASCII
Publicado por: MCKSys Argentina en 18 Octubre 2013, 01:37 am
Creo que el problema es que algunos confunden la tabla ASCII con la ANSI (MS Windows-1252), inclusive con otros tipos de ASCII extendido.

Fijate:

- Tabla ASCII: ASCII en wikipedia (http://en.wikipedia.org/wiki/Ascii)
- Tabla ANSI: ANSI en wikipedia (http://en.wikipedia.org/wiki/Windows-1252)
- Otras tablas extendidas: Otras Extended ASCII (http://en.wikipedia.org/wiki/Extended_ASCII)

Para referencia, la ñ siempre fue 164 (al menos lo era en la epoca en que programaba en MS-DOS era asi). Una tabla ASCII: http://www.asciitable.com/ (http://www.asciitable.com/)

En lo de ASCII explica la confusion entre las 3 tablas: ISO-8859-1, ANSI y ASCII.

Saludos!


Título: Re: lío ASCII
Publicado por: paulagarcum en 18 Octubre 2013, 16:49 pm
Gracias MCKSys. Creo que algo más me he aclarado.

De todas maneras sigo sin saber muy bien entonces qué tabla de ASCII extendido usar. Si la página de códigos 850, la ISO 8859-1, la Windows-1252, ¿?


Por las pruebas que he hecho parece que la que normalmente interpretan los debuggers y editores hexadecimales es:


La página de códigos 850 -> 850 OEM Latin I multilingüe.

Al menos la usan: OllyDbg, Immunity Debugger, IDA, Hiew.


Pregunta que me hago:

Claro que también esas aplicaciones pueden seleccionar por defecto el 850 OEM Latin I multilingüe, debido a que mi idioma seleccionado en mi windows es español y por tanto Latin I multilingüe. Si mi idioma seleccionado en mi windows fuese por ejemplo japonés, igual esas aplicaciones ya no sacarían que el byte A4h es la ñ, sino una letra japonesa x la que fuese. ¿No? Puede ser...




Sí. Acabo de comprobarlo: si cambio y me pongo idioma japonés, entonces esas aplicaciones ya no sacan la ñ para el carácter A4h sino una letra japonesa.


Moraleja:
O sea hay que buscar la página de códigos a la que pertenezca tu idioma y según esa tabla codificar cualquier carácter extendido, como la ñ, con el código que ponga esa tabla. En este caso para la tabla de códigos 850 OEM Latin I multilingüe, la ñ tiene el código A4h.