TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: jca en 05 de Mayo de 2004, 13:38:00

Título: Encriptar programa pic
Publicado por: jca en 05 de Mayo de 2004, 13:38:00
Buenas a todos, acabo de terminar un proyecto para una empresa con el pic 16f876, me gustaría saber si hay alguna manera de encriptar el programa para que cuando esté el cacharro funcionando de cara al público, si alguien coge el pic para leer el programa no le pueda leer, pero a la hora de un posible cambio de programa yo si pueda leerle, borrarle grabarle otro programa y volverle a encriptar, espero aberme explicado bien.

Un saludo a todos.
Título: RE: Encriptar programa pic
Publicado por: elreypic en 05 de Mayo de 2004, 21:37:00
Que tal jca. Pues mira lo que intentas hacer es posible, pero en otra forma. El microcntrolador PIC tiene una característica especial llamada "PROTECCION DEL CÓDIGO" (code protected). Esta característica te permite que al momento que alguien intente leer el código del micro únicamente leerá ceros. Esta característica te dará lo que tu necesitas. Ya que si tu deseas reprogramar el micro lo puedes hacer cuantas veces quieras. Cuando habilitas la proteción del código no eiste forma alguna de eliminarla para desifrar el código, ya que si ejecutas el comando desactivar el code protect el micro ejecuta un borrado total del micro, dejándolo sin código y por supuesto sin funcionar el sistema.

Bueno espero te sirva esto.
Título: RE: Encriptar programa pic
Publicado por: Nocturno en 06 de Mayo de 2004, 03:25:00
Escrito originalmente por jca_21_yo
pero a la hora de un posible cambio de programa yo si pueda leerle, borrarle grabarle otro programa y volverle a encriptar,

Un saludo a todos.


Permíteme un matiz, ElReyPic.

Si activas la protección del código en el PIC, ni siquiera tú podrás leerlo. Es obvio que conservarás una copia del programa original en tu PC y podrás sobreescribir el PIC, pero sin leer lo que tenía.

Un saludo
Título: RE: Encriptar programa pic
Publicado por: Elena2000 en 06 de Mayo de 2004, 03:43:00
Hola jca_21_yo_ufff...

Al PIC no le puedes meter un código encriptado ni manipulado, ni nada que no sea exactamente el HEX generado a partir del código fuente.

A ver, si has grabado el PIC sin la protección de código activada, entonces efectivamente cualquiera puede recuperar el programita, y cacharrear con él...
Pero claro, como dice Nocturno, si lo grabas con protección de código, nadie nadie, ni tú pispo..., puede recuperar el código del PIC. Nop.

Lo mejor es eso, que lo grabes protegido, y que guardes bien el código fuente para futuras mejoras o mantenimiento, etc. Seguro que si le explicas esto a la empresa para la que has trabajado se queda más conforme.

Título: RE: Encriptar programa pic
Publicado por: cucaracha en 06 de Mayo de 2004, 05:27:00
Como te indican es la manera de hacerlo, y por lo que he leído es efectiva. No hay manera de saltarse eso...
Una cosa. Al programarlo, si tienes activo el fuse de protección de código y te dá error al programar es que tienes lo de verificar activo. Y como está protegido pues eso, no se puede leer... y por tanto no podrás verificar. Es para que no te quiebres las cabeza si te dá el famoso error 0000H cuando lo programes. Es lógico, no?
Título: RE: Encriptar programa pic
Publicado por: Ginho_rj en 06 de Mayo de 2004, 07:52:00
o que poucos sabem é que ja é possivel em certos pics burlar isso,mas é bom que poucos saibam mesmo!
Título: RE: Encriptar programa pic
Publicado por: cucaracha en 06 de Mayo de 2004, 08:01:00
Si, algo leí de eso... Pero alguien del foro creo que probó y nada...
Sólo palabras... quién sabe...
Además el método ese por lo visto no lo lee del todo (eso si es verdad que funciona...). Sólo lee un número de bytes... no recuerdo bien.
En fin...

Saludos!!
Título: RE: Encriptar programa pic
Publicado por: josemyzm en 06 de Mayo de 2004, 11:04:00
Ya que sale el tema tengo una duda. En el caso del 16F876 y algunos más se puede reprogramar la flash desde el propio programa (funcionamiento de los típicos bootloaders), y me prgunto ¿el bit de proteccion que impide la lectura de los micros es solo cara a exterior o afecta tambien al uso del bootloader?

Un saludo.
Título: RE: Encriptar programa pic
Publicado por: jca en 06 de Mayo de 2004, 12:06:00
Gracias a todos, entonces lo único que tengo que hacer es cuando grabe el programa en el micro con el ic-prog poner una de las tres opciones que hay en el menú desplegable de donde pone protección de codigo no? pero cual de las tres?

