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
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
3203926 giorni 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 di 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.
  • Ricorsivo per impostazione predefinita. Un SquashFS racchiuso in gzip dentro un volume UBI viene estratto fino in fondo.
  • Segnala eseguibili impacchettati. Rileva ELF/PE/Mach-O impacchettati con UPX su diverse architetture 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 prima di tutto. Un albero leggibile per impostazione predefinita, JSON (-j) per gli strumenti, con offset e confidenza su ogni risultato.

Build & Install

root@kitploit:~
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-identificazione), configura con -DMORIA_OPTIONAL_CODECS=ON e il codec mancante viene semplicemente disabilitato.

Il binario moria è autocontenuto: 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 e basta). Per usare firme esterne invece di quelle incorporate (per testare un nuovo .toml senza ricompilare, ad esempio), passa --sigs DIR o imposta $MORIA_SIGDIR.

Utilizzo

L'output è leggibile dall'uomo per impostazione predefinita. Passa -j per il JSON.

root@kitploit:~
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 members without extracting
moria --broad <path>      # also load the ~2.5k general file-type signatures
moria --help

Estrazione

-e estrae i formati riconosciuti sotto <file>.extracted/, una directory per regione (0x<offset>-<type>/), più un manifest.json che mappa gli offset ai percorsi. Ricorre automaticamente nei contenitori annidati e ricostruisce le immagini UBI volume per volume. Le protezioni (--depth, --max-files, --max-bytes e un limite sul rapporto di decompressione) delimitano l'input ostile; una protezione attivata 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
  • Archivi e immagini: ZIP, tar, cpio, ISO 9660, Android sparse, Android boot
  • Kernel e wrapper: U-Boot uImage, U-Boot FIT, stream standalone gzip / xz / zstd / lz4
  • Pacchetti firmware: RAE Systems / Honeywell RFP (tabella delle sezioni; decomprime con LZARI ogni sezione)

Firme

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

Per aggiungere un formato, inserisci un .toml in signatures/. Un piccolo validatore C++ è necessario solo per i controlli che il livello dichiarativo non può esprimere, come CRC o puntatori tra blocchi.

Ambito

moria esegue identificazione strutturale, estrazione e carving. La scansione di segreti/credenziali, SBOM, CVE e analisi delle licenze sono uno strumento separato (mithril).

Licenza

MIT, vedi LICENSE.

Parte della gestione dei formati su disco è una reimplementazione pulita degli algoritmi in altri progetti open-source, scritta in modo indipendente rispetto al layer I/O di moria (nessun sorgente copiato): il decompressore UCL/NRV2B e i CTO unfilters 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