二进制数据中有意义字符串提取方法和系统技术方案

技术编号:9618275 阅读:169 留言:0更新日期:2014-01-30 06:05
本发明专利技术公开了一种二进制数据中的字符串提取方法,包括首先从二进制数据中读取所有的可显示字符组成的字符串,然后将所提取的每个字符串拆分为可显示字符组合,计算获得字符组合的概率差异表之后,利用概率差异算法区分所有提取的字符串获得初步的有意义字符串和无意义字符串,并进一步通过熵值法去除不准确的有意义字符串则得到最终所提取的字符串结果。本发明专利技术还公开了一种二进制数据中的字符串提取系统。使用本发明专利技术的技术方案可以提取任意格式的二进制数据包括磁盘文件、磁盘镜像、网络数据等。同时可以提取人类可读的字符串,大大提高了提取字符串的效率。

Method and system for extracting meaningful string in binary data

The invention discloses a method for extracting binary data in the string, including the first read all can display string characters from binary data, and then extracted for each string split display character combination, after the calculation of probability difference of character combinations, using probability difference algorithm to distinguish all extracted strings obtained preliminary meaningful and meaningless string string, and further through the entropy method to remove inaccurate meaningful string string to be extracted from the final results. The invention also discloses a string extraction system in binary data. By using the technical scheme of the invention, binary data in any format can be extracted, including disk files, disk mirroring, network data, etc.. At the same time, human readable strings can be extracted, greatly improving the efficiency of extracting strings.

【技术实现步骤摘要】
二进制数据中有意义字符串提取方法和系统
本专利技术涉及计算机软件、网络通信等数据检查提取分析,特别是信息安全领域的数据分析。
技术介绍
目前的二进制中提取字符串主要是针对可执行文件为提取对象,提取出来的是可以显示字符,对于其它二进制格式比如专门的数据库文件、磁盘镜像、网络数据没有通用性,并且提取到的字符串包含很多人类难以理解的垃圾数据。当前对二进制数据提取字符串主要是通过IDA、Ollydbg等反汇编工具对可执行文件进行反汇编,在反汇编时如果发现指令的操作数中包含地址则试着去判断这些地址中的数据是否可以显示。找到所有的地址,并检查地址是否是一个可显示的字符串罗列出来。这种方法中的二进制数据必须是可以反汇编的,对于其它二进制格式这个方法就无法提取,并且能够提取的也包含很多人类不可理解的垃圾字符串;而且字符串如果只是作为可执行文件的数据就不会被反汇编地址引用,这种方法也无法发现这些字符串。
技术实现思路
针对现有字符提取方法的不足,本专利技术提出了一种任意二进制数据人类可理解字符串提取算法。该算法可以提取任意格式的二进制数据,包括磁盘文件、磁盘镜像、网络数据等。同时可以提取人类可读的字符串,在速度上也比传统的反汇编方式提取字符串要快速很多。首先介绍本专利技术一种二进制数据中的字符串提取方法,包括以下步骤: 步骤1,打开二进制数据缓冲区,将二进制数据的开始位置定位为当前位置; 步骤2,判断如果当前位置是二进制数据的结束位置则进行步骤5,否则从当前位置读取一个字节的二进制数据,然后进行步骤3 ; 步骤3,判断所述字节的二进制数据是否存在于预先构造好的可显示字符表中;所述可显示字符表是指包括介于0x20和0x7e之间的ASCII值的字符表; 如果所述字节的二进制数据不存在于预先构造好的可显示字符表中,则将所述二进制数据当前位置跳跃预设字节数,继续步骤2 ; 所述方法中,所述预设字节数可以选为4个字节或者5个字节。如果当然位置距二进制数据的结束位置的长度小于预设字节数,则当前位置跳跃到二进制数据的结束位置,继续步骤2 ; 如果所述字节的二进制数据存在于预先构造好的可显示字符表中,则进行步骤4 ; 步骤4,判断如果当前位置之后的二进制数据中包含连续可显示字符的长度不小于预设字节数,则从当前位置开始提取字符串,如果遇到O或者连续可显示字符的长度超过512字节,则提取所述字符串结束,保存所获得的可显示字符组成的字符串,当前位置跳跃到所获取字符串所在二进制数据中的结尾位置,继续步骤2 ;判断如果当前位置之后的二进制数据中包含连续可显示字符的长度小于预设字节数,则不保存所述连续可显示字符,当前位置直接跳跃到所述连续可显示字符的结尾位置,继续步骤2 ; 所述可显示字符是指可显示字符表中的字符; 步骤5,分别将所提取的每个字符串拆分为可显示字符组合,所述可显示字符组合包括单字节、连续双字节、单词4表示所述字符串拆分得到的可显示字符组合的集合,每个可显示字符组合用Si表示,S表示所有可显示字符组合的集合,Si e S; 无意义字符串集合M是预先准备的长度不小于预设字节数的可显示字符串中经过人工挑选的人类无法识别的字符串的集合;有意义字符串集合T,是预先准备的长度不小于预设字节数的可显示字符串中经过人工挑选的人类可以理解的字符串的集合; PM(Si)表示字符组合Si在无意义字符串集合M中出现的概率;PT(Si)表示字符组合Si在有意义字符串集合T中出现的概率;计算本文档来自技高网...

