CN111563063A - 一种基于HashMap识别文件类型的方法 - Google Patents
一种基于HashMap识别文件类型的方法 Download PDFInfo
- Publication number
- CN111563063A CN111563063A CN202010398302.4A CN202010398302A CN111563063A CN 111563063 A CN111563063 A CN 111563063A CN 202010398302 A CN202010398302 A CN 202010398302A CN 111563063 A CN111563063 A CN 111563063A
- Authority
- CN
- China
- Prior art keywords
- file
- hash
- hashmap
- pointer
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
- G06F16/152—File search processing using file content signatures, e.g. hash values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于HashMap识别文件类型的方法,所述方法为:预先设定已知文件类型,根据文件类型的特殊标签值前2字节计算hash值并建立一个HashMap表;程序运行中,计算文件指针前2字节的hash值并查找HashMap表,若未发现存在,指针后移,发现存在则比对完整特殊标签值,若找到则确认文件类型,否则指针后移继续比对,本发明能快速识别文件类型,且识别准确率高。
Description
技术领域
本发明涉及网络通讯技术领域,特别是一种基于HashMap识别文件类型的方法。
背景技术
目前,识别文件类型可以通过:1、根据常见ASCII字符串识别,如(“<html>”,“#!/bin/sh”)。2、对于没有此字符串特征的识别使用“幻数”,指定是通过搜索文件头含有某种文件类型的特殊标签值来判断,如MS-DOS采用“MZ”,java的.class文件“0xcafebase”,Rar5的“0x526172211a0701”,通过此来识别。但是别有意者可能通过组合文件来使识别失败。如使用了前面填充“html”类型,后面放置真正的压缩包,使文件识别失败。现有技术中如果按顺序逐个字符比对,将特别耗时。为解决此问题,本发明提供了一种基于HashMap识别文件类型的方法。
专业术语:文件指针:待检测文件打开后数据放入内存中的位置。特殊标签值:属于每种文件类型的一串不定长大小的数据。
发明内容
为克服上述问题,本发明的目的是提供一种基于HashMap识别文件类型的方法,能快速识别文件类型,且识别准确率高。
本发明采用以下方案实现:一种基于HashMap识别文件类型的方法,所述方法包括创建HashMap阶段和寻找文件类型阶段:
所述创建HashMap阶段为:预先设定已知的文件类型,遍历n个的文件类型进行操作,即根据文件类型的特殊标签值的前2字节计算hash值,并将各个文件类型对应得到的hash值、第n个文件类型形成一个HashMap表;
所述寻找文件类型阶段为:程序运行时,判断文件指针指向文件开头位置是否为初始值,是,则指针后移,不是则计算待检测文件指针前2字节的hash值并查找HashMap表中是否存在,若未发现存在,指针后移,进行计算指针后移的2个字节的hash值进行比对,直至找到为止,若发现存在,则比对待检测文件当前指针指向数据与HashMap表对应的文件类型的特殊标签值是否完全相同,若相同,即能确认文件类型。
进一步的,所述创建HashMap阶段进一步具体为:创建Hash数组和Prev数组,两数组初始化填充0xff;
程序运行期间,遍历预先设定已知的文件类型,将第1个文件类型到第n个文件类型都进行处理:即根据第n种文件类型特殊标签值的前2字节计算得hash值v,将Hash数组位于v的值更换为n,并将原来的值存储到Prev[n],如此循环构建一个以Hash数组和Prev数组的HashMap表。
进一步的,所述Hash数组大小必须大于等于最大hash值,所述Prev数组大小必须大于等于文件类型数。
进一步的,所述寻找文件类型阶段进一步包括如下步骤:
步骤1、指定待检测文件,打开文件获得文件指针,此时文件指针指向文件开头位置;
步骤2、判断文件指针是否处于文件最后1字节,是,则结束流程,否,则进入步骤3;
步骤3、计算文件指针指向前2字节的hash值v,将hash值v到HashMap表中查找,即n=Hash[v],找到hash值对应的文件类型;
步骤4、判断n是不是初始值0xff,是,则表示此时并没有找到符合存在类型,文件指针向后移动1字节进入步骤2继续查找,否,则进入步骤5;
步骤5、得到第n种文件类型的特殊标签值,与文件指针指向的数据进行比较,如果不相符的话,计算n=prev[n],进入步骤4;否则即为识别到文件。
本发明的有益效果在于:1、本发明有利于追踪部分伪装文件,伪装文件为:表现为文件前面填充异常字符,而后续才填充正常的二进制信息,识别准确率高;
2、可以提高识别速度,比较与逐个字符识别利用HashMap速度快指数倍,效率高。
附图说明
图1是本发明的方法流程示意图。
图2是本发明的创建HashMap流程示意图。
图3是本发明的识别文件类型流程示意图。
图4是本发明一实施例中文件首位置示意图。
图5是本发明一实施例中文件Zip信息位置示意图。
具体实施方式
下面结合附图对本发明做进一步说明。
请参阅图1所示,本发明的一种基于HashMap识别文件类型的方法,所述方法包括创建HashMap阶段和寻找文件类型阶段:
所述创建HashMap阶段为:预先设定已知的文件类型,遍历n个的文件类型进行操作,即根据文件类型的特殊标签值的前2字节计算hash值,并将各个文件类型对应得到的hash值、第n个文件类型形成一个HashMap表;
所述寻找文件类型阶段为:程序运行时,判断文件指针指向文件开头位置是否为初始值,是,则指针后移,不是则计算待检测文件指针前2字节的hash值并查找HashMap表中是否存在,若未发现存在,指针后移,进行计算指针后移的2个字节的hash值进行比对,直至找到为止,若发现存在,则比对待检测文件当前指针指向数据与HashMap表对应的文件类型的特殊标签值是否完全相同,若相同,即能确认文件类型。
本发明涉及结构:HashMap表、构建HashMap程序、查找文件类型程序。
如图2所示,所述创建HashMap阶段进一步具体为:创建Hash数组和Prev数组,两数组初始化填充0xff;所述Hash数组大小必须大于等于最大hash值,所述Prev数组大小必须大于等于文件类型数。
程序运行期间,遍历预先设定已知的文件类型,将第1个文件类型到第n个文件类型都进行处理:即根据第n种文件类型特殊标签值的前2字节计算得hash值v,将Hash数组位于v的值更换为n,并将原来的值存储到Prev[n],(也就是说此处v是前2字节计算得的hash值。Hash[v]=n表示Hash数组位于v的位置替换为n,并将Hash数组位于v的值存储到Prev[n])如此循环构建一个以Hash数组和Prev数组的HashMap表。即
Hash数组 | Prev数组 |
如图3所示,所述寻找文件类型阶段进一步包括如下步骤:
步骤1、指定待检测文件,打开文件获得文件指针,此时文件指针指向文件开头位置;
步骤2、判断文件指针是否处于文件最后1字节,是,则结束流程,否,则进入步骤3;
步骤3、计算文件指针指向前2字节的hash值v,将hash值v到HashMap表中查找,即n=Hash[v],找到hash值对应的文件类型;
步骤4、判断n是不是初始值0xff,是,则表示此时并没有找到符合存在类型,文件指针向后移动1字节进入步骤2继续查找,否,则进入步骤5;
步骤5、得到第n种文件类型的特殊标签值,与文件指针指向的数据进行比较,如果不相符的话,计算n=prev[n],进入步骤4;否则即为识别到文件。
下面结合一具体实施例对本发明作进一步说明:
如:一个Zip压缩文件表现为前面填充html信息,后面才有正常的压缩文件二进制信息。1、文件首位置(如图4所示);2、文件Zip信息位置(如图5所示)
1)假如我们要识别并提取的压缩包资源。假设已知Rar5、Zip、7z文件类型。其中Rar5特殊标签值为“0x526172211a0701”共7字节;Zip为“0x504B0304”,“0x504B0506”,“0x504B0708504B”,“0x504B3030504B”,有4种;7z为“0x377ABCAF271C”,总共有6种。
2)新建HashMap对象,其中有Hash[65516],Prev[256]数组,并初始化0xff。
3)循环读取每个特殊标签值(“0x526172211a0701”,“0x504B0304”,“0x504B0506”,“0x504B0708504B”,“0x504B3030504B”,“0x377ABCAF271C”),前2个字节hash值,假设第n=0个如0x5216(即特殊标签值“0x526172211a0701”的前2个字节)计算得到2482,则v=2482。存储Hash[2482]值到Prev[0]中(对计算机数组来说Hash[2482]指的是Hash位于2482的位置的值)。第n=1个0x504B(即特殊标签值“0x504B0304”的前2个字节)得5346,则v=5346。存储Hash[5346]值到Prev[1]中。后续如此。也就是说这边有6种文件类型,将6种文件类型用0、1、2、3、4、5进行对应;
则HashMap表为
Hash数组 | Prev数组 |
0 | Hash[2482] |
1 | Hash[5346] |
2 | 。。。 |
3 | 。。。 |
4 | 。。。 |
5 | 。。。 |
4)得到欲识别的待检测文件指针,计算前2字节0x3C21,计算hash得到xxx1发现Hash[xxx1]中值为0xff,不符合,则指针后移,得到0x2026再次计算hash得到xxx2,发现Hash[xxx2]也是0xff,如此循环。
5)直到指针指向0x504B,计算得到hash值v=5346,发现Hash[5346]等于1,则n=1,查找第n个文件类型特殊标签值,发现完整特殊标识符为“0x504B0304”共4字节,于是比对待检测文件当前指针指向数据前4个字节,发现也是“0x504B0304”。表明识别到文件并从此导出。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (4)
1.一种基于HashMap识别文件类型的方法,其特征在于:所述方法包括创建HashMap阶段和寻找文件类型阶段:
所述创建HashMap阶段为:预先设定已知的文件类型,遍历n个的文件类型进行操作,即根据文件类型的特殊标签值的前2字节计算hash值,并将各个文件类型对应得到的hash值、第n个文件类型形成一个HashMap表;
所述寻找文件类型阶段为:程序运行时,判断文件指针指向文件开头位置是否为初始值,是,则指针后移,不是则计算待检测文件指针前2字节的hash值并查找HashMap表中是否存在,若未发现存在,指针后移,进行计算指针后移的2个字节的hash值进行比对,直至找到为止,若发现存在,则比对待检测文件当前指针指向数据与HashMap表对应的文件类型的特殊标签值是否完全相同,若相同,即能确认文件类型。
2.根据权利要求1所述的一种基于HashMap识别文件类型的方法,其特征在于:所述创建HashMap阶段进一步具体为:创建Hash数组和Prev数组,两数组初始化填充0xff;
程序运行期间,遍历预先设定已知的文件类型,将第1个文件类型到第n个文件类型都进行处理:即根据第n种文件类型特殊标签值的前2字节计算得hash值v,将Hash数组位于v的值更换为n,并将原来的值存储到Prev[n],如此循环构建一个以Hash数组和Prev数组的HashMap表。
3.根据权利要求2所述的一种基于HashMap识别文件类型的方法,其特征在于:所述Hash数组大小必须大于等于最大hash值,所述Prev数组大小必须大于等于文件类型数。
4.根据权利要求2所述的一种基于HashMap识别文件类型的方法,其特征在于:所述寻找文件类型阶段进一步包括如下步骤:
步骤1、指定待检测文件,打开文件获得文件指针,此时文件指针指向文件开头位置;
步骤2、判断文件指针是否处于文件最后1字节,是,则结束流程,否,则进入步骤3;
步骤3、计算文件指针指向前2字节的hash值v,将hash值v到HashMap表中查找,即n=Hash[v],找到hash值对应的文件类型;
步骤4、判断n是不是初始值0xff,是,则表示此时并没有找到符合存在类型,文件指针向后移动1字节进入步骤2继续查找,否,则进入步骤5;
步骤5、得到第n种文件类型的特殊标签值,与文件指针指向的数据进行比较,如果不相符的话,计算n=prev[n],进入步骤4;否则即为识别到文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010398302.4A CN111563063B (zh) | 2020-05-12 | 2020-05-12 | 一种基于HashMap识别文件类型的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010398302.4A CN111563063B (zh) | 2020-05-12 | 2020-05-12 | 一种基于HashMap识别文件类型的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111563063A true CN111563063A (zh) | 2020-08-21 |
CN111563063B CN111563063B (zh) | 2022-09-13 |
Family
ID=72073373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010398302.4A Active CN111563063B (zh) | 2020-05-12 | 2020-05-12 | 一种基于HashMap识别文件类型的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111563063B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070250521A1 (en) * | 2006-04-20 | 2007-10-25 | Kaminski Charles F Jr | Surrogate hashing |
CN102571767A (zh) * | 2011-12-24 | 2012-07-11 | 成都市华为赛门铁克科技有限公司 | 文件类型识别方法及文件类型识别装置 |
CN103209170A (zh) * | 2013-03-04 | 2013-07-17 | 汉柏科技有限公司 | 文件类型识别方法及识别系统 |
CN103701821A (zh) * | 2013-12-31 | 2014-04-02 | 北京网康科技有限公司 | 文件类型识别方法及装置 |
-
2020
- 2020-05-12 CN CN202010398302.4A patent/CN111563063B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070250521A1 (en) * | 2006-04-20 | 2007-10-25 | Kaminski Charles F Jr | Surrogate hashing |
CN102571767A (zh) * | 2011-12-24 | 2012-07-11 | 成都市华为赛门铁克科技有限公司 | 文件类型识别方法及文件类型识别装置 |
CN103209170A (zh) * | 2013-03-04 | 2013-07-17 | 汉柏科技有限公司 | 文件类型识别方法及识别系统 |
CN103701821A (zh) * | 2013-12-31 | 2014-04-02 | 北京网康科技有限公司 | 文件类型识别方法及装置 |
Non-Patent Citations (1)
Title |
---|
曹鼎等: "基于变长元组的文件类型识别算法", 《计算机应用》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111563063B (zh) | 2022-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11347787B2 (en) | Image retrieval method and apparatus, system, server, and storage medium | |
CN111027048B (zh) | 一种操作系统识别方法、装置、电子设备及存储介质 | |
CN108134775B (zh) | 一种数据处理方法和设备 | |
CN113901474B (zh) | 一种基于函数级代码相似性的漏洞检测方法 | |
CN110245028B (zh) | IoT-MQ的消息存储方法、装置、计算机设备和存储介质 | |
US20170017717A1 (en) | Sequence Data Analyzer, DNA Analysis System and Sequence Data Analysis Method | |
CN111432003B (zh) | 应用于云计算的数据推送方法、装置、电子设备及系统 | |
CN102722554A (zh) | 位置敏感哈希随机性减弱方法 | |
CN111563063B (zh) | 一种基于HashMap识别文件类型的方法 | |
CN111723097A (zh) | 应用程序接口配置方法、装置、计算机设备和存储介质 | |
US20120278356A1 (en) | Resembling character-code-group search supporting method, resembling candidate extracting method, and resembling candidate extracting apparatus | |
CN107895130A (zh) | 一种基于碰撞树的自适应多叉树防碰撞方法 | |
CN112559629B (zh) | 一种基于日志解析同步的大对象初始化方法与装置 | |
CN102073682B (zh) | 一种基于编码方式的文档数据恢复系统及其快速恢复方法 | |
CN117113804A (zh) | 一种基于树分裂的rfid丢失标签识别方法 | |
CN109743362B (zh) | 一种应用于全格式数据结构的数据存储方法 | |
CN109271383B (zh) | 动态标签处理方法、装置、计算机设备和存储介质 | |
CN114995880B (zh) | 一种基于SimHash的二进制代码相似性比对方法 | |
CN108509618B (zh) | 一种基于空间填充曲线的大数据多维数据索引方法 | |
US20160253374A1 (en) | Data file writing method and system, and data file reading method and system | |
CN103823761A (zh) | 一种提升终端黑名单容量和检索速度的方法 | |
CN110647578B (zh) | 页面信息同步显示的方法、装置、计算机设备和存储介质 | |
CN105553483B (zh) | 一种产生lz77的方法及装置 | |
CN108038113A (zh) | 基于互联网金融智能问答的检索方法及系统 | |
CN111787074A (zh) | 一种文件同步方法及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |