Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
binbloom — Logiciel d'analyse de firmware binaire brut | Kitploit
Outils/GitHubGitHub/quarkslab/binbloom
Sécurité des Systèmes EmbarquésRétro-ingénierieAnalyse de BinairesAnalyse de Micrologiciel
GitHubquarkslab/binbloom

binbloom

Logiciel d'analyse de firmware binaire brut

Voir le dépôt
583614il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

À propos

Le but de ce projet est d'analyser un firmware binaire brut et de déterminer automatiquement certaines de ses fonctionnalités. Cet outil est compatible avec toutes les architectures car, fondamentalement, il effectue simplement des statistiques simples sur celui-ci.

Fonctionnalités principales :

  • Adresse de chargement : binbloom peut analyser un firmware binaire brut et déterminer son adresse de chargement.
  • Endianness : binbloom peut utiliser des heuristiques pour déterminer l'endianness d'un firmware.
  • Base de données UDS : binbloom peut analyser un firmware binaire brut et vérifier s'il contient un tableau contenant des identifiants de commandes UDS.

Téléchargement / Installation

D'abord, clonez le dépôt git :

root@kitploit:~
git clone https://github.com/quarkslab/binbloom.git
cd binbloom

Pour construire la dernière version (linux uniquement) :

root@kitploit:~
autoreconf -i
./configure
make
sudo make install

Premiers pas

Déterminer l'endianness et l'adresse de base d'un firmware

root@kitploit:~
binbloom firmware.bin

Cette commande devrait donner une sortie comme celle-ci :

root@kitploit:~
[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)

Dans cette sortie, la troisième ligne affiche l'endianness devinée (LE, little-endian) et la sixième ligne donne l'adresse devinée (0x60000000). 6 chaînes de texte et 3 adresses de base possibles ont été identifiées. Si l'architecture n'est pas spécifiée, l'architecture 32 bits est considérée par défaut.

La valeur entre parenthèses après chaque adresse candidate est le score correspondant. Plus le score est élevé, plus l'adresse est probable.

Déterminer l'endianness et l'adresse de base d'un firmware 64 bits

root@kitploit:~
binbloom -a 64 firmware.bin
root@kitploit:~
[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'option -a indique à binbloom de considérer un firmware 64 bits ; la sortie ci-dessus montre une adresse de base devinée de 0x10000.

Forcer l'endianness si binbloom ne la trouve pas correctement

Lorsqu'il s'agit de petits firmwares (taille < 10 Ko), la détection de l'endianness par binbloom peut ne pas être fiable et donner un résultat erroné conduisant à des adresses de base inattendues. Dans ce cas, vous pouvez utiliser l'option -e pour spécifier l'endianness :

root@kitploit:~
binbloom -e be firmware.bin

Il produit alors la sortie suivante :

root@kitploit:~
[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 est alors forcée (dans ce cas big-endian) et binbloom s'appuie sur cette configuration pour deviner l'adresse de base.

Trouver la base de données UDS (pour un firmware d'ECU)

root@kitploit:~
binbloom -a 32 -e be -b 0x0 firmware.bin
root@kitploit:~
[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;
}

Cette analyse est basée sur des heuristiques, elle peut donc donner des faux positifs. Vous devez lire la liste des bases de données UDS potentielles trouvées par binbloom et vérifier laquelle est la bonne, si elle existe. Binbloom fournit la structure identifiée dans sa sortie, permettant à certains désassembleurs d'analyser la mémoire suivant la déclaration de la structure.

Options avancées

Vous pouvez accélérer le processus de recherche d'adresse de base en activant le multi-threading avec l'option -t. Par défaut, un seul thread est utilisé.

root@kitploit:~
binbloom -t 8 firmware.bin

Un mode de recherche approfondie, activé avec l'option -d, est également implémenté mais reste expérimental. Ce mode peut être utile dans de très rares occasions car il peut trouver une adresse de base valide lorsque rien d'autre ne fonctionne, mais c'est un mode plus lent qui peut prendre du temps à s'exécuter.

Si vous souhaitez que l'outil affiche plus d'informations, utilisez une ou plusieurs options -v.

À propos

Auteurs

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

Licence

binbloom est fourni sous la licence Apache 2.0.

Télécharger l’outil