(AYU) Programación de memoria eprom

Publicado por gatocapo, Agosto 23, 2006, 08:57:59

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

gatocapo

necesito saber como escribo un codigo hexadecimal para que me salga en una impresion de un tiket un numero de registro.
aca dejo unas lineas  que es lo que tengo que hacer pero no se como
Address   0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F 0123456789ABCDEF
-------- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ----------------
00000000 30 00 FE DE FB 8B FE AF BA B5 CF CF CF CB C7 C7 0...............
00000010 CE FF 35 FF FF FF 18 FC FD FF 18 FC FA FF 9C FF ..5.............
00000020 FE FF 52 FF FF FF 88 CB 00 00 00 00 00 00 2A 5A ..R...........*Z
00000030 30 00 FE 1C FC 8B FE FC 8B BE AD BA AC FF BF FE 0...............
00000040 F3 FF FF FF BF FE BF FE CE CF D1 CF CF FF FF FF ................
00000050 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 6D 80 ..............m.
00000060 30 00 FE DE FB 8B FE AF BA B5 CF CF CF CB C7 C7 0...............
00000070 CE FF 35 FF FF FF 18 FC FD FF 18 FC FA FF 9C FF ..5.............
00000080 FD FF 52 FF FF FF 88 CB 00 00 00 00 00 00 29 59 ..R...........)Y
00000090 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
000000A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
000000B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
000000C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
000000D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
000000E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................

lo que esta en color es el numero que tengo que cambiar, pero nose como suplementar la demas lineas

Predicador

Hola, usas un Hex Editor (por ejemplo este que es limitado pero sirve) para editar el archivo.
Con respecto a
Citarero nose como suplementar la demas lineas
no se a que te referis.
Bah, realmente no entendi mucho de lo que queres hacer jeje.
Espero que si mi respuesta no es la adecuada, intentes de hacer una explicacion mas extensa y centrada en lo que queres hacer y como (y quizas tambien sea bueno que expliques de donde sacas cada cosa y que equipos usas).
Baii
En la mayoría de las comunidades online el 90% de los usuarios son mirones que nunca contribuyen, el 9% contribuyen un poco y el 1% son los responsables de casi toda la acción. Nielsen

gatocapo

lo que tengo que hacer es cambiar un codigo de registro de un controlador fiscal pero no se como,se que el numero que aparce al sacar un tiket es el que esta en rojo(el numero es 0004881), como hago para poner un numero que yo quiera,el aparato que utilzo es un grabador de memoria eprom, y los borro la memoria con un tuvo ultravioleta, si me salvas estare agradecido
Address   0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F 0123456789ABCDEF
-------- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ----------------
00000000 30 00 FE DE FB 8B FE AF BA B5 CF CF CF CB C7 C7 0...............
00000010 CE FF 35 FF FF FF 18 FC FD FF 18 FC FA FF 9C FF ..5.............
00000020 FE FF 52 FF FF FF 88 CB 00 00 00 00 00 00 2A 5A ..R...........*Z
00000030 30 00 FE 1C FC 8B FE FC 8B BE AD BA AC FF BF FE 0...............
00000040 F3 FF FF FF BF FE BF FE CE CF D1 CF CF FF FF FF ................
00000050 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 6D 80 ..............m.
00000060 30 00 FE DE FB 8B FE AF BA B5 CF CF CF CB C7 C7 0...............
00000070 CE FF 35 FF FF FF 18 FC FD FF 18 FC FA FF 9C FF ..5.............
00000080 FD FF 52 FF FF FF 88 CB 00 00 00 00 00 00 29 59 ..R...........)Y
00000090 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
000000A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
000000B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................

snoop

A ver, el codigo hexadecimal que tiras ¿como lo obtuviste?
¿Es de un ejecutable (un soft), un archivo (binario) o lo obtuviste desde un hardware?
Desconozco como grabar/borrar una memoria de este tipo, lo que pude encontrar fué esto:
http://es.wikipedia.org/wiki/EEPROM
CitarEEPROM son las siglas de electrically-erasable programmable read-only memory (ROM programable y borrable eléctricamente), en español o castellano se suele referir al hablar como E-2-PROM y en inglés "E-Squared-PROM". Es un tipo de memoria ROM que puede ser programado, borrado y reprogramado eléctricamente, a diferencia de la EPROM que ha de borrarse mediante rayos ultravioletas. Aunque una EEPROM puede ser leída un número ilimitado de veces, sólo puede ser borrada y reprogramada entre 100.000 y 1.000.000 de veces.

