Leer pic con codigo de proteccion activado

Hola
Me picaba la curiosidad de si habria alguna forma de leer un pic con el codigo de protecion activado.
Tengo algunas ideas de como se podria hacer, pero por falta de tiempo prefiero exponerlas aqui y escuchar vuestras opiniones.

1º Al grabar un pic con el icpro al que le hemos activado el CP, no podemos verificar que esta bien grabado mediante la opcion verificar despues de grabar, pero si se puede hacer mediante la opcion verificar durante la grabacion.
Teniendo esto presente es posible que se pueda engañar al pic haciendo una nueva grabacion, pero variando los parametros de grabacion de tal forma que no lleguemos a borrar los datos que tiene almacenados y nos permita hacer una verificacion (lectura).

2º Sobre el programa original que tenga cargado el pic, proceder a cargar un programa encima de este pero con estas caracteristicas:
En la primera posicion de memoria poner un GOTO que me dirija a las ultimas posiciones de memoria que seguramente estaran sin escribir. En la segunda posicion poner la instruccion de comienzo de tabla. (solo habre perdido la información metida en la posicion del GOTO y inicio de tabla).
En las ultimas posiciones de memoria metere una rutina que me lea la tabla (sera todo el programa antiguo) y me saque la información por algun puerto.
Normalmente las ultimas posiciones de memoria estan en blanco, asi que no perdemos ningun dato si metemos nuestra rutina en esa posicion.

Naturalmente en caso de poder hacerse alguna de estas 2 opciones habria que realizar previamente el software que controle al grabador.

¿que conste que no soy partidario de copiar el sotfware de un pic en una operacion de 1 minuto, que otro compañero puede que se haya tirado meses en desarrollar?
 
Pues si me enterado por la red de algunas personas que han podido leer el programa del pic con el cp on...Pero hasta ahi.
 
pepechip dijo:
No quiero leer nigun pic con CP, solo quiero saber cual es la forma de hacerlo.

Perforas una "ventana" sobre la posición física en que se encuentra el CP en el chip y por ultravioleta o tensión(dependiendo del modelo de PIC) le cambias el estado.
Una cosa es decir y otra muy distinta hacer!

Saludos.

Ric.
 
Lo primero que hay que hacer es comprender como funciona el proceso de grabación y de lectura.
Los segundo es saber el motivo por el cual no se puede leer.
Que ocurre si te pones a leer bit a bit?
habria que hacer un programilla para ello.

No tiene por que estar la ultima linea de codigo vacia.

Saludos
 
Me interesaría saber como harías para leer desde el programa las instrucciones almacenadas en flash. Esto es posible en los pics con self-programming unicamente.

También me parece raro que puedas sobreescribir sólo algunas words con el programador, estimo que lo deben haber pensado y te deberían obligar a programar toda la flash.

Saludos,
Gonzalo
 
Hubo un tiempo que quería hacer lo mismo y todo el mundo me pidió que no pierda el tiempo.

Estoy invest¡gando otra vez a ver si sale algo.

EDIT:

Hice por ahora el comienzo del 16F84A. Tengo la idea de modificar la __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC mediante la programación y manejando desde el PORTA para cambiar el CP de ON a OFF y que esta se guarde en la EEPROM.

Por ejemplo, supongamos que usamos un 16F84A que sólo usamos un bit del puerto A para encender y apagar un Led. A lo zorro los 4 restantes del PORTA que no se usa, elegimos uno de ellos y lo dejamos pulsados 20 segundos hasta que se active el _CP_ON. ¿Realmente se puede hacer? Si se pudiera sólo lo hacemos los que programamos con esa intención, aún así es imposible por ahora quebrantarlo, pero por curiosidad...

Una vez que tengamos el .hex, lo pasamos por esa Web y descompilamos el código.

http://www.geocities.com/dinceraydin/pic/djdasm/djdasm.html

Mi ejemplo es el __CONFIG _CP_ON & _WDT_ON & _PWRTE_ON & _XT_OSC también puedes ponerlo así en __CONFIG 0005 que es lo mismo, y el 0005 lo saqué de la configuración del ic-prog o winpic800 que lo puedes ver. Ahí mediante programación quiero saber si puedo cambiar esos datos mediante programación y ejecutando las órdenes del puerto A.


  • LIST P=16F84A ; Procesador.
    INCLUDE <P16F84A.INC> ; Definición de los operandos utilizados.

    ; ZONA DE CÓDIGOS ********************************************************************

    ORG 2700 ; Comienzo de la configuración
    __CONFIG 0005

    ORG 2100 ; Comienzo de la memoria EEPROM
    DE "Hola desde la EEPROM del PIC-16F84A", 0x00

    ORG 2000 ; Comienzo del ID que es 1234
    DT 0x01, 0x02, 0x03, 0x04

    ORG 0 ; El programa comienza en la dirección 0 de memoria de
    Inicio ; programa.
    bsf STATUS,RP0 ; Pone a 1 el bit 5 del STATUS. Acceso al Banco 1.
    clrf PORTB ; Las líneas del Puerto B se configuran como salidas.
    movlw b'11111111'
    movwf PORTA ; Las líneas del Puerto A se configuran como entradas.
    bcf STATUS,RP0 ; Pone a 0 el bit 5 de STATUS. Acceso al Banco 0.

