packing-box/bintropy
GitHub: packing-box/bintropy
基于熵值分析的多平台二进制文件加壳检测工具,支持 PE/ELF/Mach-O 格式,帮助快速判断可执行文件是否包含压缩或加密数据。
Stars: 48 | Forks: 4

Bintropy 
Detect packers on PE/ELF/Mach-O files using entropy.
[](https://pypi.python.org/pypi/bintropy/) [](https://pypi.python.org/pypi/bintropy/) [](https://github.com/packing-box/bintropy/actions/workflows/python-package.yml) [](https://zenodo.org/badge/latestdoi/382563382) [](https://pypi.python.org/pypi/bintropy/) 该工具是 Bintropy 的 Python 实现版本,Bintropy 是在[这篇论文](https://ieeexplore.ieee.org/document/4140989)中提出的一种基于熵进行加壳检测的分析工具。它实现了论文中的两种操作模式以及一种额外的模式,分别针对整个二进制文件、每个节(section)或每个段(segment)。它使用[论文](https://ieeexplore.ieee.org/document/4140989)中提到的熵值来判断二进制文件是否包含压缩/加密的字节。 它依赖 [`lief`](https://github.com/lief-project/LIEF) 来抽象 **PE**、**ELF** 或 **Mach-O** 可执行文件。因此,该工具支持这三种格式。 ``` $ pip install bintropy ``` ``` $ bintropy --help ``` ### 操作模式 使用 `-m`/`--mode` 选项。 - `0`:整个二进制文件(默认) - `1`:按节 - `2`:按段 请注意,模式 2 在逻辑上会给出与模式 0 非常相似的结果。 ``` $ bintropy binary <<< boolean >>> $ bintropy binary --dot-not-decide <<< highest block entropy, average block entropy >>> ``` ``` $ bintropy binary --mode [1|2] <<< boolean >>> $ bintropy binary -m [1|2] --do-not-decide <<< highest block entropy, average block entropy >>> ``` ### 基准测试 使用 `-b`/`--benchmark` 选项可获取一个额外的值,即以秒为单位的处理时间。 ``` $ bintropy binary -b <<< boolean, processing time >>> $ bintropy binary -b --do-not-decide <<< highest block entropy, average block entropy, processing time >>> ``` ### 覆盖默认熵值 [参考论文](https://ieeexplore.ieee.org/document/4140989)使用 6.677 作为平均块熵,7.199 作为最高块熵(通过分析 PE 文件数据集并使用第一种操作模式得出)。这些值可以通过专用选项进行覆盖。 ``` $ bintropy binary --threshold-average-entropy 5.678 --threshold-highest-entropy 6.789 [...] ``` ### 绘图 该工具具有生成图表的功能,用于绘制二进制文件的节及其内部的熵。 ``` $ bintropy binary --plot <<< boolean >>> ``` 生成的图形示例:
标签:DAST, DNS 反向解析, ELF文件, LIEF, Mach-O, PE文件, Python, 二进制分析, 二进制安全, 二进制样本, 云安全监控, 云安全运维, 云资产清单, 加壳检测, 加密识别, 壳识别, 恶意软件分析, 数据压缩, 文件格式解析, 无后门, 熵分析, 逆向工具, 逆向工程, 静态分析