Pero como decis que es EPROM, "mediante rayos ultravioletas"  :o podes borrar (pero desconozco como volver a escribir).

Ahora por el lado lógico el código que marcas es en hexa: CF CF CF CB C7 C7 CE
y en decimal (todo basandome en lo que decis vos): 0004881
Si pasamos el codigo hexadecimal a binario nos queda: 207 207 207 203 199 199 206
en ascci seria: ¤¤¤ÃÃ

Aparentemente solo hay hecha una rotacion de caracteres y se invirtio el orden de los caracteres (en vez de "...abcde..." seria "...edcba...") y los numeros serian:
0  = 207
1  = 206
2  = 205
3  = 204

4  = 203
5  = 202
6  = 201
7  = 200

8  = 199
9  = 198

Ahora, en caso de que haya que escribir en un hard, como ni idea, ahí puse como serian los numeros.

Saludos
¿ Tu emule te aparece así ---- ? ¡¡ Tenés LOWID !! : >>SOLUCIÓN<<

Predicador

A ver, por lo que decis tenes el lector de eproms conectadao a la PC, entonces con el programa que usas para mirar la memoria lo que debes hacer es un dump (volcado) comlpeto de la memoria en un archivo de la PC, luego modificas ese archivo con el soft que te mencione antes y luego escribis ese archivo con el dispositivo para escribir eproms que tenes.
Baii
En la mayoría de las comunidades online el 90% de los usuarios son mirones que nunca contribuyen, el 9% contribuyen un poco y el 1% son los responsables de casi toda la acción. Nielsen

gatocapo

el archivo lo lei con un aparato lector/grabador de memorias,y el archivo lo baje a la pc,lo que llegue a averiguar es que el archivo que estoy leyendo, para que me imprima el codigos de numeros que yo quiero en un tiket trabaja con un codigo de impresion, por eso difiere mucho con respecto al codigo ascii, y no se como escribir la memoria para que salga el codigo de numero al imprimir el tiket.una vez que tenga el nuevo archivo lo vuelvo a grabar a una memoria limpia.

tambien pude averiguar es que: "dentro de la memoria hay 32 bytes que forman la cadena  de ecriptacion. cada vez que un byte es direcionado durante la verificacion, se utiliza 5 lineas de direccion para seleccionar un byte de lacadena de encriptacion. estabytees sometido a la  peracion logica XNOR con el codigo byte de informacion creando un byte encriptado"(segun el libro introduccion a los microcontroladores, de jose adolfo gonzalez vazquez)

Predicador

#6
a ver, para reemplazar el numero descompones el numero que queres en cada digito y lo compones de la siquiente forma en hexadecirmal:
nuevo_digito_a_insertar = C(F-viejo_digito)
Por ende si queres poner el numero 1234560 deberias reemplazar CF CF CF CB C7 C7 CE por CE CD CC CB CA C9 CF
como obtengo esto? facil:
1234560 se decompone en digitos, luego recomponemos uno por uno:
1 -> C(F - 1) = CE
2 -> C(F - 2) = CD
3 -> C(F - 3) = CC
4 -> C(F - 4) = CB
5 -> C(F - 5) = CA
6 -> C(F - 6) = C9
0 -> C(F - 0) = CF
Facil, no?

Realmente no es una encryptacion usando ningun XOR (al menos en este caso) es un simple composicion.
Baii
En la mayoría de las comunidades online el 90% de los usuarios son mirones que nunca contribuyen, el 9% contribuyen un poco y el 1% son los responsables de casi toda la acción. Nielsen

gatocapo

la ecuacion que realisaste ya la tengo, pero al cambiar el codigo viejo por uno nuevo,reprogramo la memoria,la instalo y al sacar un tiket en donde tendria que estar el codigo de numeros no aparece nada.no se imprime nada en el tiket...

por eso me dijieron que tengo  que cambiar toda la linea de codigo hexadecimal donde se encuentra el codigo del numero para que se imprima los numeros en el tiket.

Lo que necesito saber es como formo las siguientes lineas del mapa hexadecimal de la memoria

