Matthew Alt, que firma como wrongbaud, sacó el firmware de un equipo desconocido sin retirar su memoria flash. En lugar de desoldar el chip, grabó con un analizador lógico las lecturas que hace el procesador durante el arranque y reconstruyó la imagen a partir de esa captura. El método quedó explicado en un artículo reciente de su blog, reseñado por Hackaday.

La vía habitual para extraer un firmware es sacar el chip de memoria y ponerlo en un lector. Si solo hay una oportunidad y no se puede arriesgar el equipo, desoldar deja de ser atractivo. Alt intentó primero leer el chip sin sacarlo de la placa, y no funcionó.

Qué se puede leer y qué no

La memoria era una flash de la serie W25Q, un modelo muy común. El método tiene un límite que el propio Alt reconoce. Solo recupera lo que el procesador lee de verdad, que no tiene por qué ser el contenido completo del chip. Para quien hace ingeniería inversa a ciegas, igual es un avance grande.

Detalle de la captura de las lecturas SPI

Antes de decodificar nada, Alt repasa cómo funciona la comunicación SPI. Con la salida del analizador lógico y la hoja de datos de la memoria en la mano, explica cómo interpretar cada una de las señales en juego. Para Hackaday, esa parte sirve como introducción al protocolo aunque al lector no le interese extraer firmware de cajas misteriosas.

¿Cómo se convierte la captura en una imagen?

Con los datos del bus ya capturados, Alt los decodifica con Scapy. Es una herramienta de Python que se usa sobre todo para manipular paquetes de red, pero acá procesa otro tipo de datos. Con algunos ajustes, recorre los archivos de captura del analizador lógico y los convierte en una imagen lista para cargar en binwalk.

La primera imagen tenía un hueco. Traía el cargador de arranque y el kernel de Linux, pero faltaba el sistema de archivos. La razón es que el procesador, antes de cargar esa parte desde el chip, cambia al modo Quad-SPI, más rápido, que suma dos líneas de datos al bus.

Eso obligó a hacer una segunda captura y un procesamiento adicional. Al final, un comando dd de una sola línea une los dos archivos en una sola imagen del firmware.

El trabajo previo de wrongbaud

Alt ya había publicado una hoja de ruta general para hackear hardware y análisis de técnicas puntuales como la inyección de fallas por glitching. Hackaday recomienda ese material a quien se encuentre por primera vez con su trabajo.