Autor Tema: Proteger código Arduino. Evitar copiar programa.  (Leído 26878 veces)

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

Desconectado dr cerebro

  • PIC10
  • *
  • Mensajes: 42
    • Solo para la Gloria de Dios
Proteger código Arduino. Evitar copiar programa.
« en: 12 de Julio de 2015, 02:37:05 »
Hola a todos.

Deseo evitar que me puedan clonar los circuitos que creo. Pero en el ide de Arduino no hay forma de cambiar los fuses de los microcontroladores. Vi algunos ide para avrdude pero están des-actualizados y no funcionan correctamente, aunque sirven algo para generar la linea de comando para el avrdude. Aun así no he podido proteger el microcontrolador.

En avrdude.conf, entre las lineas 8009 a la 8206, encontré el bloque de configuración para el Atmega328. en dicho bloque hay una sección llamada memory "lock"

Código: [Seleccionar]
    memory "lock"
size = 1;
min_write_delay = 4500;
max_write_delay = 4500;
read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
       "x x x x x x x x x x o o o o o o";

write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
      "x x x x x x x x 1 1 i i i i i i";
    ;

Supongo que al editarlo podría proteger el programa grabado en el micro. Se que hay que cambiar el Lb1 '1' y el Lb2 a '1' Pero no se que debo cambiar en dicho bloque para proteger el programa.

Una idea diferente que se me ocurre es:

  • Desarrollar el programa en arduino.
  • Grabarlo en el micro con arduino.
  • Leer el programa con otro programador.
  • Con un programa que permita activar los fuses lb1 y lb2 grabar de nuevo el programa en los micros que serán distribuidos.

Otra idea es editar el código del ide de arduino. ¿Donde podre encontrar el código fuente del ide?
Aunque preferiría poder hacerlo directamente desde el Ide de arduino.

Por ahora es lo único.

Saludos.
Inicio:
    Lcdcmdout LcdLine1Clear
    WaitMs 1000
    Lcdout "Hogar, dulce hogar."
    WaitMs 1000
goto inicio

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re: Proteger código Arduino. Evitar copiar programa.
« Respuesta #1 en: 12 de Julio de 2015, 06:49:45 »
Bueno, para empezar, si tu intencion es hacer un producto comercial, deberías olvidarte de arduino,  arduinoó no esta pensado para eso. Nunca he usado arduino, y no se si se puede proteger el código desde el ide, pero debes quitarte la idea de modificar el ide por mucho código a abierto que sea, un ide son millones de lineas escritas por muchos desarrolladores, y modificar eso no esta al alcance de todos, aunque fueras un programador expertó con años de experiencia te costaría mucho hacerlo.

Yo te recomiendo que uses una placa customizada con un atmel (el mismo que lleve el arduinó) asi creo que podrás usar muchas de las herramientas de arduino, pero la recomendación es que lo programes con el ide de atmel, así tendrás control total sobre el micro y podrás proteger tu código y hacer muchas cosas y profesionales.

Si aun así quieres usar la placa arduino, ok, pero usa el ide de atmel y no tendrás estos problemas.
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado dr cerebro

  • PIC10
  • *
  • Mensajes: 42
    • Solo para la Gloria de Dios
Re: Proteger código Arduino. Evitar copiar programa.
« Respuesta #2 en: 13 de Julio de 2015, 00:23:34 »
Bueno, para empezar, si tu intencion es hacer un producto comercial, deberías olvidarte de arduino,  arduinoó no esta pensado para eso. Nunca he usado arduino, y no se si se puede proteger el código desde el ide, pero debes quitarte la idea de modificar el ide por mucho código a abierto que sea, un ide son millones de lineas escritas por muchos desarrolladores, y modificar eso no esta al alcance de todos, aunque fueras un programador expertó con años de experiencia te costaría mucho hacerlo.

Yo te recomiendo que uses una placa customizada con un atmel (el mismo que lleve el arduinó) asi creo que podrás usar muchas de las herramientas de arduino, pero la recomendación es que lo programes con el ide de atmel, así tendrás control total sobre el micro y podrás proteger tu código y hacer muchas cosas y profesionales.