Un saludo a todos y besos para elena jajaja.
Título: RE: Encriptar programa pic
Publicado por: manex_1987 en 06 de Mayo de 2004, 14:20:00
Como anecdota, decir que leí en algun foro de estos, que hay algunos mangarranes que se lo curran fabulosamente para poder leer satisfactoriamente un PIC incluso con CP activado. El procedimiento es, "comer" la carcasa del pic hasta que quede con las tripas al aire, luego localizar el fuse de CP (!!!) , y luego , con la ayuda de rayos ultravioleta, neutralizarlo (!!!!!!)... Si es que hay cada...

saludos!
Título: RE: Encriptar programa pic
Publicado por: Elena2000 en 07 de Mayo de 2004, 05:58:00
Hola Pegatina,....  digo Adhesivo!

Respeto a tu duda sobre si el proteger el código se impide la lectura/escritura de la flash usando un bootloader, pues te cuento que si, se impide. Si se activa ese bit de configuración, lo que se hace es casi físicamente "quemar" una zona del circuito integrado que impide el acceso a la memoria flash, con lo cual ni un bootloader, ni otro programador ni perico el de los palotes podría leer el PIC nunca jamás.

Título: RE: Encriptar programa pic
Publicado por: jca en 07 de Mayo de 2004, 06:25:00
Pero vamos a ver...jeje si activo lo de proteger codigo me quedo sin pic??? pero no habeis dicho que lo único que hago con eso es no poder volverlo a leer pero si grabo otro programa en el pic y no lo protejo este programa si lo podré volver a leer y modificar las veces que quiera no??vamos que otra vez volverá a estar el pic como al principio.

Puff hasta que no lo vea claro...no protejo el código.

Saludos.
Título: RE: Encriptar programa pic
Publicado por: Elena2000 en 07 de Mayo de 2004, 06:39:00
Ahhhhhhh... creo que me he explicado de culo... jejeje.. mil perdones, pero si, eso es: si le proteges el código no lo podrás leer, vale? es decir, no podrás recuperar el programa que has grabado. Pero si que le puedes machar el código encima volviendo a escribirlo...

creo...

Mira, haz eso que dices, lo mejor es que no le actives ese bit de protección hasta que no lo tengas ya muy claro que funciona genial.
Título: RE: Encriptar programa pic
Publicado por: MGLSOFT en 07 de Mayo de 2004, 08:25:00
Tal como dice Elena, no protejas el codigo hasta que no sepas que anda superOK...
Me paso de proteger una serie de PIC18F84A y no pude volver a utilizarlos, alli aprendi a no meter mas la pata al respecto, solo protejo lo que se que anda....
Título: RE: Encriptar programa pic
Publicado por: miltonmc en 07 de Mayo de 2004, 10:33:00
hola a todos
tengo una duda busque el PIC18F84A y no aparece, pienso que
MGLSOFT se confudio en el numero del pic y en microchip solo aparece PIC18F8410  y  PIC18F8490 y deseo saber mas sobre el codigo de protecion (CP) ya que no sabia que si programaba con el CP (data EE memory) un micro tipo FLASH (PICxx F xxx) se dañaba o no se podia regrabar eso es nuevo para mi y no me gustaria dañar un micro.
saludo a todos(as)
                                        miltonmc
Título: RE: Encriptar programa pic
Publicado por: Nocturno en 07 de Mayo de 2004, 11:37:00
No es 18f84a sino 16f84a
Título: RE: Encriptar programa pic
Publicado por: MGLSOFT en 07 de Mayo de 2004, 12:34:00
Gracias  Nocturno, bien hecha la correccion.
Estoy mas peleado con el teclado que el Marques...
Título: RE: Encriptar programa pic
Publicado por: MGLSOFT en 07 de Mayo de 2004, 12:41:00
En realidad un micro flash no debe tener ese tipo de problemas...segun Microchip dice.
Si tienen problemas las versiones con ventana de borrado ultravioleta, pero ese es otro tema que algunos de ustedes no deberan sufrir, gracias a la tecnologia Flash.

Como Microchip tuvo (aunque no lo dice) varios problemas de lectura del codigo en el 16F84 saco rapidamente el 16F84A, pero tarde y mal, asi que en los primeros trillones de chips hubo problemas de este tipo que cuento, que desapareceran como por arte de magia una vez se consuman....
Título: RE: Encriptar programa pic
Publicado por: pikman en 07 de Mayo de 2004, 19:31:00
Hola, bueno aqui va mi aporte, cualquier micro flash puede protegerse si problemas, y despues reutilizarlo, pero para reutilizarlo hay que grabarlo completamente, posiblemente algunos cuando desarrollan solo graban la porcion utilizada y entones da error de proteccion.

