Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
binbloom — Software de análise de firmware binário bruto | Kitploit
Ferramentas/GitHubGitHub/quarkslab/binbloom
Segurança de Sistemas EmbarcadosEngenharia ReversaAnálise de BináriosAnálise de Firmware
GitHubquarkslab/binbloom

binbloom

Software de análise de firmware binário bruto

Ver Repositório
5836119há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Site

Sobre

O objetivo deste projeto é analisar um firmware binário bruto e determinar automaticamente algumas de suas características. Esta ferramenta é compatível com todas as arquiteturas, pois basicamente realiza estatísticas simples sobre ele.

Principais características:

  • Endereço de carregamento: o binbloom pode analisar um firmware binário bruto e determinar seu endereço de carregamento.
  • Endianness: o binbloom pode usar heurísticas para determinar o endianness de um firmware.
  • Banco de dados UDS: o binbloom pode analisar um firmware binário bruto e verificar se ele contém um array com IDs de comandos UDS.

Download / Instalação

Primeiro, clone o repositório git:

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

Para compilar a versão mais recente (apenas Linux):

autoreconf -i
./configure
make
sudo make install

Primeiros passos

Determinar o endianness e o endereço base de um firmware

binbloom firmware.bin

Este comando deve produzir uma saída como esta:

[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)

Nesta saída, a terceira linha exibe o endianness estimado (LE, little-endian) e a sexta linha fornece o endereço estimado (0x60000000). Foram identificadas 6 strings de texto e 3 possíveis endereços base. Se a arquitetura não for especificada, a arquitetura de 32 bits é considerada por padrão.

O valor entre parênteses após cada endereço candidato é a pontuação correspondente. Quanto maior a pontuação, mais provável o endereço.

Determinar o endianness e o endereço base de um firmware de 64 bits

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)
  [...]

A opção -a informa ao binbloom para considerar um firmware de 64 bits; a saída acima mostra um endereço base estimado de 0x10000.

Forçar o endianness se o binbloom não acertar

Ao lidar com firmwares pequenos (tamanho < 10 KB), a detecção de endianness do binbloom pode não ser confiável e dar um resultado falso que leva a endereços base inesperados. Nesse caso, você pode usar a opção -e para especificar o endianness:

binbloom -e be firmware.bin

Ele então produz a seguinte saída:

[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)
  [...]

O endianness é então forçado (neste caso, big-endian) e o binbloom depende desta configuração para estimar o endereço base.

Encontrar o banco de dados UDS (para um firmware de 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;
}

Essa análise é baseada em heurísticas, portanto pode apresentar falsos positivos. Você deve ler a lista de potenciais bancos de dados UDS encontrados pelo binbloom e verificar qual deles é o correto, se houver. O binbloom fornece a estrutura identificada em sua saída, permitindo que alguns desmontadores analisem a memória seguindo a declaração da estrutura.

Opções avançadas

Você pode acelerar o processo de busca do endereço base ativando o multi-threading com a opção -t. Por padrão, uma única thread é usada.

binbloom -t 8 firmware.bin

Um modo de busca profunda, ativado com a opção -d, também está implementado, mas ainda é experimental. Esse modo pode ser útil em ocasiões muito raras, pois pode encontrar um endereço base válido quando nada mais funciona, mas é um modo mais lento que pode levar algum tempo para ser concluído.

Se você quiser que a ferramenta exiba mais informações, use uma ou mais opções -v.

Sobre

Autores

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

Licença

O binbloom é fornecido sob a licença Apache 2.0.

Baixar ferramenta