Analyze and extract firmware
Open firmware. Find the structure. Extract the evidence. Binwalk identifies and extracts files, file systems, compressed streams, executables, bootloaders, kernels, and other data embedded inside firmware and binary images - built for firmware security research, reverse engineering, and digital forensics.
Free & open source · Binwalk 3.1.0 · Linux, macOS & Windows (WSL/Docker) · install options
What is Binwalk?
A firmware image rarely contains just one file. It can hold layers of compressed data, proprietary headers, operating-system components, boot code, certificates, executables, configuration files, and complete file systems - and locating each one by hand is slow and error-prone.
Binwalk automates the first stage of analysis: it scans binary data for known structures, validates the objects it detects, and shows where every recognized component begins. Originally created by Craig Heffner at ReFirm Labs, Binwalk v3 rebuilt the engine in Rust for speed, structural validation, and lower false-positive rates. It is open source under the MIT License and works as a command-line tool or a Rust library.
How Binwalk works
Six commands cover most firmware analysis - scan, extract, recurse, measure entropy, log, and review.
Scan and identify
$ binwalk firmware.binMap the internal structure of an image: Binwalk reports recognized objects by decimal and hex offset, with size, format details, compression parameters, architecture, file-system metadata, and a confidence level for each find.
Extract embedded content
$ binwalk -e firmware.binPull out recognized files, archives, compressed streams, and file systems using built-in extractors or supported external utilities - no manual offset math or file carving.
Unpack nested firmware
$ binwalk -Me firmware.binRecursively analyze newly extracted files to uncover archives inside file systems, compressed data inside partitions, and the deeper layers of update packages and layered firmware.
Locate unknown regions
$ binwalk --entropy firmware.binGenerate an entropy graph to spot transitions between structured data and high-entropy regions - the compression, encryption, or padding that signatures alone do not explain.
Save structured results
$ binwalk --log=results.json firmware.binExport signature and entropy findings as JSON for automation, reporting, indexing, comparison, or hand-off to other analysis tools.
Review supported signatures
$ binwalk --listList the signatures available in the installed version, their internal names, and the extraction utility associated with each format.
Why Binwalk
Custom Rust parsers, confidence-aware results, and automation-ready output - so a scan is a reliable starting point, not a pile of guesses.
Validation beyond magic bytes
Binwalk v3 uses custom Rust parsers to confirm a structure, calculate an embedded object’s size, and decide where scanning continues - far fewer false positives than byte-signature matching alone.
Confidence on every result
Each detection is graded high (metadata and data validated), medium (sane metadata checks passed), or low (identifying bytes only) - so strong findings are easy to separate from those needing manual review.
Entropy analysis
Visualize data randomness to find where a compressed partition starts and ends, whether an image holds several regions, and which unexplained sections may be encrypted, padded, or unknown.
Focused scans
Large images hold thousands of objects. Exclude noisy media, limit to selected signatures, or search every offset for an exhaustive pass - so results stay readable during time-sensitive work.
Built for automation
JSON output feeds scripts, CI pipelines, and forensic platforms. The Binwalk Rust library integrates directly into applications when command-line execution and JSON parsing are not enough.
Fully local analysis
Everything runs in your own environment - sensitive product images, unreleased builds, and forensic evidence never have to be uploaded. For untrusted samples, work inside a VM or container.
Supported formats
More than 100 file and data signatures across firmware, operating-system, archive, file-system, executable, and security-related formats.
Firmware & boot formats
File systems & disk structures
Compression & archives
Executables & system
Security & cryptographic
Available formats and extraction capabilities vary by Binwalk version and by the external utilities installed on the system.
Who uses Binwalk
From security research to embedded development - wherever firmware and binary data need to be opened up.
Firmware & IoT security research
Map update packages, recover embedded file systems, inspect startup scripts, locate configuration files, and prepare firmware for vulnerability analysis.
Product security & PSIRT teams
Triage firmware from routers, cameras, industrial devices, appliances, automotive systems, and connected products before deeper static analysis or emulation.
Reverse engineering
Separate proprietary containers into smaller components, identify internal boundaries, locate executable code, and reduce how much unknown data must be inspected by hand.
Digital forensics & IR
Extract artifacts from device images, identify embedded payloads, and export structured results for use in repeatable forensic workflows.
Embedded development
Inspect release images, verify expected components, compare firmware layouts, and integrate binary analysis into development or quality-assurance tooling.
Hardware hacking & training
Move quickly from a captured flash image or vendor update file to an extracted root file system, kernel, bootloader, and device-specific configuration.
Install Binwalk
64-bit Linux (Cargo)
Linux is the officially supported platform for Binwalk v3, with Ubuntu-based distributions giving the most predictable setup. Some file systems and archive formats need additional external utilities.
$ cargo install binwalkmacOS & Linux (Homebrew)
Homebrew provides packaged installation for supported macOS and Linux environments.
$ brew install binwalkDocker
Docker gives a reproducible environment with controlled dependencies, well suited to isolated firmware analysis.
$ sudo docker run -t -v "$PWD":/analysis binwalkv3 -Me firmware.binWindows (WSL or Docker)
For the most predictable Windows workflow, run Binwalk inside WSL or Docker. Native Windows builds may compile, but upstream testing and support remain limited.
$ wsl -- cargo install binwalkGet the Binwalk source
Download the Binwalk 3.1.0 source archive to build from source, inspect the implementation, contribute signatures and parsers, or integrate the Rust library into your own project. Analysis stays local - treat extracted code as untrusted and keep unknown samples isolated.
Source archive (.zip) · Binwalk 3.1.0 · MIT License
Frequently asked questions
Start with the binary. Get to the evidence faster.
Map the firmware image, extract its internal components, and identify unexplained regions - open source, MIT licensed, and analyzed entirely on your own machine.