PDA

View Full Version : [Thread Ufficiale] ambitImageEditor-Tool compressione/decompressione firmware Netgear


Bovirus
13-02-2018, 08:22
- Scopo del thread

Questo thread si occupa esclusivamente del tool ambitImageEditor.


- Che cos'č ambitImageEditor

ambitImageEditor č uno strumento di decompressione/compressione dei firmware Netgear creato da bignerd95 (Thanks!!!)

ambitImageEditor by bignerd95 (Github) (https://github.com/BigNerd95/ambitImageEditor)

Guide all'uso di ambitImageEditor (https://github.com/BigNerd95/ambitImageEditor/blob/master/GUIDE.md)


- Requisiti sistema operativo

Per usare questo tool č necessario avere

- un PC con installato un sistema operativo Unix (installato standalone o virtualizzato cone programmi tipo VMWare)
- Emulatore Linux tipo Cygwin.


- Uso del tool (Linux)

- Attivitā prepratorie

Queste attivitā vanno eseguite solo la prima volta per installare i moduli e le librerie necessarie all'uso del tool.

Eseguire i comandi in neretto con utente con diritti di amministratore.

sudo apt-get install python3-pip - installazione modulo python3-pip

sudo -H pip3 install --upgrade pip - aggiornamento modulo pip3

sudo pip3 install -U crcmod - creazione libreria crcmod
sudo pip3 install -U construct - creazione libreria construct

ambitImageEditor si appoggia per la decompressione/ricomrpessione del firmware al programma binwalk.

binwalk (https://github.com/ReFirmLabs/binwalk)

Consultare la guida di binwalk per le eventuali moduli da installare prima della compilazione di binwalk.

Scaricare l'archivioe compilarlo con i seguenti comandi (in neretto)

git clone https://github.com/ReFirmLabs/binwalk
cd binwalk && sudo python3 setup.py install

verrā creato il programma binwalk.
Per testare binwalk digitare il comando

binwalk

e verrā visualizzato la guida con le opzioni del comando.

- Modulo jefferson

Per estrarre i file JFFS2 serve il modulo jefferson. Per installarlo e compilarlo dare i seguenti comandi in neretto:

git clone https://github.com/sviehb/jefferson

modificare il file src/scripts/jefferson cambiando nella prima riga

#! /usr/bin/python2

in

#! /usr/bin/python3

installare il modulo jefferson con i comandi

cd jefferson && sudo python setup.py install)

- Uso del tool ambitImageEditor

Scaricare il tool aggiornato da

git clone https://github.com/BigNerd95/ambitImageEditor

Andare nella cartella tools, copiare nella cartella il file .chk del firmware e lanciare il comando

./auto.sh nomefilefirmware.chk dove nomefilefirmware.chk č il nome del file del firmware

verrā scompattao l'archivo e il batch rimarrā in attesa che vengano fatte le modifiche al file decompilato,.
Una volta fatte le modifiche al firmware decompilato, premere un tasto e il batch ricomprimerā e firmerā il firmware.


- Utilizzo del tool (con Cygwin)

- Attivitā prepratorie

Queste attivitā vanno eseguite solo la prima volta per installare i moduli e le librerie necessarie all'uso del tool.

Dal programma di configurazione di Cygwin installare il modulo.

python3-pip

Verificare qual'č la versione di python3 che viene installata (es. 3.6.xxx)
Verranno selezionati anche una serie di altri moduli.
Verificare che venga selezionata anche il modulo python3-setuptools.
Installare tutti i moduli richiesti.
Completare l'installazione.

Lanciare il terminale Cygwin.

dare i comandi

easy_install-3.6 pip - per creare il comando pip3 - valido se la versione di python3 č la 3.6
pip3 install --upgrade pip - aggiornamento modulo pip3
pip3 install -U crcmod - creaaizone libreria crcmod
pip3 install -U construct - creazione libreria construct

ambitImageEditor si appoggia per la decompressione/ricomrpessione del firmware al programma binwalk.
I sotrgenti di binwalk sono scaricabili in questa pagina di GitHub

ambitImageEditor by bignerd95 (Github) (https://github.com/ReFirmLabs/binwalk)

Consultare la guida di binwalk per le eventuali moduli da installare priam della compialzione di binwalk.

Decomprimere l'archivio, posizionarsi nella cartella dove č stata effettuata l'estrazione e dare il comando

python3 setup.py install

verrā creato il programma binwalk.

Per testare binwalk digitare il comando

binwalk

e verrā visualizzato la guida con le opzioni del comando binwalk.

- Uso del tool ambitImageEditor

Scaricare il tool aggiornato da

ambitImageEditor by bignerd95 (Github) (https://github.com/BigNerd95/ambitImageEditor)

e decomprimere l'archivio

Andare nella cartella tools, copiare nella cartella il file .chk del firmware e lanciare il comando

./auto.sh nomefilefirmware.chk dove nomefilefirmware.chk č il nome del file del firmware

verrā scompattao l'archivo e il batch rimarrā in attesa che vengano fatte le modifiche al file decompilato,.
Una volta fatte le modifiche al firmware decompilato, premere un tasto e il batch ricomprimerā e firmerā il firmware.


- Licenza Creative Commons

Il contenuto di questo post č rilasciato con licenza

Creative Commons Attribution-Noncommercial-Share Alike 2.5 (http://creativecommons.org/licenses/by-nc-sa/2.5/it/)

Bovirus
13-02-2018, 08:22
Riservato ...

- Licenza Creative Commons

Il contenuto di questo post č rilasciato con licenza

Creative Commons Attribution-Noncommercial-Share Alike 2.5 (http://creativecommons.org/licenses/by-nc-sa/2.5/it/)

Bovirus
13-02-2018, 08:24
Riservato .. ..

- Licenza Creative Commons

Il contenuto di questo post č rilasciato con licenza

Creative Commons Attribution-Noncommercial-Share Alike 2.5 (http://creativecommons.org/licenses/by-nc-sa/2.5/it/)

Bovirus
17-02-2018, 07:51
@bignerd95

Per favore continuiamo la discussione sul tuo tool in questo nuovo thread.

Il tool richeide anche il programma esterno binwalk

Scaricadno il modulo ed installandolo riesco a proseguire la decompilazione ma ottengo questo errore.

$ ./auto.sh DGN2200v4-1.0.0.102.chk
** Ambit Image split **
Parsing file...
Creating directory: DGN2200v4-1.0.0.102.chk_extract
Extracting RootFS...
Extracting Kernel...
Done!
** Vtoken remove **
CRC: 0x4b0c51a2
Magic: 0x5732
Chip ID: 6328
Flash type: NAND16
Unused: 0x0

Vtoken removed!

DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------

WARNING: Extractor.execute failed to run external extractor 'jefferson -d 'jffs2-root' '%e'': [Errno 2] No such file or directory: 'jefferson': 'jefferson', 'jefferson -d 'jffs2-root' '%e'' might not be installed correctly
0 0x0 JFFS2 filesystem, big endian



Servono dei requisiti particolari per binwalk (librerie o altro)?

bignerd95
17-02-2018, 10:30
Ecco la guida per installare tutto il necessario per binwlak

https://github.com/ReFirmLabs/binwalk/blob/master/INSTALL.md

Se cerchi "jefferson" all'interno di quella pagina trovi i comandi per installarlo

Avresti poi voglia di farmi l'elenco dei tool che hai dovuto installare? Cosi lo aggiungo al mio readme

Bovirus
17-02-2018, 15:21
@bignerd95

Grazie delle indicazioni.

Per il jefferson ho dovuto modificare lo script jefferson in quanto fa riferimento a python2 (v2) mentre oggi si usa python3 (v3).

Ora la funzione di decompilazione la completa.

Ho problemi con Cygwin e il comando mkfs.jffs2.
Poi provo con il sistema Linux

Proposte per il batch auto.sh

- se viene lanciato senza riferimento al file del firmware visualizzare una pagina di help

- testare se il il file del firmware indicato esiste e se non esiste emettere un messaggio d'errore.

- verificare l'ambienete d'esecuzione (Linux/Cygwin, etc) e modificare alcuni comandi (es. sudo in Cygwin non esiste)

- testare se possibile la disponibilitā dei moduli dipendenze (binwalk/jefferson)

- testare se la cartella di estrazione esiste giā e se esiste rimuoverla.

- Visualizzare con dei messaggi i vari passaggi (estrazione, rimozione token, creazione token, compressione)


In Linux (Ububtu 16.04) ho riscontrato questo problema

Installato phython3 - OK
installato modulo crcmod - ok
installato jefferson - ok
scaricato e decomrpesso ambitImageEditor

quando lancio il comando auto,sh ottengo

root@ubuntu:/home/ubuntu/Desktop/ambitImageEditor/tools# pip3 install crcmod
Collecting crcmod
Installing collected packages: crcmod
Successfully installed crcmod-1.7

root@ubuntu:/home/ubuntu/Desktop/ambitImageEditor/tools# pip3 install construct
Collecting construct
Installing collected packages: construct
Successfully installed construct-2.9.31

root@ubuntu:/home/ubuntu/Desktop/ambitImageEditor/tools# ls
auto.sh DGN2200v4-1.0.0.102.chk mkfs.jffs2 nocomprlist

root@ubuntu:/home/ubuntu/Desktop/ambitImageEditor/tools# ./auto.sh DGN2200v4-1.0.0.102.chk
Traceback (most recent call last):
File "/home/ubuntu/Desktop/ambitImageEditor/tools/..//ambitImageEditor/ambitImageEditor.py", line 5, in <module>
import sys, os, Ambit
File "/home/ubuntu/Desktop/ambitImageEditor/ambitImageEditor/Ambit.py", line 29, in <module>
"board_id" / String(this.size - FIXED_HEADER_LEN, StringsAsBytes),
NameError: name 'StringsAsBytes' is not defined

bignerd95
18-02-2018, 19:05
Devi aggiornare construct.

Se ti ricordi qualche giorno fa ti dava questo errore:
https://www.hwupgrade.it/forum/showpost.php?p=45369989&postcount=7125

Perche hanno aggiornato construct e ora richiedono di specificare "StringsAsBytes".
E allora ho aggiornato il tool:
https://www.hwupgrade.it/forum/showpost.php?p=45370141&postcount=7126

Qua puoi vedere il mio commit:
https://github.com/BigNerd95/ambitImageEditor/commit/f4043e9460f1d07f56d4e6184fb96f1fe0eafe01

Quindi o aggiorni construct o cancelli la modifica del mio tool.

Fammi sapere ;-)

Bovirus
18-02-2018, 20:22
@bignerd95

Grazie per la modifica del tuo tool.
Provvedo ad aggiornare il tuo tool.

Non cambia nulla.

Avevo giā usato la versioen aggironata del tuo tool.
La csoa strabna come ho scritto che suando Cygwin non dā quell'errroe.

Come si fa a verificare il funzionamento della libreria construct?

bignerd95
19-02-2018, 12:16
Purtroppo il mantainer di construct continua a modificare sta gestione delle stringhe

https://github.com/construct/construct/commit/764d1082b863e7df8ce25c75fa35a56823f12f22

Semplicememnte cancella StringAsByte dal mio tool per il moment
Come construct diventa nuovamente stabile lo fixo
Magari specificando la versione funzionante

Bovirus
19-02-2018, 12:46
@bignerd95

Grazie.
Quando trovi una versione stabile di construct, potresti integrarla nel tuo repository o rendere lo zip del sorgente di construct in modo da suare quello.

bignerd95
27-03-2018, 16:27
Aggiornato il mio repo con l'ultima versione di construct
Inoltre ho messo nel README il comando per installare la versione corretta delle librerie cosi da non avere piu problemi di compatibilita'