¿Es posible extraer código de una placa arduino?


14

¿Hay alguna manera de exportar código para un arduino incluso como un archivo hexadecimal?


2
Sí, usando avrdude desde la línea de comando, a menos que se haya configurado el fusible de seguridad. Incluso podría ser posible entonces, pero intencionalmente mucho más difícil, y no está claro si alguien ha derrotado ese mecanismo de seguridad.
Chris Stratton

@ChrisStratton Estaba escuchando una charla de defcon donde hablaban sobre cómo había sido derrotada. No recuerdo cuál era, pero Google podría recordarlo.
Hair_of_the_Dog

Ha sido derrotado para algunos microcontroladores, y no (al menos para conocimiento público, salvo la disección física) aún para otros.
Chris Stratton

Sí, estoy bastante seguro de que fue disecado.
Hair_of_the_Dog

Respuestas:


7

Al leer el código fuente de los cargadores de arranque Arduino en https://github.com/arduino/Arduino/tree/master/hardware/arduino/bootloaders , parece que de hecho admiten la funcionalidad de lectura de stk500 para memoria flash, de modo que usted pueda cumpla su objetivo con un programa cliente como avrdude.

Entonces, la respuesta a la pregunta es que si puede acceder al gestor de arranque, entonces sí puede leer el contenido de la memoria flash en formato binario o hexadecimal, sin recurrir a un programador externo.

Si no puede acceder al gestor de arranque (problemas de reinicio, o no hay un gestor de arranque intacto), entonces puede hacerlo con un programador externo, siempre que la configuración del fusible de seguridad no lo impida.


1
Resulta que no solo se admite la lectura, sino que elavrdude comportamiento de verificación predeterminado depende de ello, ya que funciona al leer un búfer y realizar una comparación en la PC. Entonces, esencialmente, cualquiera que haya subido código a un Arduino basado en ATmega al permitir que el IDE invoque avrdudecon la configuración predeterminada, también ha leído implícitamente uno.
Chris Stratton

5

Sí, he extraído con éxito el núcleo de arranque de una placa Arduino a través de ISCP y lo he insertado en otra. No se pusieron los fusibles de seguridad. donde funcionará avrdude. En aquel entonces usaba AVR Studio con un STK500 ya que tenía una GUI y no necesitaba aprender todos los interruptores de avrdude. Cualquiera de los dos funcionará.

Configurar el fusible derrota el código abierto. Dicho esto, el núcleo de arranque se proporciona en el IDE. .. \ Arduino \ hardware \ arduino \ bootloaders \ atmega8 \ ATmegaBOOT.hex junto con otros chips variantes.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.