对工具人来说,我们对工具有着异乎常人的喜欢,me too
今天推荐个关于熵的py工具,官方介绍为:entropeer will dig secrets out of a file or a folder returning strings with high shannon entropy or secrets matching some rules. This can be used to quickly pull secret keys out of a large collection of files like a local sourcecode repo.(entropeer 将从文件或文件夹中挖掘Secret,返回具有高香农熵的字符串或匹配某些规则的Secret。这可用于快速从大量文件(例如本地源代码存储库)中提取密钥)。
关于熵,曾经有过一些了解,但不深,前两年写了个“VC/TC加密容器文件的识别”的工具,当时某厂商人员看了感兴趣,拿了一堆文件来测试,最终被7Z的分卷压缩给打败了,识别不出来那堆“乱七八糟”的文件,误报率解决不掉(当然如果辅助一些字节倍数判断的方法也能凑合,但底气不足)。因为遥不可及,这几年也没有去了解熵的最新进展情况,毕竟离我太远了,能力够不到。
查了下GPT,给了一些回答:
1、熵的定义
熵(Entropy)是信息论中用于衡量随机变量不确定性的概念。在计算机科学和数据分析领域,熵常被用于评估数据集的纯度或信息量。熵就是Shannon熵,即信息熵,解决了对信息的量化度量问题。
熵的定义
在信息论中,熵被定义为随机变量的不确定度或信息平均量。对于一个离散随机变量X,其熵H(X)的计算公式为:
H(X) = -Σ P(x) * log2(P(x))
其中,P(x)表示随机变量X取值为x的概率,Σ表示对所有可能取值进行求和,log2表示以2为底的对数运算。
2、熵的应用
熵的应用涉及多个领域,因此成功示例将取决于具体的应用场景。
Peid中就有计算熵值的功能,当熵的值超过一定阈值时,则该PE或某段被加壳(Packed)。熵值大,就说明PE文件携带信息量多,就意味着PE文件可能被加壳了。当然,道高一尺魔高一丈,“低熵加壳”是一个方向。
以下是一些通用领域的例子,其中包括信息理论、机器学习、密码学等:
看python用起来还是挺简单的,现在提供了很多不同的熵包,用于计算各种形式的熵和信息的python包。
3、本文的py程序,见如下:
https://github.com/TheZ3ro/entropeer
安装
python setup.py build
python setup.py install
./enrtopeer
4、用法:
usage: entropeer [-h] [-f FILE | -d DIRECTORY] [-r] [-E | -X] [--rules RULES] [-M] [-v] [-t THREADS] [-V]Search files for strings with high shannon entropy.
optional arguments:
-h, --help show this help message and exit
-f FILE, --filename FILE
File to search.
-d DIRECTORY, --directory DIRECTORY
Search all files in directory.
-r, --recurse Search directories recursively starting in the current directory. Use with -d
-E, --entropy Enable entropy checks
-X, --regex Enable high signal regex checks
--rules RULES Load external rules from json list file
-M, --match-only Print only the matching string
-v, --verbose Verbose output
-t THREADS, --threads THREADS
Number of threads/processes to start
-V, --version show program's version number and exit
5、一些
1)本目录下查找
./entropeer
2)带目录
./entropeer -d [dir] -r
3)带熵
./entropeer -Edr [dir]
4)带正则
算了,不说了,自己用吧,里面带了一个json的关键字,可以补充。
关于这些正则是什么意思,有个简单的方法,将这些正则放到GPT里面,一查就知道了。