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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
moria — Identificação e extração de firmware IoT | Kitploit
Ferramentas/GitHubGitHub/nmatt0/moria
Segurança de Sistemas EmbarcadosSegurança IoTEngenharia ReversaColeta de InformaçõesAnálise de MalwareForensia DigitalUtilitários e FrameworksSegurança de Hardware e IoTAnálise de BináriosAnálise de Firmware
GitHub
42256142há 1 diaRevisado 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
nmatt0/moria

moria

Identificação e extração de firmware IoT

Ver Repositório

moria

Identificação e extração de firmware IoT

moria identifica arquivos e as estruturas embutidas em firmware e imagens IoT (sistemas de arquivos, kernels, bootloaders, arquivos compactados, chaves) e descompacta a maior parte do que encontra, sem root. Ele reporta cada descoberta com um deslocamento em bytes, um tipo e uma pontuação de confiança, e fala JSON limpo para que scripts e agentes LLM possam conduzi-lo tão facilmente quanto pessoas.

Por que moria

  • Extrai um amplo conjunto de sistemas de arquivos em processo, sem sudo: SquashFS, ext2/3/4, F2FS, XFS, btrfs, HFS+, NTFS, EROFS, JFFS2, UBIFS e mais.
  • Recursivo por padrão. Um SquashFS envolto em gzip dentro de um volume UBI é descompactado até o fim.
  • Sinaliza executáveis empacotados. Detecta ELF/PE/Mach-O empacotados com UPX em várias arquiteturas a partir do trailer PackHeader verificado por checksum (formato, método e tamanhos), e sinaliza stubs cujo cabeçalho foi zerado ou alterado para derrotar upx -d.
  • Determinístico. A mesma entrada sempre produz a mesma saída; a resolução de conflitos não tem desempate aleatório.
  • Seguro com entrada hostil. Toda leitura é verificada quanto a limites, toda escrita passa por openat + O_NOFOLLOW (sem path-traversal ou escape por symlink), e a descompressão é limitada contra bombs.
  • Identificação em primeiro lugar. Uma árvore legível por padrão, JSON (-j) para ferramentas, com deslocamentos e confiança em cada descoberta.

Compilação e Instalação

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
cmake --install build --prefix ~/.local     # or /usr/local (needs sudo)

A compilação precisa de cmake, um compilador C++20 e as bibliotecas de desenvolvimento zlib, liblzma, lz4 e zstd (os descompactadores usados por --extract). No Debian/Ubuntu: sudo apt install cmake g++ zlib1g-dev liblzma-dev liblz4-dev libzstd-dev. Para compilar sem uma delas (uma compilação mínima ou apenas de identificação), configure com -DMORIA_OPTIONAL_CODECS=ON e o codec ausente é simplesmente desativado.

O binário moria é autocontido: todos os conjuntos de assinaturas são incorporados no momento da compilação, portanto o binário funciona em qualquer lugar sem nada instalado ao seu lado (cp build/moria ~/.local/bin é suficiente, e um binário de release baixado simplesmente executa). Para usar assinaturas externas em vez das incorporadas (para testar um novo .toml sem recompilar, por exemplo), passe --sigs DIR ou defina $MORIA_SIGDIR.

Uso

A saída é legível por humanos por padrão. Passe -j para JSON.

moria <file>               # identify: a findings tree with offsets, types, and confidence
moria <dir>                # scan a tree: a type summary plus the notable files
moria -j <file>            # JSON, for tools and agents
moria -e <file>            # extract to <file>.extracted/   (-C DIR to choose the output dir)
moria -c <file>            # carve raw byte ranges to <file>.carved/ (no parsing)
moria -E <file>            # entropy pass: flag unidentified / possibly-encrypted regions
moria --list <archive>     # list tar/cpio/zip/cab/CE-ROM members without extracting
moria --broad <path>       # also load the ~2.5k general file-type signatures
moria --unpack-executables # unpack executables inside other extracted output (cfbf/msi files)
moria --help

Extração

-e descompacta formatos reconhecidos em <file>.extracted/, um diretório por região (0x<offset>-<type>/), além de um manifest.json que mapeia offsets para caminhos. Ele recorre automaticamente em contêineres aninhados e reconstrói imagens UBI volume a volume. Guardas (--depth, --max-files, --max-bytes e um limite de taxa de descompressão) delimitam entradas hostis; uma guarda acionada interrompe aquele ramo e ainda retorna tudo o que foi recuperado.

Descompactado em processo, sem ferramentas externas e sem sudo:

  • Sistemas de arquivos: SquashFS, ext2/3/4, F2FS, FAT12/16/32, exFAT, NTFS, HFS+/HFSX, XFS, btrfs, JFFS2, UBI/UBIFS, romfs, YAFFS2, cramfs, EROFS, ReiserFS
  • Arquivos e imagens: ZIP, tar, cpio, MS-CAB (stored/MSZIP/LZX), arquivos compostos CFBF / Windows Installer .msi, ISO 9660, Android sparse, Android boot
  • Kernels e wrappers: U-Boot uImage, U-Boot FIT, Windows CE XIP ROM (nk.bin / .cos), streams standalone gzip / xz / zstd / lz4, Ingenic jzlzma (LZ77 em hardware)
  • Pacotes de firmware: RAE Systems / Honeywell RFP (tabela de seções; descompacta cada seção com LZARI); Artosyn OTRA (AR8030 / VT4 / VR04; verificado por SHA-256, descompacta cada partição com LZO1X, ou expõe o corpo bruto da flash em imagens flat)
  • Armazenamentos de configuração: ambiente U-Boot, ESP32 NVS, hives de registro do Windows CE (.hv)

Assinaturas

  • signatures/ é o núcleo escrito à mão: sistemas de arquivos de firmware, contêineres, kernels e formatos comuns, cada um com validação estrutural.
  • signatures-firmware/ contém magics de contêineres de firmware de fornecedores e é carregado por padrão.
  • signatures-generated/ contém ~2,5 mil magics de tipos de arquivo gerais derivados do banco de dados de magic do file(1) e é carregado apenas com --broad.

Para adicionar um formato, coloque um .toml em signatures/. Um pequeno validador em C++ só é necessário para verificações que a camada declarativa não consegue expressar, como CRCs ou ponteiros entre blocos. A semântica dos campos (magic_offset, endianness do magic, assinaturas curtas, restrições flexíveis, o contrato do validador) está documentada em SIGAUTHORING.md.

Escopo

moria faz identificação estrutural, extração e carving. Varredura de segredos/credenciais, SBOM, CVE e análise de licenças são uma ferramenta separada (mithril).

Licença

MIT, veja LICENSE.

Parte do tratamento de formatos em disco é uma reimplementação limpa dos algoritmos de outros projetos open-source, escrita de forma independente sobre a própria camada de I/O do moria (nenhum código-fonte copiado): o descompactador UCL/NRV2B e os unfilters CTO do UPX/UCL (GPL-2.0, apenas algoritmos), e o layout de metadata-commit e CTZ skip-list do littlefs (BSD-3-Clause), e o layout de página/objeto do SPIFFS (MIT).

Baixar ferramenta