Cuando salio el pic16C84 , pero tenia un sistema de proteccion muy vulnerable, pues tenia un solo bit interno de proteccion, que mediante un cambio de tensiones entre VPP y VCC era posible borrarlo y por lo tanto recuperar el codigo, mas tarde aparecieron el en mercado europeo los PIC/BUSTER/COPIER, pues muchas empresas de television satelital y de cable  usaron tarjetas con este micro para los decodificadores y el negocio era clonar tarjetas ( hoy tambien lo es )  , este micro era todo eeprom la memoria de programa y la de datos, a mediados de 1998 aparecio el pic16f84  que es fhash la memoria de programa, que ya no era tan facil pero era posible, y finalmente el 16F84a como todos los demas flash ya no es posible leerlos solamente con el metodo descripto  mas arriba que nunca probe, pero parece que funciona, para proteger alguno micro que posea bootloader o que se autoescriba existe la posibilidad de proteger por ejemplo el 50% de la memoria  de programa con un poco de ingenio se puede hacer que la parte legible por el pirata no le sirva para nada, usado la parte sin proteger para variables o subrutinas solamente, bueno espero que les sirva.

saludos

Ariel
Título: RE: Encriptar programa pic
Publicado por: josemyzm en 09 de Mayo de 2004, 00:59:00
Pues las verdad que veo un punto negro en eso de no poder actualizar el programa del PIC internamente si activas el "CP", pero tampoco hay mucho problema en grabarlo de nuevo.

x elena2000: Me ha gustado eso de  "Hola Pegatina,.... digo Adhesivo!" je je, la verdad me puse ese nick cuando entré aquí y me registré, por la cosa del curro y tener un nick/clave facil de recordar.   Saludos desde Logroño.

x todos: Un saludo, José Miguel.
Título: RE: Encriptar programa pic
Publicado por: pikman en 09 de Mayo de 2004, 09:57:00
Hola, bueno es que a veces ni yo entiendo lo que escribo......., veamos no es posible actualizar el codigo en un PIC protegido con CP, en lo que refiere a usar un bootloader, o cuando en muchas oprotunidades se cambia solo el valor de una posicion deteminada de memoria o simpremente cuando tu programa es corto y para ahorrar tiempo grabas nada mas que las posiciones que ocupa el programa, tambien hay muchos que usan la memoria de programa para guardar variables o simplemente se fabrica un producto de multimples aplicaciones y segun la aplicacion el micro hace cambios en su propio programa, por eejmplo agrega o quita una subrutina, para este caso y el del bootloader es posible proteger por ejempo el 50% de la memoria de programa, entonces se utiliza esta parte que queda sin proteger para cambios o variables, de esta manera quien lea el micro y  pretenda copiar un producto debera hacer la otra mitad del codigo que esta oculta para poder hacerlo cosa que sera mas complicado que hacer de nuevo el total del codigo, con el uso de bootloader se hace mas complicado el asunto pues generalmente el booloader graba de nuevo todo el micro, pero bueno de alguna manera uno puede ocultar una parte del programa que sea fija, esta facilidad es muy interesante, espero que se entienda,

un saludo

Ariel






Título: RE: Encriptar programa pic
Publicado por: Elena2000 en 10 de Mayo de 2004, 02:47:00
Hola hola, pegajoso... (es broma)!

Anda, no me tienes que dar explicaciones sobre el nick que has elegido, está muy requetebien; mira, el mío es menos original... no debía de estar muy inspirada cuando me registré.

Bueno, al tema. Si te parece que es un punto negro el hecho de que no puedas actualizar el programa si lo has grabado con el CP activado, imagínate el punto negro negrísimo que tienen algunos pics, los de la serie "c", que solo se pueden grabar una vez; anda! como para andar haciendo tanteos...
Bueno, suerte, y ya nos contarás, vale?

AH! se me olvidaba: lo que dice Ariel es muy interesante!
Título: RE: Encriptar programa pic
Publicado por: josemyzm en 10 de Mayo de 2004, 06:14:00
Comprendido, no hace falta proteger todo el PIC pudiendose hacer por bancos de memoria, esto me gusta más.

Respecto a las series "C", bueno, cada uno que elija lo que crea más apropiado para su aplicación, y si no se piensa retocar algo que funciona pues perfecto.
Título: RE: Encriptar programa pic
Publicado por: Colores en 28 de Mayo de 2004, 22:19:00
Lo de programas en VB enormes es porque usás el instalador de micro$oft que viene con VB y agrega todas las referencias que encuentra. Esto de puede arreglar editando los archivos (creo que los .vbp) y eliminando las referencias a objetos y otras cosas que se agregan automáticamente y no te sirven porque el programa en realidad no las usa. Otra solución es usar un empaquetador de instalación más eficiente. Yo voy a probar con Inno Setup, que aparte de ser gratis, permite configurar mucho más la instalación, y veré si se reducen un poco más...