一段寻找Secret的py熵代码
2023-11-17 14:0:29 Author: MicroPest(查看原文) 阅读量:13 收藏

      对工具人来说,我们对工具有着异乎常人的喜欢,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里面,一查就知道了。


文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NDcxMDQzNA==&mid=2247487935&idx=1&sn=62b95ce07c6158c5f8fa1db7998dc784&chksm=a682c77291f54e64734a40c8e3860ddd5b9eed2da8d6f87d8e4a07ca75d427ae9975ba75fd44&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh