CN111563063A - 一种基于HashMap识别文件类型的方法 - Google Patents

一种基于HashMap识别文件类型的方法 Download PDF

Info

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
Application number
CN202010398302.4A
Other languages
English (en)
Other versions
CN111563063B (zh
Inventor
刘德建
张伟泽
陈宏展
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Tianqing Online Interactive Technology Co Ltd
Original Assignee
Fujian Tianqing Online Interactive Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujian Tianqing Online Interactive Technology Co Ltd filed Critical Fujian Tianqing Online Interactive Technology Co Ltd
Priority to CN202010398302.4A priority Critical patent/CN111563063B/zh
Publication of CN111563063A publication Critical patent/CN111563063A/zh
Application granted granted Critical
Publication of CN111563063B publication Critical patent/CN111563063B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • G06F16/152File search processing using file content signatures, e.g. hash values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-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识别文件类型的方法
技术领域
本发明涉及网络通讯技术领域,特别是一种基于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;否则即为识别到文件。
CN202010398302.4A 2020-05-12 2020-05-12 一种基于HashMap识别文件类型的方法 Active CN111563063B (zh)

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)

* Cited by examiner, † Cited by third party
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 北京网康科技有限公司 文件类型识别方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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