snoop

#8
Entonces o se escribio mal o tiene un chequeo de integridad (como CRC) en alguna parte (osea habria que modificar mas cosas) o hay que editar mas partes, pero como esta en hexa ¡ni idea!.

Tambien revisa al final de 00000060 y al principio de 00000070 que el código CF CF CF CB C7 C7 CE se repite, por lo que quizas lo tengas que modificar en 2 lugares.
¿ Tu emule te aparece así ---- ? ¡¡ Tenés LOWID !! : >>SOLUCIÓN<<

gatocapo

repeti varias veces la grabacion pero sigue haciendo lo mismo,lo que me llama la atencion es el tema deque " tiene un chequeo de integridad (como CRC) en alguna parte (osea habria que modificar mas cosas) o hay que editar mas partes,"a que te referis?,que el el crc? ,baje un programa que me trasforma el mapa hexadeciomal a un asm. paso una parte:
JNB 00h,FEh
DJNZ R6,FBh
MOV FEh,R3
MOV R7,BAh
CJNE A,CFh,CFh
XCH A,R7
XCH A,R3
Label_1:
XCH A,@R1
XCH A,@R1
XCH A,R6
MOV R7,A
Label_2:
ADDC A,FFh
MOV R7,A
MOV R7,A
Label_3:
DEC R0
MOV R4,A
MOV R5,A
MOV R7,A
DEC R0
MOV R4,A
MOV R2,A
MOV R7,A
SUBB A,R4
MOV R7,A
MOV R6,A
MOV R7,A
Label_4:
ANL FFh,A
MOV R7,A
MOV R7,A
Label_5:
MOV CBh,R0
NOP
NOP
Label_6:
NOP


el problema que tengo es que una vez pasado a asm. no puedo volver al archivo de mapa hexadecimal...

Predicador

1- Tiene razon snoop, el patron desde 00 a 2D se repite desde 60 a 8D, asi que podrias probar de cambiarlo en los dos lados y regrabar.
2- Respecto del desensamblado, deberias desensamblar codigo (y no datos como parece que lo hiciste), ademas debes desensablar con un disassembler adecuado (para el microcontrolador que usa la registradora esa) y claro, luego ensamblarlo con un assembler para esa misma arquitectura.
3- El codigo desensamblado que pones no tiene sentido realmente, no es algoritmo alguno, solo instrucciones al azar y se nota a la legua.
4- Que es un CRC? bueno viene de las siglas (chequeo de redundancia ciclica - cyclic redundancy check) y son mas que nada codigos de chequeo de integridad (basados en sumas normalmente), para comprobar si algun bit se altero. Entonces si modificas el numero deberias recalcular el CRC para que concuerde. No veo que haya CRC, pero quizas sea eso nada mas, que yo no lo veo.
Baii.
En la mayoría de las comunidades online el 90% de los usuarios son mirones que nunca contribuyen, el 9% contribuyen un poco y el 1% son los responsables de casi toda la acción. Nielsen

Camello_AR

No se porque pero si logras hacer lo que queres hacer como q la AFIP-DGI no va a estar muy contenta  :jaja: :jaja: :jaja:

gatocapo

que tipo de cuenta debo hacer para recalcular el CRC?,podria ser eso el problema, tendria que sacar los nuevos codigos para conservar la integridad del la memoria

Predicador

Hay muchas formas de calcular un CRC, con solo mirar los CRC para 8 bits en esta lista te das una idea de los distintos standards que hay, de paso podes leer en esa pagina todo sobre los CRC.
Baii
En la mayoría de las comunidades online el 90% de los usuarios son mirones que nunca contribuyen, el 9% contribuyen un poco y el 1% son los responsables de casi toda la acción. Nielsen

gatocapo

