Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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
moria — Identification et extraction de firmware IoT | Kitploit
Outils/GitHubGitHub/nmatt0/moria
Sécurité des Systèmes EmbarquésSécurité IoTRétro-ingénierieCollecte d'InformationsAnalyse de MalwareCriminalistique NumériqueUtilitaires et FrameworksSécurité Matériel et IoTAnalyse de BinairesAnalyse de Micrologiciel
GitHub
320392il y a 6 joursVé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
nmatt0/moria

moria

Identification et extraction de firmware IoT

Voir le dépôt

moria

Identification et extraction de firmware IoT

moria identifie les fichiers et les structures intégrées dans les firmwares et les images IoT (systèmes de fichiers, noyaux, bootloaders, archives, clés) et décompresse la plupart de ce qu'il trouve, sans root. Il rapporte chaque découverte avec un décalage en octets, un type et un score de confiance, et il parle un JSON propre afin que les scripts et les agents LLM puissent le piloter aussi facilement que des humains.

Pourquoi moria

  • Extrait un large ensemble de systèmes de fichiers en cours de processus, sans sudo : SquashFS, ext2/3/4, F2FS, XFS, btrfs, HFS+, NTFS, EROFS, JFFS2, UBIFS, et plus encore.
  • Récursif par défaut. Un SquashFS encapsulé dans gzip à l'intérieur d'un volume UBI se décompresse jusqu'au bout.
  • Signale les exécutables packés. Détecte les ELF/PE/Mach-O packés avec UPX sur toutes les architectures à partir du trailer PackHeader vérifié par somme de contrôle (format, méthode et tailles), et signale les stubs dont l'en-tête a été mis à zéro ou altéré pour contrer upx -d.
  • Déterministe. La même entrée produit toujours la même sortie ; la résolution des conflits n'a pas de départage aléatoire.
  • Sûr face à une entrée hostile. Chaque lecture est vérifiée par rapport aux limites, chaque écriture passe par openat + O_NOFOLLOW (pas de traversée de chemin ni d'évasion par lien symbolique), et la décompression est bornée contre les bombes.
  • Identification d'abord. Un arbre lisible par défaut, du JSON (-j) pour les outils, avec des décalages et une confiance sur chaque découverte.

Compilation et installation

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 compilation nécessite cmake, un compilateur C++20, et les bibliothèques de développement zlib, liblzma, lz4 et zstd (les décompresseurs utilisés par --extract). Sur Debian/Ubuntu : sudo apt install cmake g++ zlib1g-dev liblzma-dev liblz4-dev libzstd-dev. Pour compiler sans l'une d'elles (une compilation minimale ou d'identification seule), configurez avec -DMORIA_OPTIONAL_CODECS=ON et le codec manquant est simplement désactivé.

Le binaire moria est autonome : tous les ensembles de signatures sont intégrés au moment de la compilation, donc le binaire fonctionne partout sans rien d'installé à côté (cp build/moria ~/.local/bin suffit, et un binaire de release téléchargé s'exécute directement). Pour utiliser des signatures externes au lieu de celles intégrées (pour tester un nouveau .toml sans recompiler, par exemple), passez --sigs DIR ou définissez $MORIA_SIGDIR.

Utilisation

La sortie est lisible par un humain par défaut. Passez -j pour du 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

Extraction

-e décompresse les formats reconnus sous <file>.extracted/, un répertoire par région (0x<offset>-<type>/), plus un manifest.json associant les décalages aux chemins. Il récurse automatiquement dans les conteneurs imbriqués et reconstruit les images UBI volume par volume. Des garde-fous (--depth, --max-files, --max-bytes, et un plafond de taux de décompression) bornent les entrées hostiles ; un garde-fou déclenché arrête cette branche et renvoie quand même tout ce qui a été récupéré.

Décompressé en cours de processus, sans outils externes et sans sudo :

  • Systèmes de fichiers : SquashFS, ext2/3/4, F2FS, FAT12/16/32, exFAT, NTFS, HFS+/HFSX, XFS, btrfs, JFFS2, UBI/UBIFS, romfs, YAFFS2, cramfs, EROFS
  • Archives et images : ZIP, tar, cpio, ISO 9660, Android sparse, Android boot
  • Noyaux et enveloppes : U-Boot uImage, U-Boot FIT, flux autonomes gzip / xz / zstd / lz4
  • Paquets de firmware : RAE Systems / Honeywell RFP (table de sections ; décompresse en LZARI chaque section)

Signatures

  • signatures/ est le cœur écrit à la main : systèmes de fichiers de firmware, conteneurs, noyaux et formats courants, chacun avec une validation structurelle.
  • signatures-firmware/ contient les magics de conteneurs de firmware de fournisseurs et se charge par défaut.
  • signatures-generated/ contient ~2,5 k magics de types de fichiers généraux dérivés de la base de données de magics de file(1) et ne se charge qu'avec --broad.

Pour ajouter un format, déposez un .toml dans signatures/. Un petit validateur C++ n'est nécessaire que pour les vérifications que la couche déclarative ne peut pas exprimer, comme les CRC ou les pointeurs inter-blocs.

Périmètre

moria effectue l'identification structurelle, l'extraction et le carving. L'analyse des secrets/identifiants, le SBOM, les CVE et l'analyse de licences relèvent d'un outil distinct (mithril).

Licence

MIT, voir LICENSE.

Une partie de la gestion des formats sur disque est une réimplémentation propre des algorithmes d'autres projets open source, écrite indépendamment contre la propre couche d'E/S de moria (aucun code source copié) : le décompresseur UCL/NRV2B et les unfilters CTO de UPX/UCL (GPL-2.0, algorithmes uniquement), et la disposition metadata-commit et CTZ skip-list de littlefs (BSD-3-Clause), et la disposition page/objet de SPIFFS (MIT).

Télécharger l’outil