掌桥专利:专业的专利平台
掌桥专利
首页

一种固件类型识别方法、智能终端及计算机可读存储介质

文献发布时间:2023-06-19 10:19:37


一种固件类型识别方法、智能终端及计算机可读存储介质

技术领域

本发明涉及计算机应用技术领域,尤其涉及一种固件类型识别方法、智能终端及计算机可读存储介质。

背景技术

魔术文件是包含描述魔术数字的规则文件,其中魔术数字,又称为魔数,用来标识特定类型的文件。

解析固件格式是分析固件安全的基础,只有在正确识别固件类型后,才可以获取固件中的内核和文件系统等信息,从而进一步解压出固件中各类文件来进行安全研究。

固件(Firmware)就是写入EPROM(可擦写可编程只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序。固件是指设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作,比如光驱、刻录机等都有内部固件。固件是担任着一个系统最基础、最底层工作的软件。而在硬件设备中,固件就是硬件设备的灵魂,因为一些硬件设备除了固件以外没有其它软件组成,因此固件也就决定着硬件设备的功能及性能。

目前嵌入式设备出现在生活的各个场合中,如常见的路由器、智能手机、打印机、汽车导航仪等,不同类型的设备使用的固件格式也不尽相同,另外设备厂商发布固件时也会采用多重压缩打包的方式,这就造成安全研究者只能依赖之前的经验分析指定类型的固件,或者手工解压后多次尝试才可以释放出固件。

Linux操作系统默认只能识别常用文件类型,例如图片文件,视频文件,压缩文件等,现有技术无法通过自动分析文件后快速识别出不同的固件类型。

因此,现有技术还有待于改进和发展。

发明内容

本发明的主要目的在于提供一种固件类型识别方法、智能终端及计算机可读存储介质,旨在解决现有技术中无法通过自动文件分析后快速识别出不同的固件类型的问题。

为实现上述目的,本发明提供一种固件类型识别方法,所述固件类型识别方法包括如下步骤:

获取固件头部数据内容,分析所述固件头部数据内容以提取固件的MIME类型信息;

根据所述MIME类型信息确定所述固件的特征数据偏移位置,并编写符合魔术文件格式的文本规则文件;

根据Linux系统中file命令的编译选项参数编译所述文本规则文件,生成二进制规则文件;

根据所述二进制规则文件识别固件压缩文件的类型,并递归解压出所述固件压缩文件中的所有固件文件;

通过指定自定义的魔术文件匹配所有固件文件的固件信息,识别出对应固件文件的固件类型。

可选地,所述的固件类型识别方法,其中,所述通过指定自定义的魔术文件匹配所述固件文件的固件信息,识别出对应固件文件的固件类型,之后还包括:

当识别出对应固件文件的固件类型后,根据所述固件类型选择对应的固件解压工具。

可选地,所述的固件类型识别方法,其中,所述固件文件的结构包括:头部分信息、初始化引导部分、固件系统部分和固件硬件参数。

可选地,所述的固件类型识别方法,其中,所述头部分信息包括固件头部。

可选地,所述的固件类型识别方法,其中,所述初始化引导部分包括设备初始化程序。

可选地,所述的固件类型识别方法,其中,所述固件系统部分包括固件系统内核和文件系统。

可选地,所述的固件类型识别方法,其中,所述固件系统内核包括驱动程序。

可选地,所述的固件类型识别方法,其中,所述文件系统包括系统库、三方库和工具。

此外,为实现上述目的,本发明还提供一种智能终端,其中,所述智能终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的固件类型识别程序,所述固件类型识别程序被所述处理器执行时实现如上所述的固件类型识别方法的步骤。

此外,为实现上述目的,本发明还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有固件类型识别程序,所述固件类型识别程序被处理器执行时实现如上所述的固件类型识别方法的步骤。

本发明通过获取固件头部数据内容,分析所述固件头部数据内容以提取固件的MIME类型信息;根据所述MIME类型信息确定所述固件的特征数据偏移位置,并编写符合魔术文件格式的文本规则文件;根据Linux系统中file命令的编译选项参数编译所述文本规则文件,生成二进制规则文件;根据所述二进制规则文件识别固件压缩文件的类型,并递归解压出所述固件压缩文件中的所有固件文件;通过指定自定义的魔术文件匹配所有固件文件的固件信息,识别出对应固件文件的固件类型。本发明通过自动分析文件后快速识别出不同的固件类型,并可以释放多重压缩文件的真实固件,便于相关人员快速选择匹配的固件解压工具提取固件中的文件进行分析。

附图说明

图1是本发明固件类型识别方法的较佳实施例的流程图;

图2是本发明固件类型识别方法的较佳实施例中固件文件结构的示意图;

图3是本发明固件类型识别方法的较佳实施例中固件格式识别过程的示意图;

图4为本发明智能终端的较佳实施例的运行环境示意图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明较佳实施例所述的固件类型识别方法,如图1所示,所述固件类型识别方法包括以下步骤:

步骤S10、获取固件头部数据内容,分析所述固件头部数据内容以提取固件的MIME类型信息。

具体的,如图2所示,可以看出所述固件文件的结构包括:头部分信息、初始化引导部分、固件系统部分和其它部分,其中,其它部分为固件硬件参数(Art),所述头部分信息包括固件头部(Header),所述初始化引导部分包括设备初始化程序(u-boot),所述固件系统部分包括固件系统内核和文件系统,所述固件系统内核包括驱动程序(Driver),所述文件系统包括系统库(lib)、三方库(lib)和工具(tool)。

具体地,本发明的固件类型识别方法通过智能终端(例如计算机)来完成;所述智能终端先获取已知固件头部数据内容,再分析已知固件头部数据内容,提取出相应固件的MIME类型信息(MIME:Multipurpose Internet Mail Extensions,多用途互联网邮件扩展,MIME类型是描述文件性质和格式的一种标准,例如:text/plain,image/png;功能和文件扩展名类似,但比其更可靠和准确)。

步骤S20、根据所述MIME类型信息确定所述固件的特征数据偏移位置,并编写符合魔术文件格式的文本规则文件。

具体地,所述智能终端根据所述MIME类型信息确定所述固件的特征数据偏移位置,例如通过固件头部数据固定的具体字符判断,类似PNG图片头部数据的第2到4个字符就是P、N、G三个字符,不同固件拥有自己的指定字符,不一定是可见字符,获取到指定数据后,就会在规则文件中添加偏移位置和及其对应数据的规则;然后编写符合魔术文件格式的文本规则文件。

步骤S30、根据Linux系统中file命令的编译选项参数编译所述文本规则文件,生成二进制规则文件。

具体地,所述智能终端利用Linux系统(是一种免费使用和自由传播的类UNIX操作系统)中file命令(file命令是Linux系统中采用默认的魔术文件识别文件类型的内部命令)的编译选项参数编译文本规则文件生成二进制规则文件(二进制规则文件是file命令识别文件类型的规则,就是后面用到的魔术文件,即魔术文件的二进制形式)。

步骤S40、根据所述二进制规则文件识别固件压缩文件的类型,并递归解压出所述固件压缩文件中的所有固件文件。

具体地,所述智能终端根据所述二进制规则文件(即系统中魔术文件)识别固件压缩文件类型,并递归解压出所述固件压缩文件中的所有固件文件,固件文件一般会进行压缩处理,因此要识别真正的固件类型,就需要把固件从压缩文件中解压出来。

步骤S50、通过指定自定义的魔术文件匹配所有固件文件的固件信息,识别出对应固件文件的固件类型。

具体地,所述智能终端通过指定自定义的魔术文件匹配固件信息,识别出对应文件的固件类型,例如大华通用固件、TP-Link路由固件、联发科bootloader固件、Realtek固件等。

进一步地,如图3所示,对于已知固件进行分析时,生成自定的魔术文件,再进行特征匹配,之后进行格式识别,返回固件MIME类型信息;对于提交的固件文件,先判断是否为压缩文件,如是,则递归解压压缩文件,如否则进行特征匹配,之后进行格式识别,返回固件MIME类型信息。

进一步地,当所述智能终端识别出对应固件文件的固件类型后,根据所述固件类型选择对应的固件解压工具。即所述智能终端可以通过不断完善自定义的魔术文件后,无论固件是否经过多重压缩,都可以快速获取到固件MIME类型信息,通过MIME类型信息判断该固件的类型,从而可以直接选择对应的固件解压工具。

具体的固件解压工具,需要靠分析者或者相关人员自己收集,可通过对应厂商的内部开发套件获取,例如华为手机固件,或者开源的固件解压工具binwalk和BAT等;每个工具都有自身支持的特定固件类型,例如通用相机类固件可以用BAT,TP-Link路由器固件可选择binwalk。

本发明能够通过自动分析文件后快速识别出不同的固件类型,并可以释放多重压缩文件的真实固件;提供一种Linux系统自定义魔术文件的方法快速识别出固件类型,可以协助固件安全研究者快速选择匹配的固件解压工具提取固件中的文件进行分析。

进一步地,如图4所示,基于上述固件类型识别方法,本发明还相应提供了一种智能终端,所述智能终端包括处理器10、存储器20及显示器30。图4仅示出了智能终端的部分组件,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

所述存储器20在一些实施例中可以是所述智能终端的内部存储单元,例如智能终端的硬盘或内存。所述存储器20在另一些实施例中也可以是所述智能终端的外部存储设备,例如所述智能终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器20还可以既包括所述智能终端的内部存储单元也包括外部存储设备。所述存储器20用于存储安装于所述智能终端的应用软件及各类数据,例如所述安装智能终端的程序代码等。所述存储器20还可以用于暂时地存储已经输出或者将要输出的数据。在一实施例中,存储器20上存储有固件类型识别程序40,该固件类型识别程序40可被处理器10所执行,从而实现本申请中固件类型识别方法。

所述处理器10在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行所述存储器20中存储的程序代码或处理数据,例如执行所述固件类型识别方法等。

所述显示器30在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。所述显示器30用于显示在所述智能终端的信息以及用于显示可视化的用户界面。所述智能终端的部件10-30通过系统总线相互通信。

在一实施例中,当处理器10执行所述存储器20中固件类型识别程序40时实现以下步骤:

获取固件头部数据内容,分析所述固件头部数据内容以提取固件的MIME类型信息;

根据所述MIME类型信息确定所述固件的特征数据偏移位置,并编写符合魔术文件格式的文本规则文件;

根据Linux系统中file命令的编译选项参数编译所述文本规则文件,生成二进制规则文件;

根据所述二进制规则文件识别固件压缩文件的类型,并递归解压出所述固件压缩文件中的所有固件文件;

通过指定自定义的魔术文件匹配所有固件文件的固件信息,识别出对应固件文件的固件类型。

其中,所述通过指定自定义的魔术文件匹配所述固件文件的固件信息,识别出对应固件文件的固件类型,之后还包括:

当识别出对应固件文件的固件类型后,根据所述固件类型选择对应的固件解压工具。

其中,所述固件文件的结构包括:头部分信息、初始化引导部分、固件系统部分和固件硬件参数。

其中,所述头部分信息包括固件头部。

其中,所述初始化引导部分包括设备初始化程序。

其中,所述固件系统部分包括固件系统内核和文件系统。

其中,所述固件系统内核包括驱动程序。

其中,所述文件系统包括系统库、三方库和工具。

本发明还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有固件类型识别程序,所述固件类型识别程序被处理器执行时实现如上所述的固件类型识别方法的步骤。

综上所述,本发明提供一种固件类型识别方法、智能终端及计算机可读存储介质,所述方法包括:获取固件头部数据内容,分析所述固件头部数据内容以提取固件的MIME类型信息;根据所述MIME类型信息确定所述固件的特征数据偏移位置,并编写符合魔术文件格式的文本规则文件;根据Linux系统中file命令的编译选项参数编译所述文本规则文件,生成二进制规则文件;根据所述二进制规则文件识别固件压缩文件的类型,并递归解压出所述固件压缩文件中的所有固件文件;通过指定自定义的魔术文件匹配所有固件文件的固件信息,识别出对应固件文件的固件类型。本发明通过自动分析文件后快速识别出不同的固件类型,并可以释放多重压缩文件的真实固件,便于相关人员快速选择匹配的固件解压工具提取固件中的文件进行分析。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的计算机可读存储介质中,所述程序在执行时可包括如上述各方法实施例的流程。其中所述的计算机可读存储介质可为存储器、磁碟、光盘等。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

相关技术
  • 一种固件类型识别方法、智能终端及计算机可读存储介质
  • 一种请求类型识别方法、装置和计算机可读存储介质
技术分类

06120112502588