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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
moria — Identificazione ed estrazione del firmware IoT | Kitploit
Strumenti/GitHubGitHub/nmatt0/moria
Sicurezza Sistemi EmbeddedSicurezza IoTReverse EngineeringRaccolta InformazioniAnalisi MalwareDigital ForensicsUtilità e FrameworkSicurezza Hardware e IoTAnalisi di BinariAnalisi del Firmware
GitHub
422561421 giorno 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
nmatt0/moria

moria

Identificazione ed estrazione del firmware IoT

Vedi Repository

moria

Identificazione ed estrazione del firmware IoT

moria identifica i file e le strutture incorporate all'interno di firmware e immagini IoT (filesystem, kernel, bootloader, archivi, chiavi) ed estrae la maggior parte di ciò che trova, senza root. Riporta ogni risultato con un offset in byte, un tipo e un punteggio di confidenza, e parla un JSON pulito così che script e agenti LLM possano pilotarlo con la stessa facilità con cui lo fanno le persone.

Perché moria

  • Estrae un'ampia gamma di filesystem in-process, senza sudo: SquashFS, ext2/3/4, F2FS, XFS, btrfs, HFS+, NTFS, EROFS, JFFS2, UBIFS e altri ancora.
  • Ricorsivo per impostazione predefinita. Un SquashFS racchiuso in gzip dentro un volume UBI viene estratto fino in fondo.
  • Segnala gli eseguibili impacchettati. Rileva ELF/PE/Mach-O impacchettati con UPX su tutte le architetture a partire dal trailer PackHeader verificato tramite checksum (formato, metodo e dimensioni), e segnala gli stub il cui header è stato azzerato o alterato per aggirare upx -d.
  • Deterministico. Lo stesso input produce sempre lo stesso output; la risoluzione dei conflitti non ha spareggi casuali.
  • Sicuro su input ostili. Ogni lettura è verificata nei limiti, ogni scrittura passa attraverso openat + O_NOFOLLOW (nessun path-traversal o fuga tramite symlink), e la decompressione è limitata contro le bombe.
  • Identificazione innanzitutto. Un albero leggibile per impostazione predefinita, JSON (-j) per gli strumenti, con offset e confidenza su ogni risultato.

Compilazione e installazione

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

La build richiede cmake, un compilatore C++20 e le librerie di sviluppo zlib, liblzma, lz4 e zstd (i decompressori usati da --extract). Su Debian/Ubuntu: sudo apt install cmake g++ zlib1g-dev liblzma-dev liblz4-dev libzstd-dev. Per compilare senza una di esse (una build minimale o solo di identificazione), configurare con -DMORIA_OPTIONAL_CODECS=ON e il codec mancante viene semplicemente disabilitato.

Il binario moria è autonomo: tutti i set di firme sono incorporati al momento della build, quindi il binario funziona ovunque senza nulla installato accanto (cp build/moria ~/.local/bin è sufficiente, e un binario di release scaricato funziona direttamente). Per usare firme esterne invece di quelle incorporate (ad esempio per testare un nuovo .toml senza ricompilare), passare --sigs DIR o impostare $MORIA_SIGDIR.

Utilizzo

L'output è leggibile dall'uomo per impostazione predefinita. Passare -j per 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

Estrazione

-e estrae i formati riconosciuti in <file>.extracted/, una directory per regione (0x<offset>-<type>/), più un manifest.json che mappa gli offset ai percorsi. Ricorre automaticamente nei container annidati e ricostruisce le immagini UBI volume per volume. I limiti di sicurezza (--depth, --max-files, --max-bytes e un tetto al rapporto di decompressione) delimitano input ostili; un limite superato interrompe quel ramo e restituisce comunque tutto ciò che è stato recuperato.

Estratto in-process, senza strumenti esterni e senza sudo:

  • Filesystem: SquashFS, ext2/3/4, F2FS, FAT12/16/32, exFAT, NTFS, HFS+/HFSX, XFS, btrfs, JFFS2, UBI/UBIFS, romfs, YAFFS2, cramfs, EROFS, ReiserFS
  • Archivi e immagini: ZIP, tar, cpio, MS-CAB (stored/MSZIP/LZX), file composti CFBF / Windows Installer .msi, ISO 9660, Android sparse, Android boot
  • Kernel e wrapper: U-Boot uImage, U-Boot FIT, Windows CE XIP ROM (nk.bin / .cos), stream standalone gzip / xz / zstd / lz4, Ingenic jzlzma (LZ77 hardware)
  • Pacchetti firmware: RAE Systems / Honeywell RFP (tabella delle sezioni; decomprime con LZARI ogni sezione); Artosyn OTRA (AR8030 / VT4 / VR04; verificato con SHA-256, decomprime con LZO1X ogni partizione, oppure espone il corpo flash grezzo sulle immagini flat)
  • Archivi di configurazione: U-Boot environment, ESP32 NVS, hive del registro di Windows CE (.hv)

Firme

  • signatures/ è il nucleo scritto a mano: filesystem firmware, container, kernel e formati comuni, ciascuno con validazione strutturale.
  • signatures-firmware/ contiene le magic dei container firmware dei vendor e viene caricato per impostazione predefinita.
  • signatures-generated/ contiene ~2,5k magic di tipi di file generici derivate dal database delle magic di file(1) e viene caricato solo con --broad.

Per aggiungere un formato, inserisci un file .toml in signatures/. Un piccolo validatore C++ è necessario solo per i controlli che il livello dichiarativo non può esprimere, come i CRC o i puntatori tra blocchi. La semantica dei campi (magic_offset, endianness della magic, firme corte, vincoli soft, il contratto del validatore) è documentata in SIGAUTHORING.md.

Ambito

moria esegue identificazione strutturale, estrazione e carving. La scansione di segreti/credenziali, l'SBOM, l'analisi CVE e delle licenze sono strumenti separati (mithril).

Licenza

MIT, vedi LICENSE.

Parte della gestione dei formati su disco è una reimplementazione pulita degli algoritmi di altri progetti open-source, scritta in modo indipendente sul layer I/O di moria (nessun codice copiato): il decompressore UCL/NRV2B e i CTO unfilter da UPX/UCL (GPL-2.0, solo algoritmi), e il layout metadata-commit e CTZ skip-list di littlefs (BSD-3-Clause), e il layout page/object di SPIFFS (MIT).

Scarica lo strumento