【技术保护点】
一种二进制数据中的字符串提取方法,其特征在于,包括:步骤1,打开二进制数据缓冲区,将二进制数据的开始位置定位为当前位置;步骤2,判断如果当前位置是二进制数据的结束位置则进行步骤5,否则从当前位置读取一个字节的二进制数据,然后进行步骤3;步骤3,判断所述字节的二进制数据是否存在于可显示字符表中;所述可显示字符表是预先构造好的由介于0x20和0x7e之间的ASCII值组成的字符表;如果所述字节的二进制数据不存在于可显示字符表中,则将所述二进制数据当前位置跳跃预设字节数,继续步骤2;如果所述字节的二进制数据存在于可显示字符表中,则进行步骤4;步骤4,判断如果当前位置之后的二进制数据中包含连续可显示字符的长度不小于预设字节数,则从当前位置开始提取字符串,如果遇到0或者连续可显示字符的长度超过512字节,则提取所述字符串结束,保存所获得的可显示字符组成的字符串,当前位置跳跃到所获取字符串所在二进制数据中的结尾位置,继续步骤2;?判断如果当前位置之后的二进制数据中包含连续可显示字符的长度小于预设字节数,则不保存所述连续可显示字符,当前位置直接跳跃到所述连续可显示字符的结尾位置,继续步骤2;所述可显示字符是指可显示字符表中的字符;步骤5,分别将所提取的每个字符串拆分为可显示字符组合,所述可显示字符组合包括单字节、连续双字节、单词;A表示所述字符串拆分得到的可显示字符组合的集合,每个可显示字符组合用si表示,S表示所有可显示字符组合的集合,si∈S;无意义字符串集合M是预先准备的长度不小于预设字节数的可显示字符串中经过人工挑选的人类无法识别的字符串的集合;有意义字符串集合T,是预先准备的长度不小于预设字节数的可显示字符串中经过人工挑选的人类可以理解的字符串的集合;PM(si)表示字符组合si在无意义字符串集合M中出现的概率;PT(si)表示字符组合si在有意义字符串集合T中出现的概率;计算????????????????????????????????????????????????,表示所述字符组合si的贡献度;计算,其中V为所述字符串的贡献度和,表示所述字符组合?si的贡献度,;根据所述公式计算所提取的每个字符串的贡献度和,初步判断贡献度和大于0的字符串为无意义字符串,贡献度和小于0的字符串为有意义字符串;步骤6,计算每个所述有意义字符串的熵值,去除熵值小于预设值的有意义字符串,则其他有意义字符串为最终所提取的字符串结果。682888dest_path_image002.jpg,565393dest_path_image004.jpg,2012102439669100001dest_path_image006.jpg,42511dest_path_image004.jpg,dest_path_image008.jpg...

【技术特征摘要】
1.一种二进制数据中的字符串提取方法,其特征在于,包括: 步骤1,打开二进制数据缓冲区,将二进制数据的开始位置定位为当前位置; 步骤2,判断如果当前位置是二进制数据的结束位置则进行步骤5,否则从当前位置读取一个字节的二进制数据,然后进行步骤3 ; 步骤3,判断所述字节的二进制数据是否存在于可显示字符表中;所述可显示字符表是预先构造好的由介于0x20和0x7e之间的ASCII值组成的字符表; 如果所述字节的二进制数据不存在于可显示字符表中,则将所述二进制数据当前位置跳跃预设字节数,继续步骤2; 如果所述字节的二进制数据存在于可显示字符表中,则进行步骤4 ; 步骤4,判断如果当前位置之后的二进制数据中包含连续可显示字符的长度不小于预设字节数,则从当前位置开始提取字符串,如果遇到O或者连续可显示字符的长度超过512字节,则提取所述字符串结束,保存所获得的可显示字符组成的字符串,当前位置跳跃到所获取字符串所在二进制数据中的结尾位置,继续步骤2 ; 判断如果当前位置之后的二进制数据中包含连续可显示字符的长度小于预设字节数,则不保存所述连续可显示字符,当前位置直接跳跃到所述连续可显示字符的结尾位置,继续步骤2 ; 所述可显示字符是指可显示字符表中的字符; 步骤5,分别将所提取的每个字符串拆分为可显示字符组合,所述可显示字符组合包括单字节、连续双字节、单词4表示所述字符串拆分得到的可显示字符组合的集合,每个可显示字符组合用Si表示,S表示所有可显示字符组合的集合,Si e S; 无意义字符串集合M是预先准备的长度不小于预设字节数的可显示字符串中经过人工挑选的人类无法识别的字符串的集合;有意义字符串集合T,是预先准备的长度不小于预设字节数的可显示字符串中经过人工挑选的人类可以理解的字符串的集合; PM(Si)表示字符组合Si在无意义字符串集合M中出现的概率;PT(Si)表示字符组合Si在有意义字符串集合T中出现的概率;Si的贡献度; 计算P其中V为所述字符串的贡献度和,0..表示所述字符组合Si的贡献II I s i it Λ度,則 根据所述公式计算所提取的每个 字符串的贡献度和,初步判断贡献度和大于O的字符串为无意义字符串,贡献度和小于O的字符串为有意义字符串; 步骤6,计算每个所述有意义字符串的熵值,去除熵值小于预设值的有意义字符串,则其他有意义字符串为最终所提取的字符串结果。2.如权利要求1所述的二进制数据中的字符串提取方法,其特征在于,所述预设字节数为...

【专利技术属性】
技术研发人员:康学斌田彻
申请(专利权)人:哈尔滨安天科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1