llegue a que tengo que cambiar solo 4 numeros para poder cambiar el codigo de redistro,dejo dos copias de memorias para que lo puedan ver y poderme ayudar para encontrar la logica para sacar esos numeros
PEC0012065
Address   0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F 0123456789ABCDEF
-------- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ---------
00000000 30 00 FE DE 7B FB FE AF BA BC CF CF CE CD CF C9 0...{........
00000010 CA FF 36 FF FF FF 18 FC FD FF 18 FC FA FF 9C FF ..6..........
00000020 FE FF AA FD FF FF CB CD 00 00 00 00 00 00 49 0D .............
00000030 30 00 FE DE FB FB FE AF BA BC CF CF CF C7 CF CE 0............
00000040 CD FF 36 FF FF FF 18 FC FD FF 18 FC FA FF 9C FF ..6..........
00000050 FD FF AA FD FF FF CB CD 00 00 00 00 00 00 C8 F0 .............
00000060 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .............
00000070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .............
00000080 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .............


esta es la segunda memoria:
PEC0008012

Address   0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F 0123456789ABCDEF
-------- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -----------
00000000 30 00 FE DE 7B FB FE AF BA BC CF CF CF C7 CF CE 0...{........
00000010 CD FF 36 FF FF FF 18 FC FD FF 18 FC FA FF 9C FF ..6..........
00000020 FF FF FF FD FF FF CB CD 00 00 00 00 00 00 05 D0 .............
00000030 30 00 FE DE FB FB FE AF BA BC CF CF CF C7 CF CE 0............
00000040 CD FF 36 FF FF FF 18 FC FD FF 18 FC FA FF 9C FF ..6..........
00000050 FD FF AA FD FF FF CB CD 00 00 00 00 00 00 84 2D .............
00000060 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .............
00000070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .............
00000080 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .............
00000090 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .............



gatocapo

URGENTE:
llegue a que tengo que cambiar solo 4 numeros para poder cambiar el codigo de redistro,dejo dos copias de memorias para que lo puedan ver y poderme ayudar para encontrar la logica para sacar esos numeros
PEC0012065
Address   0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F 0123456789ABCDEF
-------- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ---------
00000000 30 00 FE DE 7B FB FE AF BA BC CF CF CE CD CF C9 0...{........
00000010 CA FF 36 FF FF FF 18 FC FD FF 18 FC FA FF 9C FF ..6..........
00000020 FE FF AA FD FF FF CB CD 00 00 00 00 00 00 49 0D .............
00000030 30 00 FE DE FB FB FE AF BA BC CF CF CF C7 CF CE 0............
00000040 CD FF 36 FF FF FF 18 FC FD FF 18 FC FA FF 9C FF ..6..........
00000050 FD FF AA FD FF FF CB CD 00 00 00 00 00 00 C8 F0 .............
00000060 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .............
00000070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .............
00000080 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .............


esta es la segunda memoria:
PEC0008012

Address   0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F 0123456789ABCDEF
-------- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -----------
00000000 30 00 FE DE 7B FB FE AF BA BC CF CF CF C7 CF CE 0...{........
00000010 CD FF 36 FF FF FF 18 FC FD FF 18 FC FA FF 9C FF ..6..........
00000020 FF FF FF FD FF FF CB CD 00 00 00 00 00 00 05 D0 .............
00000030 30 00 FE DE FB FB FE AF BA BC CF CF CF C7 CF CE 0............
00000040 CD FF 36 FF FF FF 18 FC FD FF 18 FC FA FF 9C FF ..6..........
00000050 FD FF AA FD FF FF CB CD 00 00 00 00 00 00 84 2D .............
00000060 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .............
00000070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .............
00000080 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .............
00000090 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF .............

gatocapo

urgente: no hoy andie que me pueda ayudar con la programacion de la memoria?

Camello_AR

Si no te han respondido es porque nadie tiene una solución, el levantar post no es una buena practica

gatocapo

como veo que nadie me puede ayudar con la programacion de las eprom,me podrian decir algun libro donde me pueda guiar,gracias!!

Predicador

Hola gatocapo, ya postee antes sobre el esquema de codificacion que usa para los numeros, ahora debes buscar donde esta el CRC o Checksum (es una cuenta que verifica la integridad de la memoria), determinar por medio de ingenieria inversa cual usa, luego alterar la memoria con los numeros que queres ponerle y su respectivo CRC o Checksum y grabarla.
Donde leer? bueno, hay miles de cosas por leer, podrias buscar el google sobre los CRC o Checksums mas usados; eso si, no es algo trivial de descubrir, puede llevar tiempo.
En fin, exitos en tu empresa.
Baii
En la mayoría de las comunidades online el 90% de los usuarios son mirones que nunca contribuyen, el 9% contribuyen un poco y el 1% son los responsables de casi toda la acción. Nielsen