
Esportato automaticamente da code.google.com/p/firmware-mod-kit
Esportato automaticamente da code.google.com/p/firmware-mod-kit
Kit di modifica del firmware
Questo kit è una raccolta di script e utilità per estrarre e ricostruire immagini firmware basate su Linux.
Estrai un'immagine firmware nelle sue parti componenti
L'utente apporta le modifiche desiderate al filesystem del firmware o all'interfaccia web (webif)
Ricostruisci il firmware
Lampeggia il firmware modificato sul dispositivo e brickalo (ah)
ATTENZIONE: Brickerai il tuo dispositivo usando questo kit (forse no, ma è meglio dire che lo farai). Brick significa trasformarlo efficacemente in un 'mattone' non funzionante. Il recupero è talvolta possibile senza modifiche hardware. A volte richiede modifiche hardware (ad esempio connettori seriali o JTAG saldati sul PCB). A volte non è fattibile, o costerebbe più del valore dell'unità.
Non utilizzare questo kit se non sei preparato a brickare il tuo router!
EULA: Scaricando o utilizzando questo kit, accetti di accettare la responsabilità per le conseguenze dell'uso o dell'abuso del Firmware Mod Kit. Queste includono il brick del tuo dispositivo. Gli autori di questo kit ti hanno debitamente avvertito. Questo kit è solo per ingegneri software di sistemi embedded.
Il Firmware Mod Kit permette la facile decostruzione e ricostruzione di immagini firmware per vari dispositivi embedded. Sebbene sia principalmente mirato a router basati su Linux, dovrebbe essere compatibile con la maggior parte dei firmware che utilizzano formati e filesystem comuni come TRX/uImage e SquashFS/CramFS.
Per utilizzare il Firmware Mod Kit, devi avere un client subversion, strumenti di sviluppo Linux standard (gcc, make, ecc.), il modulo python-magic e i pacchetti di sviluppo zlib e lzma. Se stai usando una distribuzione Linux che usa apt-get, ad esempio Ubuntu o Debian, usa:
For Ubuntu 18.04 and older:
sudo apt-get install git build-essential zlib1g-dev liblzma-dev python-magic autoconf
For Ubuntu 20.04 and newer:
sudo apt-get install git build-essential zlib1g-dev liblzma-dev python3-magic autoconf python-is-python3
Per RedHat:
yum groupinstall "Development Tools"
yum install git zlib1g-dev xz-devel python-magic zlib-devel util-linux
Per Arch Linux:
C'è un pacchetto AUR per https://aur.archlinux.org/packages/firmware-mod-kit/
Per altre distribuzioni, installa i pacchetti equivalenti usando il gestore pacchetti della tua distribuzione.
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
Il Firmware Mod Kit è supportato solo sulla piattaforma Linux. Con alcune piccole modifiche, dovrebbe funzionare su altre piattaforme POSIX.
Clona il repository del Firmware Modification Kit con Git.
Il Firmware Mod Kit è una raccolta di utilità e script shell. Le utilità possono essere utilizzate direttamente, oppure gli script shell possono essere usati per automatizzare e combinare operazioni comuni sul firmware (ad esempio estrazione e ricostruzione). Gli script principali per facilitare le operazioni sul firmware sono elencati di seguito.
Script primari:
| Script | Descrizione |
|---|---|
| extract-firmware.sh | Script di estrazione del firmware |
| build-firmware.sh | Script di ricostruzione del firmware |
Script secondari:
| ddwrt-gui-extract.sh | Estrae i file dell'interfaccia Web dal firmware DD-WRT estratto. |
|---|---|
| ddwrt-gui-rebuild.sh | Ripristina i file modificati dell'interfaccia Web nel firmware DD-WRT estratto. |
Il Firmware Mod Kit utilizza una directory di lavoro 'hard coded' chiamata 'fmk'. Lo script di estrazione estrae in questa cartella e lo script di ricostruzione ricostruisce da questa cartella. Il supporto per directory di lavoro alternative è disponibile per alcune operazioni, ma non per tutte. Amplieremo questa funzionalità in futuro. Per ora, se hai più directory di lavoro, ti suggeriamo di rinominare quelle su cui non stai operando attualmente.
L'estrazione automatica del firmware funziona tipicamente con la maggior parte delle immagini firmware che impiegano header uImage/TRX e utilizzano filesystem SquashFS o CramFS. Attualmente, extract-firmware.sh è il metodo di estrazione preferito poiché supporta più tipi di firmware rispetto al vecchio script old-extract.sh. Tuttavia, old-extract.sh è ancora incluso e funziona con molti formati di firmware.
L'utilizzo sia di extract-firmware.sh che di build-firmware.sh è semplice:
./extract-firmware.sh firmware.bin
Per impostazione predefinita, l'output di extract-firmware.sh si troverà nella directory 'fmk', mentre old-extract.sh inserirà i dati estratti nella directory di lavoro specificata.
Quale script di build utilizzare dipende da quale script di estrazione è stato usato. Se hai estratto un'immagine firmware con extract-firmware.sh, allora devi usare build-firmware.sh per ricostruirla. Allo stesso modo, se è stato usato old-extract.sh, allora old-build.sh deve essere invocato per ricostruire un'immagine:
./build-firmware.sh [-nopad] [-min]
Il nuovo firmware generato da build-firmware.sh si troverà in 'fmk/new-firmware.bin', mentre old-build.sh genererà immagini firmware in diversi formati e le salverà nella directory di output specificata.
Lo switch opzionale -nopad istruirà build-firmware.sh a NON riempire il firmware fino alla sua dimensione originale.
Lo switch opzionale -min utilizza la dimensione massima del blocco squashfs di 1MB. Questo ridurrà la dimensione dell'immagine firmware a scapito di risorse CPU e RAM aggiuntive utilizzate sul dispositivo di destinazione. Non usare questo switch se non necessario. Questa è una dimensione del blocco molto grande per sistemi embedded. La dimensione originale del blocco squashfs del firmware viene preservata durante la ricostruzione e la dimensione del blocco originale dovrebbe essere quella utilizzata a meno che tu non sia sicuro di ciò che stai facendo. Una dimensione del blocco troppo grande può sembrare funzionare bene, ma le prestazioni in fase di esecuzione del firmware potrebbero risentirne in tutti o alcuni carichi.
Una caratteristica molto unica del Firmware Mod Kit è la capacità di estrarre e ricostruire file dall'interfaccia Web DD-WRT. Questo è automatizzato dagli script ddwrt-gui-extract.sh e ddwrt-gui-restore.sh.
Una volta estratto un'immagine firmware DD-WRT usando extract-firmware.sh, puoi estrarre i file Web eseguendo:
./ddwrt-gui-extract.sh
Questo creerà una directory chiamata 'www' ed estrarrà i file Web lì. Puoi modificare i file come preferisci, ma non puoi aggiungere o eliminare file.
Quando hai finito le modifiche, puoi ricostruire i file Web eseguendo:
./ddwrt-gui-rebuild.sh