Al cargar el .hex al ic-pror puedo ver la configuración del ID que pone 1234, y se ve una opción llamada Checsum que pone 3499 cosa que en el Winpic800 no pone nada de eso.

Ahora toca a investigar.
 
dejamos pulsados 20 segundos hasta que se active el _CP_ON. ¿Realmente se puede hacer?

Los fuses no son addresables desde los programas, es imposible hacerlo.

Datasheet de 16f628a:

14.1 Configuration Bits
The configuration bits can be programmed (read as ‘0’)
or left unprogrammed (read as ‘1’) to select various
device configurations. These bits are mapped in
program memory location 2007h.
The user will note that address 2007h is beyond the
user program memory space. In fact, it belongs to the
special configuration memory space (2000h-3FFFh),
which can be accessed only during programming. See
“PIC16F627A/628A/648A EEPROM Memory
Programming Specification” (DS41196) for additional
informaciónrmation.
 
traductor de google:

14,1 configuración Bits
La configuración de bits puede programarse (leer como'0 ')
no programada oa la izquierda (leer como'1 ') para seleccionar varias
configuraciones de dispositivos. Estos bits son mapeados en
programa de ubicación de memoria 2007h.
El usuario nota que la dirección 2007h está más allá de la
programa de usuario espacio de memoria. De hecho, pertenece al
configuración especial de espacio de memoria (2000h-3FFFh),
que sólo pueden acceder a ellos durante la programación. Ver
"PIC16F627A/628A/648A memoria EEPROM
Especificación de Programación "(DS41196) adicionales para
información.
 
Traduccion Mia:

Los bits de configuración pueden ser programados (se leen como ‘0’)
o ser dejados sin programar (se leen como ‘1’) para seleccionar diversas
configuraciones de equipo. Estos bits están mapeados a la
direccion de memoria de programa 2007h.
El usuario se dará cuenta que 2007h está pasando
la memoria de usuario de programa. De hecho, corresponde al
espacio de memoria de configuración especial (2000h-3FFFh),
a los que solo se puede acceder durante la programación
 
Y eso que decían que la ORG 2000 no se podía programar y si se puede. Hablo del 16F84, que el el ID.

Código:
ORG 2000 ; Comienzo del ID que es 1234
DT 0x01, 0x02, 0x03, 0x04

Ahora los más usados para aprender veo que son el 16F84A, 16F628A y el nuevo y preparado para el C el 16F88 con más memoria, RAM , etc... ¡OJO! Dije preparado al C, no orientado al C que eso son para la gama 18F.

Me da que no se puede alterar los CP nunca.

A la próxima utilizar traductor.
http://translate.google.com/
http://world.altavista.com/
 
es imposible por una simple razon.. los fabricantes buscan maneras de asegurar que no se pueda copiar programas... si tratan de desbloquear el fusible de proteccion de escritura el chip automaticamente hara un reset general para borrar todos los datos...

solo conozco casos de chips leidos con voltajes elevados adrede... pero eso puede dañar al chip... y otra es quitar la cobertura de plastico y leer las señales con equipo muy especializado...

YouTube - How to Reverse-Engineer a Satellite TV Smart Card
 
Chico3001 dijo:
es imposible por una simple razon.. los fabricantes buscan maneras de asegurar que no se pueda copiar programas... si tratan de desbloquear el fusible de proteccion de escritura el chip automaticamente hara un reset general para borrar todos los datos...

solo conozco casos de chips leidos con voltajes elevados adrede... pero eso puede dañar al chip... y otra es quitar la cobertura de plastico y leer las señales con equipo muy especializado...

http://www.youtube.com/watch?v=tnY7UVyaFiQ
bueno de poder si se puede como lo puso chico 30001 en este video que el ingeniero en sofware cris lo hiso con acidos abrio el chip para ver la escritura de las targetas inteligentes de de nagra vision tanto se puede que ese sistema ya tiene mas de dos años hakeado.
 
Atrás
Arriba