Si aun así quieres usar la placa arduino, ok, pero usa el ide de atmel y no tendrás estos problemas.

Hola.

Al mirar en el foro oficial de arduino hay varios hilos en los que se trata lo mismo que he preguntado aquí y en ninguno dice que este mal hacer lo que intento. En dicho foro y en otras paginas aparece lo siguiente.

* if you have made your circuit as a derivative of the Arduino board you must release the design files with a CC-BY-SA license like the original cad files
* If you build your circuit as a shield that plugs on top of an Arduino board all the circuit is yours and you don't have to release anything
* The programs written on Arduino are yours. if you have modified the core files or one of the libraries you must make your modifications available to everybody
* You can call your product in any way you like as long as you don't call it Arduino
* If in the documentation for your product you want to write "Powered By Arduino" that would be appreciated :)
* There is no revenue sharing for any derivative work (unless it uses the Arduino name see


Lo encontré en http://www.arduino.cc/en/Main/Policy

Mi ingles es malo, pero en la segunda linea entiendo algo así:

Citar
Si usted construye su circuito (como un escudo) que se conecta en la parte superior de una placa Arduino todo el circuito es suyo y usted no tiene que liberar nada.

Yo cree un Pcb que se conecta una board arduino. Por lo que creo se justa a la definicion de la segunda linea. Entiendo que mi código es mio. y estoy en mi derecho de no hacerlo publico. No siempre lo hago, pero a veces es necesario.

¿Estoy entendiendo mal las condiciones?

Saludos cordiales.
Inicio:
    Lcdcmdout LcdLine1Clear
    WaitMs 1000
    Lcdout "Hogar, dulce hogar."
    WaitMs 1000
goto inicio

Desconectado dr cerebro

  • PIC10
  • *
  • Mensajes: 42
    • Solo para la Gloria de Dios
Re: Proteger código Arduino. Evitar copiar programa.
« Respuesta #3 en: 13 de Julio de 2015, 02:16:30 »
Bueno, para empezar, si tu intencion es hacer un producto comercial, deberías olvidarte de arduino,  arduinoó no esta pensado para eso. Nunca he usado arduino, y no se si se puede proteger el código desde el ide, pero debes quitarte la idea de modificar el ide por mucho código a abierto que sea, un ide son millones de lineas escritas por muchos desarrolladores, y modificar eso no esta al alcance de todos, aunque fueras un programador expertó con años de experiencia te costaría mucho hacerlo.

Yo te recomiendo que uses una placa customizada con un atmel (el mismo que lleve el arduinó) asi creo que podrás usar muchas de las herramientas de arduino, pero la recomendación es que lo programes con el ide de atmel, así tendrás control total sobre el micro y podrás proteger tu código y hacer muchas cosas y profesionales.

Si aun así quieres usar la placa arduino, ok, pero usa el ide de atmel y no tendrás estos problemas.

Hola.

En https://www.arduino.cc/en/pmwiki.php?n=Main/FAQ encontré la pregunta "Can I build a commercial product based on Arduino?" La respuesta es "Physically embedding an Arduino board inside a commercial product does not require you to disclose or open-source any information about its design." Mas o menos en español dice "Incrustar físicamente una placa Arduino en un producto comercial no requiere revelar o de código abierto alguna información acerca de su diseño."

También en el foro oficial de arduino hay varios temas en los que se explica como proteger nuestros desarrollos de la clonacion.

Por ejemplo este "How to protect my program in ATmega328?": http://forum.arduino.cc/index.php?topic=93907.0

Saludos.





Inicio:
    Lcdcmdout LcdLine1Clear
    WaitMs 1000
    Lcdout "Hogar, dulce hogar."
    WaitMs 1000
goto inicio

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Proteger código Arduino. Evitar copiar programa.
« Respuesta #4 en: 13 de Julio de 2015, 04:41:51 »
Creo que entendiste mal a juaperser. Y creo que el tambien  te entendio mal por como lo explicaste en el primer post.

Vos dijiste hacer algo comercial con arduino, el cual es una placa que tenes que comprar, con todos los costos por tener muchas cosas que para el producto que estas haciendo, tal ves no lo necesites, por lo cual se reducirira el coste mucho si simplemente compras el micro, lo programas, ademas de la libertad de poner donde quieras los conectores. Aca se entiende como que tu fin comercial por ejemplo, pensas realizar un PCB que maneje un elevador incluya: Una base arduino + shield. Eso es lo que yo tambien entendi de tu primer post

Por lo que vos decis ahora, es que queres hacer solo un shield para arduino (Esto no incluye la base y la programacion de la base, solo el shield). Y comerciarlizar el shield y no todo el conjunto, con lo que nos lleva a estas 3 lineas:

Citar
* if you have made your circuit as a derivative of the Arduino board you must release the design files with a CC-BY-SA license like the original cad files
* If you build your circuit as a shield that plugs on top of an Arduino board all the circuit is yours and you don't have to release anything
* The programs written on Arduino are yours. if you have modified the core files or one of the libraries you must make your modifications available to everybody

La primera parece indicar que si hiciste tu circuito como un "derivado de la placa de arduino" ( imagino que se debe referir a que si copiaste o usas la placa base + algunos componentes extras ), tenes que liberar los archivos de placa, solo el ruteado, nada de programa ni nada por el estilo.

La segunda indica que si haces un shield, es tu casi, no tenes obligacion de liberar NADA de la misma, es decir si tiene codigo o el ruteado de los componentes no es necesario tenerlo como "open source"

La tercera indica claramente que cualquier programa que escribas en Arduino es tuyo, lo unico que si te obliga liberar codigo es si modificas algun archivo/libreria propias de arduino, basicamente estas haciendo "publico" que modificaste de las mismas, pero tu codigo no.

---------------------

Lo que me causa un poco de confusion es lo siguiente.
Vos estas tratando de bloquear la lectura a la placa "base" de Arduino, y creas un shield. Pero pienso que una cosa es comercializar UNICAMENTE el shield, y otra es comercializar ambas, que puede ser tomado como un "derivado" (segun como se piense) de la placa base. Al igual el codigo no tenes ninguna obligacion de liberarlo y solo el ruteado de lo que agregues.

Desconectado dr cerebro

  • PIC10
  • *
  • Mensajes: 42
    • Solo para la Gloria de Dios
Re: Proteger código Arduino. Evitar copiar programa.
« Respuesta #5 en: 13 de Julio de 2015, 21:24:00 »
Creo que entendiste mal a juaperser. Y creo que el tambien  te entendio mal por como lo explicaste en el primer post.

Vos dijiste hacer algo comercial con arduino, el cual es una placa que tenes que comprar, con todos los costos por tener muchas cosas que para el producto que estas haciendo, tal ves no lo necesites, por lo cual se reducirira el coste mucho si simplemente compras el micro, lo programas, ademas de la libertad de poner donde quieras los conectores. Aca se entiende como que tu fin comercial por ejemplo, pensas realizar un PCB que maneje un elevador incluya: Una base arduino + shield. Eso es lo que yo tambien entendi de tu primer post

Por lo que vos decis ahora, es que queres hacer solo un shield para arduino (Esto no incluye la base y la programacion de la base, solo el shield). Y comerciarlizar el shield y no todo el conjunto, con lo que nos lleva a estas 3 lineas:

Citar
* if you have made your circuit as a derivative of the Arduino board you must release the design files with a CC-BY-SA license like the original cad files
* If you build your circuit as a shield that plugs on top of an Arduino board all the circuit is yours and you don't have to release anything
* The programs written on Arduino are yours. if you have modified the core files or one of the libraries you must make your modifications available to everybody

La primera parece indicar que si hiciste tu circuito como un "derivado de la placa de arduino" ( imagino que se debe referir a que si copiaste o usas la placa base + algunos componentes extras ), tenes que liberar los archivos de placa, solo el ruteado, nada de programa ni nada por el estilo.

La segunda indica que si haces un shield, es tu casi, no tenes obligacion de liberar NADA de la misma, es decir si tiene codigo o el ruteado de los componentes no es necesario tenerlo como "open source"

La tercera indica claramente que cualquier programa que escribas en Arduino es tuyo, lo unico que si te obliga liberar codigo es si modificas algun archivo/libreria propias de arduino, basicamente estas haciendo "publico" que modificaste de las mismas, pero tu codigo no.

---------------------

Lo que me causa un poco de confusion es lo siguiente.
Vos estas tratando de bloquear la lectura a la placa "base" de Arduino, y creas un shield. Pero pienso que una cosa es comercializar UNICAMENTE el shield, y otra es comercializar ambas, que puede ser tomado como un "derivado" (segun como se piense) de la placa base. Al igual el codigo no tenes ninguna obligacion de liberarlo y solo el ruteado de lo que agregues.

Hola.

Es probable que no haya entendido a juaperser. También es probable que yo no haya explicado bien el problema.

Para poner un poco en contexto mi predicamento. Hace un tiempo a un cliente le desarrolle unos dispositivos (timers) "industriales". Un tiempo después volví a su empresa y note que tenia muchos timer, muy parecidos a los que yo le suministre. Hablando con un empleado, el me comento que lo que el sabia (no lo sostendría ante un juzgado) es que duplicaron el dispositivo y copiaron el programa de los Atmegas a los nuevos timers, que incluso los esta comercializando. No quiero que me pase de nuevo, ya que el señor es a todas luces, poco honesto.  Pero me ha hecho un buen pedido. Podría rechazarle le plano el negocio. Pero seria una perdida económica muy significativa. Yo se que si le gusta nuevos prototipos, y los protejo, no tendrá mas que continuar comprándome los equipos, porque no podría duplicar el software.

Adelantándome un poco a sus comentarios, demostrar que los primeros timers los desarrolle yo es muy difícil porque no tengo forma de probar que yo los desarrolle. El le hizo ingeniería inversa, registro los esquematicos, descargo los .hex, de los microcontroladores, los desensambló a Asembler y registro el software. La pelea legal seria de muchos años muy costosa. El tiene los recursos, los abogados y las pruebas. No tengo el dinero, los abogados, ni el tiempo para enfrentar una agotador proceso jurídico que aquí puede tomar muchos años.

Estos nuevos timers son mas complejos, con mas funciones, etc. esta vez no cometeré el mismo error, los registrare, etc. Pero si no protejo la memoria los clonara. Registrarlos, no lo disuadirá de clonarlos. Y emprender un pleito por piratería, aunque yo tenga todo registrado, es económicamente imposible para mi, y menos en un sistema corrupto como el que hay aquí, en donde el que tiene el dinero es el que casi siempre gana.

Se podría que decir que la mayoría de mis pequeños desarrollos son shields. Crea uno un circuito, una "shield". Es un montón de circuitos, transistores, optoacopladores, relays, etc, se montan en una pcb y se conecta por un cable plano(un bus) a una placa de arduino. Todo dentro de una caja plástica o metálica adicionada a una maquina. La board arduino no ha sido modificada físicamente en absoluto. Yo entiendo que esa descripción se ajusta a la condición impuesta en el texto "If you build your circuit as a shield that plugs on top of an Arduino board all the circuit is yours and you don't have to release anything." Por lo que no estoy obligado a liberar nada. No me molesta liberar el esquemático del circuito. No es la gran cosa. Soy un aficionado a la electrónica. Solo, no deseo que este señor pueda copia el .hex o el binario del programa a otros dispositivos clonados.

Agradezco de antemano la comprensión de uds a este predicamento, y su ayuda.


Saludos amigos.
Inicio:
    Lcdcmdout LcdLine1Clear
    WaitMs 1000
    Lcdout "Hogar, dulce hogar."
    WaitMs 1000
goto inicio

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Proteger código Arduino. Evitar copiar programa.
« Respuesta #6 en: 13 de Julio de 2015, 23:22:34 »
.

En primer lugar deberías de saber que no hay manera alguna de proteger un microcontrolador del clonado por un ataque al hardware, que es lo que se suele hacer con la mayoría de productos comerciales. Puedes probar a usar micros que incorporen motor de encriptación por hardware, pero he visto igualmente como los chinos han clonado el chip sin el menor esfuerzo.

En cuanto a protección por software, la solución pasa por usar un bootloader encriptado.

Da igual que uses Arduino o cualquier otra cosa, si activas el fuse de protección de lectura y usas un bootloader encriptado, te proteges de los ataques menores, los que puede intentar cualquier aficionado en su casa, pero nada más.

Si tu producto despierta interés te lo clonarán, hagas lo que hagas.


Desconectado dr cerebro

  • PIC10
  • *
  • Mensajes: 42
    • Solo para la Gloria de Dios
Re: Proteger código Arduino. Evitar copiar programa.
« Respuesta #7 en: 14 de Julio de 2015, 01:59:03 »
.

En primer lugar deberías de saber que no hay manera alguna de proteger un microcontrolador del clonado por un ataque al hardware, que es lo que se suele hacer con la mayoría de productos comerciales. Puedes probar a usar micros que incorporen motor de encriptación por hardware, pero he visto igualmente como los chinos han clonado el chip sin el menor esfuerzo.

En cuanto a protección por software, la solución pasa por usar un bootloader encriptado.

Da igual que uses Arduino o cualquier otra cosa, si activas el fuse de protección de lectura y usas un bootloader encriptado, te proteges de los ataques menores, los que puede intentar cualquier aficionado en su casa, pero nada más.

Si tu producto despierta interés te lo clonarán, hagas lo que hagas.



Hola.

He creado este tema, no solo por el problema que no solo se me presenta a mi, sino a muchos otros. Ademas tengo entendido, que con activar los fuses adecuados, al leer el pic se obtiene un archivo .hex igual a si el microcontrolador estuviera en blanco o virgen, como si nunca hubiera sido programado. Lo cual imposibilita a la mayoría de delincuentes la clonación. Por lo menos por el método de descargar el hex y cargarlo en otros microcontroladores.

Supongo que hay hackers o empresas que por un buen dinero pueden recuperar el programa. Claro que si uno busca una solución mejor habría que encriptar el bootloader, emplear microcontroladores de mayor costo o de otras marcas con algún sistema de de seguridad que ofrezca un alto nivel de seguridad contra copia del programa cargado.

De paso me gustaria (si alguien conoce) saber si hay microcontroladores resistentes a ataques para intentar copiar su memoria, preferible si son compatibles con arduino. aunque sean mas costosos.

Por ahora creo que mis diseños no despiertan tanto interés como para que alguien este dispuesto a pagar un buen dinero para recuperar un programa escrito por mi.

El método de los fuses, en este momento posiblemente, es el mas adecuado para mi y para la mayoría de los que requerimos proteger nuestras pequeñas creaciones de los amigos de lo ajeno.

Muchas gracias por su respuesta.

Si alguien me puede ayudar, se lo agradecería enormemente.


Saludos
Inicio:
    Lcdcmdout LcdLine1Clear
    WaitMs 1000
    Lcdout "Hogar, dulce hogar."
    WaitMs 1000
goto inicio

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Proteger código Arduino. Evitar copiar programa.
« Respuesta #8 en: 14 de Julio de 2015, 02:48:21 »
Citar
He creado este tema, no solo por el problema que no solo se me presenta a mi, sino a muchos otros. Ademas tengo entendido, que con activar los fuses adecuados, al leer el pic se obtiene un archivo .hex igual a si el microcontrolador estuviera en blanco o virgen, como si nunca hubiera sido programado. Lo cual imposibilita a la mayoría de delincuentes la clonación. Por lo menos por el método de descargar el hex y cargarlo en otros microcontroladores.

Es una protección muy básica, que no te protege en absoluto de ataques al hardware, pero bueno, impides que los colegiales lean y copien tu placa.

Citar
Supongo que hay hackers o empresas que por un buen dinero pueden recuperar el programa.

Por 200 dólares, te abren cualquier PIC, precisamente los PIC son los más baratos de clonar por hardware, más caros son los ARM, y más complicado y caro son los que llevan motores de encriptación por hardware.

Citar
Claro que si uno busca una solución mejor habría que encriptar el bootloader, emplear microcontroladores de mayor costo o de otras marcas con algún sistema de de seguridad que ofrezca un alto nivel de seguridad contra copia del programa cargado.

Los fabricantes tratan de hacer lo que pueden para ocultar los fuses de un ataque al hardware, pero tarde o temprano caen.

Citar
De paso me gustaria (si alguien conoce) saber si hay microcontroladores resistentes a ataques para intentar copiar su memoria, preferible si son compatibles con arduino. aunque sean mas costosos.

Mira los ARM con motor de encriptación por hardware, yo no los he usado nunca, pero son más seguros. A mi hace tiempo un experto en hackear micros por hardware, me recomendó usar los ARM, para ellos los PIC son los micros más vulnerables y fáciles de copiar que existen.

Como curiosidad, uno de estos chinos que se dedica a clonar productos americanos y europeos, tras romper el micro original por hardware, lo clonó usando micros de MAXIM, que incluyen sistemas de seguridad bastante avanzados para evitar los ataques por hardware, mira a ver que te ofrecen, a simple vista se ven bastante sofisticados en medidas de seguridad.

http://www.maximintegrated.com/en/products/digital/embedded-security/secure-microcontrollers.html

Citar
Por ahora creo que mis diseños no despiertan tanto interés como para que alguien este dispuesto a pagar un buen dinero para recuperar un programa escrito por mi.

Ya te digo que no hace falta pagar mucho para que te abran un PIC o un Atmel, por 200 dólares te lo liquidan en unos días.

« Última modificación: 14 de Julio de 2015, 02:53:37 por planeta9999 »

Desconectado dr cerebro

  • PIC10
  • *
  • Mensajes: 42
    • Solo para la Gloria de Dios
Re: Proteger código Arduino. Evitar copiar programa.
« Respuesta #9 en: 14 de Julio de 2015, 03:52:33 »
Citar
He creado este tema, no solo por el problema que no solo se me presenta a mi, sino a muchos otros. Ademas tengo entendido, que con activar los fuses adecuados, al leer el pic se obtiene un archivo .hex igual a si el microcontrolador estuviera en blanco o virgen, como si nunca hubiera sido programado. Lo cual imposibilita a la mayoría de delincuentes la clonación. Por lo menos por el método de descargar el hex y cargarlo en otros microcontroladores.

Es una protección muy básica, que no te protege en absoluto de ataques al hardware, pero bueno, impides que los colegiales lean y copien tu placa.

Citar
Supongo que hay hackers o empresas que por un buen dinero pueden recuperar el programa.

Por 200 dólares, te abren cualquier PIC, precisamente los PIC son los más baratos de clonar por hardware, más caros son los ARM, y más complicado y caro son los que llevan motores de encriptación por hardware.

Citar
Claro que si uno busca una solución mejor habría que encriptar el bootloader, emplear microcontroladores de mayor costo o de otras marcas con algún sistema de de seguridad que ofrezca un alto nivel de seguridad contra copia del programa cargado.

Los fabricantes tratan de hacer lo que pueden para ocultar los fuses de un ataque al hardware, pero tarde o temprano caen.

Citar
De paso me gustaria (si alguien conoce) saber si hay microcontroladores resistentes a ataques para intentar copiar su memoria, preferible si son compatibles con arduino. aunque sean mas costosos.

Mira los ARM con motor de encriptación por hardware, yo no los he usado nunca, pero son más seguros. A mi hace tiempo un experto en hackear micros por hardware, me recomendó usar los ARM, para ellos los PIC son los micros más vulnerables y fáciles de copiar que existen.

Como curiosidad, uno de estos chinos que se dedica a clonar productos americanos y europeos, tras romper el micro original por hardware, lo clonó usando micros de MAXIM, que incluyen sistemas de seguridad bastante avanzados para evitar los ataques por hardware, mira a ver que te ofrecen, a simple vista se ven bastante sofisticados en medidas de seguridad.

http://www.maximintegrated.com/en/products/digital/embedded-security/secure-microcontrollers.html

Citar
Por ahora creo que mis diseños no despiertan tanto interés como para que alguien este dispuesto a pagar un buen dinero para recuperar un programa escrito por mi.

Ya te digo que no hace falta pagar mucho para que te abran un PIC o un Atmel, por 200 dólares te lo liquidan en unos días.



Hola.

Ud tiene razón en todo lo que dice.

Claro que como mis programas no son nada del otro mundo, creo que por ahora no necesito mas seguridad que unos fuses.

Tratare de tener en cuenta todo lo que me ha dicho.

Muchas gracias por sus valiosos comentarios.

Aprovecho para comentar que parece que lo he logrado. Me toco escribir un sencillo programa. el programa es necesario porque a veces la linea de comando es muy larga y el sistema operativo dice "Comando muy largo" y aborta la operación. si ejecuto el comando desde una aplicación, no me da error.

Era tan simple como agregar "-Ulock :w:03c:h" al final del comando que se le envía a avrdude.exe

¿Como lo probé? Bueno cargue un programa desde el ide de arduino al microcontrolador. Luego desde el programa que he mencionado ejecute el mismo comando enviado por el ide de arduino a avrdude, pero cambiando la ruta del archivo .hex por un programa distinto y agregando al final "-Ulock :w:03c:h" Avrdude muestra en pantalla el avance en el proceso, pero al tratar de verificar el archivo enviado con el que recibe del microcontrolador, la comprobación falla. El microcontrolador se reinicia y ejecuta el programa nuevo correctamente, Lo que aparentemente muestra que el microchip no entregara el programa y que avrdude no es capaz de extraerlo del microcontrolador. Para leer el pic tocaría apelar a medios mas sofisticados.

Tengo que hacer mas pruebas para verificar que todo es tal cual lo he narrado.

Adjunto un par de capturas donde en el mismo proceso se aprecia que el archivo fue cargado en el microcontrolador y que al verificarlo el archivo en el disco duro contra el devuelto por el micro, no coinciden y la verificación falla.

Carga del programa:

https://www.dropbox.com/s/862ra5xtpu21jwf/Captura%20de%20pantalla%202015-07-14%2001.24.15.png?dl=0

Verificación:

https://www.dropbox.com/s/s32idaqvgeuko9y/Captura%20de%20pantalla%202015-07-14%2001.25.29.png?dl=0

En la captura se puede ver que dice:

Código: [Seleccionar]
avrdude.exe: verifing...
avrdude.exe: verification error. first mimatch at byte 0x0000
                   0x00 != 0xff
avrdude.exe: verification error; content mismatch


Saludos.
Inicio:
    Lcdcmdout LcdLine1Clear
    WaitMs 1000
    Lcdout "Hogar, dulce hogar."
    WaitMs 1000
goto inicio

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re: Proteger código Arduino. Evitar copiar programa.
« Respuesta #10 en: 14 de Julio de 2015, 05:31:18 »
Hola Dr cerebro, Timer se los vendiste ya fabricados o le vendiste el proyecto? Te lo digo, porque cuando vendes el proyecto el comprador pasa a tener todos los derechos sobre el.

Por otra parte, si el timer que ha copiado, es parecido pero no igual, y tu no tienes registro o patente alguna, mucho me temo que es lo que tu dices,  no puedes hacer nada legal por arreglarlo.

 Por otra parte los micros que conozco que poseen mayor protección de encriptado y métodos anticopia son los ARM de freescale.

También puede usar muchos truquitos tontos para intentar que no te lo copien como por ejemplo, usar micros con pines por debajo para dificultar el acceso a ellos, borrar la serigrafía de los componentes para que no los identifiquen, no colocar pines de programación, deberás programarlo fuera de la placa y luego soldarlo, pegar la caja con pegamento para que se rompa si se abre, etc etc. Estos trucos sin duda son para dificultar, no para impedir. Pero si el desgraciado ladron ese, es un flojo como para ponerse a arreglar todos estos problemitas vendrán bien.

Un saludo
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado dr cerebro

  • PIC10
  • *
  • Mensajes: 42
    • Solo para la Gloria de Dios
Re: Proteger código Arduino. Evitar copiar programa.
« Respuesta #11 en: 14 de Julio de 2015, 16:22:03 »
Hola Dr cerebro, Timer se los vendiste ya fabricados o le vendiste el proyecto? Te lo digo, porque cuando vendes el proyecto el comprador pasa a tener todos los derechos sobre el.

Por otra parte, si el timer que ha copiado, es parecido pero no igual, y tu no tienes registro o patente alguna, mucho me temo que es lo que tu dices,  no puedes hacer nada legal por arreglarlo.

 Por otra parte los micros que conozco que poseen mayor protección de encriptado y métodos anticopia son los ARM de freescale.

También puede usar muchos truquitos tontos para intentar que no te lo copien como por ejemplo, usar micros con pines por debajo para dificultar el acceso a ellos, borrar la serigrafía de los componentes para que no los identifiquen, no colocar pines de programación, deberás programarlo fuera de la placa y luego soldarlo, pegar la caja con pegamento para que se rompa si se abre, etc etc. Estos trucos sin duda son para dificultar, no para impedir. Pero si el desgraciado ladron ese, es un flojo como para ponerse a arreglar todos estos problemitas vendrán bien.

Un saludo

Hola.

No, solo le vendí los timers. Exacto, no tengo registro ni patentes.

Vamos a ver si un día pruebo los Arrm. Los voy a tener en cuenta.

Las ideas que me da, las voy a poner en practica.

Muchas gracias por su ayuda.

Saludos.

Inicio:
    Lcdcmdout LcdLine1Clear
    WaitMs 1000
    Lcdout "Hogar, dulce hogar."
    WaitMs 1000
goto inicio

Desconectado cosmic

  • PIC16
  • ***
  • Mensajes: 175
Re: Proteger código Arduino. Evitar copiar programa.
« Respuesta #12 en: 29 de Julio de 2015, 13:40:24 »
Hola amigos. :-/
Como van con esto de proteger el código arduino.
Al fin se puede? ((:-))

Desconectado Robocardo

  • PIC10
  • *
  • Mensajes: 45
Re: Proteger código Arduino. Evitar copiar programa.
« Respuesta #13 en: 25 de Septiembre de 2015, 10:44:05 »
El Arduino UNO no deja de ser un ATMEGA328P con un bootloader.
Claro que puedes cambiar los fusibles.
Yo no lo he hecho, pero si usas ATMEL STUDIO tienes mas flexibilidad (aunque tmb se debería poder hacer manualmente con el IDE).

1er alternativa simple es que grabes algo especial en la EEPROM, una clave o SerialNumber o Número de Partida si quieres. El IDE no graba la EEPROM y como no lo sabrá porque le darás un .hex no podrá hacerlo funcionar.

2da alternativa. Usar algun chip MAXIM 1-WIRE que tienen su MAC address.
3ra alternativa si usas RTC que grabes algo en la NVRAM del RTC.

De todas la 2da es la que mas me gusta a mi. Arranco, consulto la MAC y sigo.. y de tanto en tanto si el proceso lo permite chequeo la presencia de ese chip 1 WIRE.

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re:Proteger código Arduino. Evitar copiar programa.
« Respuesta #14 en: 18 de Diciembre de 2015, 16:38:09 »
Os cuento lo que acabo de hacer para este tema, que yo tambien estaba tratando de resolver; en el IDE de Arduino se puede poner una opción en la que al compilar, en la última línea de la ventanita de mensajes, aparece la ruta del .hex; cogemos este archivo y lo cargamos en un ATMega328P (tal cual viene de fabrica, con sus fuses por defecto) con un programador (en mi caso un GTP-USB); y después, le cargamos estos fuses:


* ok__18-12-2015 19-54-06.gif
(23.63 kB, 664x577 - visto 18664 veces)


Y ya está  :-)

todo esto haciendo una plaquita de aplicación con el micro, el cristal de 16MHz y los condensadores de 22pF y los de 100nF de la alimentación; si lo que quieres es usar la placa de desarrollo de Arduino para aprovechar el Bootloader, supongo que con reprogramar los fuses de LockBits y dejando el resto tal cual los programa Arduino, funcione igual.

Saludos!!!

PD: Estos son los fuses por defecto de Arduino UNO:


* fuses_ard_uno.gif
(24.2 kB, 664x577 - visto 18297 veces)
« Última modificación: 18 de Diciembre de 2015, 16:41:21 por micro_pepe »
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