
Exportado automáticamente desde code.google.com/p/firmware-mod-kit
Exportado automáticamente desde code.google.com/p/firmware-mod-kit
Kit de Modificación de Firmware
Este kit es una colección de scripts y utilidades para extraer y reconstruir imágenes de firmware basadas en Linux.
Extraer una imagen de firmware en sus partes componentes
El usuario realiza la modificación deseada al sistema de archivos del firmware o a la interfaz web (webif)
Reconstruir el firmware
Flashear el firmware modificado en el dispositivo y brickearlo (ja)
ADVERTENCIA: Vas a brickear tu dispositivo al usar este kit (quizás no, pero mejor decir que lo harás). Brickear significa convertir efectivamente en un 'ladrillo' no funcional. La recuperación a veces es posible sin modificaciones de hardware. A veces requiere modificaciones de hardware (por ejemplo, cabezales seriales o JTAG soldados a la PCB). A veces simplemente no es factible, o costaría más en costo total de recuperación de lo que vale la unidad.
NO uses este kit si no estás preparado para que tu router se brickee!
EULA: Al descargar o usar este kit, aceptas asumir la responsabilidad por las consecuencias del uso o mal uso del Kit de Modificación de Firmware. Estas incluyen el bricking de tu dispositivo. Los autores de este kit te han advertido debidamente. Este kit es solo para ingenieros de software de sistemas embebidos.
El Kit de Modificación de Firmware permite la deconstrucción y reconstrucción sencilla de imágenes de firmware para varios dispositivos embebidos. Aunque se enfoca principalmente en routers basados en Linux, debería ser compatible con la mayoría de los firmwares que utilizan formatos y sistemas de archivos comunes como TRX/uImage y SquashFS/CramFS.
Para usar el Kit de Modificación de Firmware, debes tener un cliente de subversion, herramientas de desarrollo estándar de Linux (gcc, make, etc.), el módulo python-magic, y los paquetes de desarrollo zlib y lzma. Si estás ejecutando una distribución de Linux que usa apt-get, por ejemplo Ubuntu o Debian, usa:
Para Ubuntu 18.04 y anteriores:
sudo apt-get install git build-essential zlib1g-dev liblzma-dev python-magic autoconf
Para Ubuntu 20.04 y posteriores:
sudo apt-get install git build-essential zlib1g-dev liblzma-dev python3-magic autoconf python-is-python3
Para RedHat:
yum groupinstall "Development Tools"
yum install git zlib1g-dev xz-devel python-magic zlib-devel util-linux
Para Arch Linux:
Hay un paquete AUR en https://aur.archlinux.org/packages/firmware-mod-kit/
Para otras distribuciones, debes instalar los paquetes equivalentes usando el gestor de paquetes de tu distribución.
git clone https://github.com/rampageX/firmware-mod-kit.git
cd firmware-mod-kit/src
make
Binwalk 2.1.1
[Back in firmware-mod-kit directory]
cd src/binwalk-2.1.1
sudo python2 setup.py install
El Kit de Modificación de Firmware es solo compatible con la plataforma Linux. Con algunas pequeñas modificaciones, debería funcionar en otras plataformas POSIX.
Clona el repositorio del Kit de Modificación de Firmware usando Git.
El Kit de Modificación de Firmware es una colección de utilidades y scripts de shell. Las utilidades se pueden usar directamente, o los scripts de shell se pueden usar para automatizar y combinar operaciones comunes de firmware (por ejemplo, extraer y reconstruir). Los scripts principales para facilitar las operaciones de firmware se enumeran a continuación.
Scripts principales:
| Script | Descripción |
|---|---|
| extract-firmware.sh | Script de extracción de firmware |
| build-firmware.sh | Script de reconstrucción de firmware |
Scripts secundarios:
| ddwrt-gui-extract.sh | Extrae archivos de la GUI web del firmware DD-WRT extraído. |
|---|---|
| ddwrt-gui-rebuild.sh | Restaura archivos modificados de la GUI web al firmware DD-WRT extraído. |
El Kit de Modificación de Firmware utiliza un directorio de trabajo 'hard coded' llamado 'fmk'. El script de extracción extrae a esta carpeta, y el script de reconstrucción reconstruye desde esta carpeta. Se permite el uso de directorios de trabajo alternativos para algunas operaciones, pero no todas. Ampliaremos eso en el futuro. Por ahora, si tienes múltiples directorios de trabajo, sugerimos que renombres aquellos en los que no estés operando actualmente.
La extracción automatizada de firmware generalmente funciona con la mayoría de las imágenes de firmware que emplean cabeceras de firmware uImage/TRX y utilizan sistemas de archivos SquashFS o CramFS. Actualmente, extract-firmware.sh es el método preferido de extracción ya que admite más tipos de firmware que el script anterior old-extract.sh. Sin embargo, old-extract.sh todavía está incluido y funciona con muchos formatos de firmware.
El uso tanto de extract-firmware.sh como de build-firmware.sh es sencillo:
./extract-firmware.sh firmware.bin
Por defecto, la salida de extract-firmware.sh se ubicará en el directorio 'fmk', mientras que old-extract.sh colocará los datos extraídos en el directorio de trabajo especificado.
Qué script de construcción usar depende de qué script de extracción se utilizó. Si extrajiste una imagen de firmware con extract-firmware.sh, entonces debes usar build-firmware.sh para reconstruirla. Del mismo modo, si se usó old-extract.sh, entonces se debe invocar old-build.sh al reconstruir una imagen:
./build-firmware.sh [-nopad] [-min]
El nuevo firmware generado por build-firmware.sh se ubicará en 'fmk/new-firmware.bin', mientras que old-build.sh generará imágenes de firmware en varios formatos diferentes y las guardará en el directorio de salida especificado.
El interruptor opcional -nopad le indicará a build-firmware.sh que NO rellene el firmware hasta su tamaño original.
El interruptor opcional -min usará el tamaño máximo de bloque squashfs de 1MB. Esto disminuirá el tamaño de la imagen de firmware a costa de recursos adicionales de CPU y RAM utilizados en el dispositivo de destino. No uses este interruptor a menos que sea necesario. Este es un tamaño de bloque muy grande para sistemas embebidos. El tamaño de bloque squashfs original del firmware se conserva al reconstruir, y se debe usar el tamaño de bloque original a menos que estés seguro de lo que haces. Un tamaño de bloque demasiado grande puede parecer funcionar bien, pero el rendimiento en tiempo de ejecución del firmware puede verse afectado en todas o algunas cargas.
Una característica muy única del Kit de Modificación de Firmware es su capacidad para extraer y reconstruir archivos de la GUI web de DD-WRT. Esto se automatiza mediante los scripts ddwrt-gui-extract.sh y ddwrt-gui-restore.sh.
Una vez que hayas extraído una imagen de firmware DD-WRT usando extract-firmwware.sh, puedes extraer los archivos web ejecutando:
./ddwrt-gui-extract.sh