Firmware Mod Kit
Extrait et reconstruit des images de firmware pour appareils embarqués et IoT, en décompactant des systèmes de fichiers comme SquashFS/JFFS2 pour analyse et en repackageant après modification. Extracts and rebuilds firmware images for embedded and IoT devices, unpacking filesystems like SquashFS/JFFS2 for analysis and repackaging after modification.
↗ https://github.com/rampageX/firmware-mod-kitOverview
Firmware Mod Kit (FMK) is a toolset for extracting, modifying, and rebuilding firmware images pulled from routers, IoT devices, and other embedded systems. It identifies the firmware’s bootloader/header, unpacks the embedded filesystem (SquashFS, JFFS2, CramFS, etc.), lets you edit files (binaries, configs, init scripts), and repacks everything back into a flashable image — commonly used alongside binwalk for firmware security research.
Common Usage
Extract a firmware image (auto-detects header/filesystem type)
./extract-firmware.sh firmware.bin
Result lands in
ls firmware_extracted/rootfs
Modify files inside the extracted rootfs
nano firmware_extracted/rootfs/etc/passwd
Rebuild the firmware image after modification
./build-firmware.sh firmware_extracted
Use binwalk first to identify offsets/filesystem types before extraction
binwalk -e firmware.bin
Notes
- Often used in tandem with
binwalkfor initial identification and carving, and withunsquashfs/mksquashfsdirectly when FMK’s automation doesn’t fit an unusual image - Rebuild step must reproduce the original filesystem type, header, and checksums exactly, or the target device will refuse to flash the modified image
- Common security research use cases: backdooring a firmware image for a physical-access engagement, extracting hardcoded credentials/keys, or auditing init scripts and binaries for vulnerabilities
Help / Man page
extract-firmware.sh <firmware_image> [output_dir]
Identifies firmware header/bootloader, extracts embedded filesystem
(SquashFS, JFFS2, CramFS, etc.) into <output_dir>/rootfs and any
additional partitions found.
build-firmware.sh <extracted_dir> [output_image]
Repacks a previously extracted (and optionally modified) firmware
directory back into a flashable image, reconstructing the original
header/filesystem format.
Bundled utilities:
unsquashfs / mksquashfs extract/build SquashFS filesystems
jffs2extract / mkfs.jffs2 extract/build JFFS2 filesystems
Vue d’ensemble
Firmware Mod Kit (FMK) est un ensemble d’outils pour extraire, modifier et reconstruire des images de firmware issues de routeurs, d’appareils IoT et d’autres systèmes embarqués. Il identifie le bootloader/header du firmware, décompacte le système de fichiers embarqué (SquashFS, JFFS2, CramFS, etc.), permet d’éditer les fichiers (binaires, configs, scripts d’init), et repackage le tout en une image flashable : couramment utilisé aux côtés de binwalk pour la recherche en sécurité firmware.
Utilisation courante
# Extraire une image de firmware (détecte automatiquement le header/type de système de fichiers)
./extract-firmware.sh firmware.bin
# Le résultat atterrit dans <firmware>_extracted/ avec rootfs/ et d'autres partitions
ls firmware_extracted/rootfs
# Modifier des fichiers dans le rootfs extrait
nano firmware_extracted/rootfs/etc/passwd
# Reconstruire l'image de firmware après modification
./build-firmware.sh firmware_extracted
# Utiliser binwalk d'abord pour identifier les offsets/types de systèmes de fichiers avant extraction
binwalk -e firmware.bin
Notes
- Souvent utilisé en tandem avec
binwalkpour l’identification et l’extraction initiales, et avecunsquashfs/mksquashfsdirectement quand l’automatisation de FMK ne convient pas à une image inhabituelle - L’étape de reconstruction doit reproduire exactement le type de système de fichiers, le header et les checksums d’origine, sinon l’appareil cible refusera de flasher l’image modifiée
- Cas d’usage courants en recherche de sécurité : implanter une backdoor dans une image de firmware pour un engagement avec accès physique, extraire des identifiants/clés codés en dur, ou auditer les scripts d’init et binaires à la recherche de vulnérabilités
Aide / Page de manuel
extract-firmware.sh <firmware_image> [output_dir]
Identifies firmware header/bootloader, extracts embedded filesystem
(SquashFS, JFFS2, CramFS, etc.) into <output_dir>/rootfs and any
additional partitions found.
build-firmware.sh <extracted_dir> [output_image]
Repacks a previously extracted (and optionally modified) firmware
directory back into a flashable image, reconstructing the original
header/filesystem format.
Bundled utilities:
unsquashfs / mksquashfs extract/build SquashFS filesystems
jffs2extract / mkfs.jffs2 extract/build JFFS2 filesystems