Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
binbloom — Software di analisi del firmware binario grezzo | Kitploit
Strumenti/GitHubGitHub/quarkslab/binbloom
Sicurezza Sistemi EmbeddedReverse EngineeringAnalisi di BinariAnalisi del Firmware
GitHubquarkslab/binbloom

binbloom

Software di analisi del firmware binario grezzo

Vedi Repository
58361193 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Sito web

Informazioni

Lo scopo di questo progetto è analizzare un firmware binario grezzo e determinare automaticamente alcune delle sue caratteristiche. Questo strumento è compatibile con tutte le architetture poiché, fondamentalmente, esegue semplici statistiche su di esso.

Caratteristiche principali:

  • Loading address: binbloom può analizzare un firmware binario grezzo e determinarne l’indirizzo di caricamento.
  • Endianness: binbloom può utilizzare euristiche per determinare l’endianness di un firmware.
  • UDS Database: binbloom può analizzare un firmware binario grezzo e verificare se contiene un array con gli ID dei comandi UDS.

Download / Installazione

Per prima cosa, clona il repository git:

git clone https://github.com/quarkslab/binbloom.git
cd binbloom

Per compilare l’ultima versione (solo linux):

autoreconf -i
./configure
make
sudo make install

Per iniziare

Determinare l’endianness e l’indirizzo di base di un firmware

binbloom firmware.bin

Questo comando dovrebbe produrre un output simile a questo:

[i] 32-bit architecture selected.
[i] File read (20480 bytes)
[i] Endianness is LE                                
[i] 6 strings indexed                                    
[i] Found 3 base addresses to test                    
[i] Base address seems to be 0x60000000 (not sure)
 More base addresses to consider (just in case):
  0x005b5000 (0)
  0x0bcd0000 (0)

In questo output, la terza riga mostra l’endianness ipotizzata (LE, little-endian) e la sesta riga fornisce l’indirizzo ipotizzato (0x60000000). Sono state identificate 6 stringhe di testo e 3 possibili indirizzi di base. Se l’architettura non è specificata, per impostazione predefinita viene considerata l’architettura a 32 bit.

Il valore tra parentesi dopo ogni indirizzo candidato è il punteggio corrispondente. Più alto è il punteggio, più probabile è l’indirizzo.

Determinare l’endianness e l’indirizzo di base di un firmware a 64 bit

binbloom -a 64 firmware.bin
[i] 64-bit architecture selected.
[i] File read (327680 bytes)
[i] Endianness is LE                                
[i] 717 strings indexed                                  
[i] Found 7535 base addresses to test                 
[i] Base address found: 0x0000000000010000.                          
 More base addresses to consider (just in case):
  0x000000000000e000 (276)
  0x000000000000f000 (242)
  0x0000000000011000 (175)
  0x000000000000d000 (167)
  0x000000000000b000 (121)
  0x0000000000013000 (107)
  0x0000000000012000 (100)
  [...]

L’opzione -a dice a binbloom di considerare un firmware a 64 bit; l’output sopra mostra un indirizzo di base ipotizzato di 0x10000.

Forzare l’endianness se binbloom non la indovina correttamente

Quando si ha a che fare con firmware di piccole dimensioni (dimensioni < 10 Kbyte), il rilevamento dell’endianness di binbloom potrebbe non essere affidabile e fornire un risultato falso che porta a indirizzi di base inaspettati. In questo caso, puoi utilizzare l’opzione -e per specificare l’endianness:

binbloom -e be firmware.bin

Successivamente produce il seguente output:

[i] Selected big-endian architecture.
[i] File read (1048576 bytes)
[i] Endianness is BE
[i] 764 strings indexed                                  
[i] Found 18615 base addresses to test                
[i] Base address seems to be 0x00000000 (not sure).
 More base addresses to consider (just in case):
  0x3f740000 (121043)
  0x7ff48000 (61345)
  0x41140000 (59552)
  [...]

L’endianness viene quindi forzata (in questo caso big-endian) e binbloom si basa su questa configurazione per indovinare l’indirizzo di base.

Trovare il database UDS (per il firmware di una ECU)

binbloom -a 32 -e be -b 0x0 firmware.bin
[i] 32-bit architecture selected.
[i] Selected big-endian architecture.
[i] Base address 0x0000000000000000 provided.
[i] 764 strings indexed                                  
Most probable UDS DB is located at @000ee8c8, found 7 different UDS RID
Identified structure:
struct {
	code *p_field_0;
	code *p_field_1;
	uint32_t dw_2;
}

Questa analisi si basa su euristiche, quindi può dare falsi positivi. Devi leggere l’elenco dei potenziali database UDS trovati da binbloom e verificare quale sia quello corretto, se presente. Binbloom fornisce la struttura identificata nel suo output, consentendo ad alcuni disassemblatori di analizzare la memoria che segue la dichiarazione della struttura.

Opzioni avanzate

Puoi accelerare il processo di ricerca dell’indirizzo di base abilitando il multi-threading con l’opzione -t. Per impostazione predefinita, viene utilizzato un singolo thread.

binbloom -t 8 firmware.bin

È implementata anche una modalità di ricerca approfondita, abilitata con l’opzione -d, ma è ancora sperimentale. Questa modalità può essere utile in occasioni molto rare, poiché può trovare un indirizzo di base valido quando nient’altro funziona, ma è una modalità più lenta che potrebbe richiedere del tempo per completarsi.

Se desideri che lo strumento mostri più informazioni, utilizza una o più opzioni -v.

Informazioni

Autori

  • Guillaume Heilles (@PapaZours)
  • Damien Cauquil (@virtualabs)

Licenza

binbloom è fornito sotto licenza Apache 2.0.

Scarica lo strumento