boxmoe_header_banner_img

⋅無⋅限⋅進⋅步⋅

加载中

文章导读

Binwalk使用


avatar
yuhui 2025年10月24日 29

Binwalk使用

安装

$ wget https://github.com/ReFirmLabs/binwalk/archive/master.zip
$ unzip master.zip

1747031126152-ca7315b7-1541-45cf-a88b-2d75cd9f2280.png

1747031297544-c78d9738-8c12-435e-8dc5-d7f2b3708737.png

用法:binwalk [OPTIONS] [FILE1] [FILE2] [FILE3] ...

反汇编扫描选项:
-Y, --disasm 使用 Capstone 反汇编器识别文件的 CPU 架构
-T, --minsn=<int> 指定有效连续指令的最小数量(默认值:500)
-k, --continue 不停止于第一个匹配项

签名扫描选项:
-B, --signature 扫描目标文件中的通用文件签名
-R, --raw=<str> 扫描目标文件中的指定字节序列
-A, --opcodes 扫描目标文件中的通用可执行操作码签名
-m, --magic=<file> 指定要使用的自定义魔法文件
-b, --dumb 禁用智能签名关键字
-I, --invalid 显示已标记的结果无效
-x, --exclude=<str> 排除匹配 <str> 的结果
-y, --include=<str> 仅显示匹配 <str> 的结果

提取选项:
-e, --extract 自动提取已知文件类型
-D, --dd=<type[:ext[:cmd]]> 提取 <type> 类型的签名(正则表达式),将文件扩展名为 <ext>,并执行 <cmd>
-M, --matryoshka 递归扫描提取的文件
-d, --depth=<int> 限制 matryoshka 递归深度(默认值:8 级深度)
-C, --directory=<str> 将文件/文件夹提取到自定义目录(默认值:当前工作目录)
-j, --size=<int> 限制每个提取文件的大小
-n, --count=<int> 限制提取文件的数量
-0, --run-as=<str> 以指定用户的权限执行外部提取实用程序
-1, --preserve-symlinks 不清理指向解压目录之外的已提取符号链接(危险)
-r, --rm 解压后删除已提取的文件
-z, --carve 从文件中提取数据,但不执行解压工具
-V, --subdirs 解压到以偏移量命名的子目录中

熵选项:
-E, --entropy 计算文件熵
-F, --fast 使用更快但更不详细的熵分析
-J, --save 将图保存为 PNG 格式
-Q, --nlegend 忽略熵图的图例
-N, --nplot 不生成熵图
-H, --high=<float> 设置上升沿熵触发阈值(默认值:0.95)
-L, --low=<float> 设置下降沿熵触发阈值(默认值:0.85)

二进制差异选项:
-W, --hexdump 执行文件的十六进制转储/差异
-G, --green 仅显示所有文件中包含相同字节的行
-i, --red 仅显示所有文件中包含不同字节的行
-U, --blue 仅显示部分文件中包含不同字节的行
-u, --similar 仅显示所有文件之间相同的行
-w, --terse 比较所有文件的差异,但仅显示第一个文件的十六进制转储

原始压缩选项:
-X, --deflate 扫描原始的 deflate 压缩流
-Z, --lzma 扫描原始的 LZMA 压缩流
-P, --partial 执行粗略但更快的扫描
-S, --stop 在第一个结果后停止

常规选项:
-l, --length=<int> 扫描的字节数
-o, --offset=<int> 从该文件偏移量开始扫描
-O, --base=<int> 为所有打印的偏移量添加基址
-K, --block=<int> 设置文件块大小
-g, --swap=<int> 扫描前每 n 个字节反转一次
-f, --log=<file> 将结果记录到文件
-c, --csv 将结果以 CSV 格式记录到文件
-t, --term 将输出格式化以适应终端窗口
-q, --quiet 禁止输出到标准输出
-v, --verbose 启用详细输出
-h, --help 显示帮助输出
-a, --finclude=<str> 仅扫描名称与此正则表达式匹配的文件
-p, --fexclude=<str> 不扫描名称与此正则表达式匹配的文件
-s, --status=<int> 在指定端口启用状态服务器

:::info
[注意] Binwalk v2.x 将于 2025 年 12 月 12 日停止服务。请迁移到 binwalk v3.x

:::

固件扫描

Binwalk 主要特征,签名扫描,它可以扫描固件映像以查找许多不同的嵌入式文件类型和文件系统,只需要给它一个要扫描的文件列表

1747031674604-f4fe100c-6da5-463d-98f5-b67a66c68e44.png

-y用于对提供的二进制文件执行基于签名的扫描。它扫描已知的文件类型、页眉和页脚

文件熵分析

如果 Binwalk 没有报告任何签名,会发生什么?或者,你怎么知道 Binwalk 没有错过任何有趣的东西?熵分析可以帮助识别固件映像中有趣的数据部分

-E触发对给定二进制文件的熵分析。它计算不同数据区域的熵,以识别潜在的压缩或加密部分。

1747031902619-a7007887-bb70-47e4-b72a-1d289f0e1c1b.png

当您怀疑二进制文件的某些部分可能被压缩或加密,并且您想定位这些区域时。

您可以将其他扫描与熵扫描相结合。例如,您可以将签名扫描与熵扫描相结合:

binwalk -B -E firmware.bin

文件提取

-e 选项提取固件映像中找到的文件

-M Binwalk会在提取文件时递归扫描文件

-r 选项 任何无法提取的文件签名或导致文件大小为 0 的文件签名都将被自动删除

提取一个特定的签名类型,请指定一个或多个 -D 类型选项

固件分析

Binwalk可帮助您识别固件映像中使用的架构、文件系统和压缩方法

需要深入了解固件映像的内部结构和组件时

-I标志提供有关固件二进制文件中的体系结构、文件系统和压缩方法的信息

自定义扫描

处理默认签名未涵盖的专有文件格式或二进制文件中的特定模式时

可以定义自定义签名和规则来检测二进制数据中的特定模式

binwalk -D="signature:description" firmware.bin

结果可视化

想获得二进制文件组织的高级概述并识别潜在的嵌入式文件时

Binwalk可以创建它所找到的数据的可视化,从而更容易理解二进制文件的结构

binwalk -G firmware.bin

组件扫描

分析固件结构

首先使用 <font style="color:rgb(77, 77, 77);">binwalk</font> 分析固件的整体结构,找到可能包含第三方组件的文件系统或压缩包

binwalk 462AFK0C0.bin

提取文件系统和嵌套内容

binwalk -Me 462AFK0C0.bin

更新: 2025-05-12 17:48:18
原文: https://www.yuque.com/yuhui.net/network/vag9i4fo8xuffp7t



评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字

插入代码