代码位置:cuckoo\\processing\\strings.py
代码整理后如下:
#coding:utf-8
import re
data=open("filepath","rb").read() # 一定要以二进制形式读取文件的全部内容,否则你会发现匹配出来的字符串不全
strings_A = re.findall("[ -~]{1,}",data) # 读取1个以上的单字节连续可显示字符(0x20-0x7e)
strings_W = re.findall("(?:[ -~]\x00){1,}",data): # 读取1个以上的unicode编码的连续可显示字符
return strings_A,strings_W
大概就是以二进制形式读取文件之后,使用正则表达式做匹配。
其中(?:[ -~]\x00)应该是把2个字节作为一个基本单位进行匹配,
若是(?:[ -~]\x00\x00)应该是把3个字节作为一个基本单位进行匹配。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL1EDN5ETOxgTM4IDNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
注意在ida的字符串窗口中看到\t、\n也显示在字符串中,可以在正则表达式的[ ]中加入\t、\n,如下:
[ -~\\t\\n] 或者 [ -~\x09\x0a]
对于中文语系,可以使用专门匹配汉字的正则表达式