常用binwalk命令:
代码语言:javascript复制#文件提取
binwalk -e filename
#签名分析
binwalk -B filename
#熵分析
binwalk -E filename
#搜索字符串,包括转义的八进制或十六进制
binwalk -R "x00x01x02x03x04" filename
#搜索各种CPU架构常见的可执行操作码
binwalk -A filename
参数: 文件签名扫描选项:
代码语言:javascript复制-B, --signature #使用常见的文件签名扫描目标文件
-R, --raw=<str> #使用指定字节序列扫描目标文件
-A, --opcodes #使用普通可执行操作码签名扫描目标文件
-m, --magic=<file> #使用指定的特殊格式文件
-b, --dumb #禁用智能签名关键字
-I, --invalid #显示标记为无效的结果
-x, --exclude=<str> #排除与str相匹配的结果
-y, --include=<str> #只显示与str相匹配的结果
提取选项:
代码语言:javascript复制-e, --extract #自动提取已知的文件类型
-D, --dd=<type:ext:cmd> #提取类型的签名<type>, 文件扩展名为 <ext>, 执行的命令 <cmd>
-M, --matryoshka #递归扫描提取文件
-d, --depth=<int> #限制-M递归的范围 (默认值: 8次)
-C, --directory=<str> #提取文件或文件夹至指定文件夹 (默认值: 当前工作文件夹)
-j, --size=<int> #限制每个提取文件的大小
-n, --count=<int> #限制提取文件的数量
-r, --rm #清除在提取过程中提取工具无法处理的零大小文件。
-z, --carve #从文件中切割数据,但是不执行提取程序
熵分析选项:
代码语言:javascript复制-E, --entropy #计算文件熵
-F, --fast #使用快速但是不详细的熵分析
-J, --save #自动将由-E生成的的熵图保存为PNG文件而不是直接显示。
-Q, --nlegend #将熵图的说明省略
-N, --nplot #不生成熵图
-H, --high=<float> #设置上升边缘熵触发阈值 (默认值: 0.95)
-L, --low=<float> #设置下降边缘熵触发阈值 (默认值: 0.85)
二进制比较选项:
代码语言:javascript复制-W, --hexdump #执行输入文件的十六进制转储(s)和颜色编码区分:绿色—这些字节在所有文件中都是相同的。红色-这些字节在所有文件中都是不同的。蓝色—这些字节在某些文件中是不同的。
-G, --green #只显示在所有文件中都相同的字节所在的行
-i, --red #只显示在所有文件中都不相同的字节所在的行
-U, --blue #只显示在某些文件中都不相同的字节所在的行
-w, --terse #比较所有文件,但是只显示第一个文件的16进制转储
原始压缩选项:
代码语言:javascript复制-X, --deflate #用蛮力识别可能的原始压缩数据流
-Z, --lzma #扫描原始LZMA压缩流
-P, --partial #只使用常用的压缩选项搜索压缩流,速度快。
-S, --stop #在获得第一个结果后停止
通用选项:
代码语言:javascript复制-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 #启用详细输出,包括目标文件MD5和扫描时间戳。
-h, --help #显示帮助信息
-a, --finclude=<str> #只扫描文件名匹配正则表达式的文件
-p, --fexclude=<str> #不扫描文件名匹配正则表达式的文件
-s, --status=<int> #在指定端口启动状态服务器