CN111580856A - 针对mips架构的物联网设备组件版本信息提取方法 - Google Patents
针对mips架构的物联网设备组件版本信息提取方法 Download PDFInfo
- Publication number
- CN111580856A CN111580856A CN202010324001.7A CN202010324001A CN111580856A CN 111580856 A CN111580856 A CN 111580856A CN 202010324001 A CN202010324001 A CN 202010324001A CN 111580856 A CN111580856 A CN 111580856A
- Authority
- CN
- China
- Prior art keywords
- component
- internet
- string
- version information
- determining
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Medical Informatics (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供一种针对MIPS架构的物联网设备组件版本信息提取方法,包括:采集物联网设备固件,基于所述固件确定所述物联网设备的组件二进制字符串;基于所述组件二进制字符串确定所述物联网设备的具有版本信息的二进制字符串;基于所述具有版本信息的二进制字符串确定所述物联网设备的组件版本信息,所述组件版本信息包括组件版本号和组件版本名。本发明实施例提供的方法,实现了物联网设备的组件版本信息的自动提取,能够提高物联网设备的组件版本信息提取的效率。
Description
技术领域
本发明涉及物联网设备技术领域,尤其涉及一种针对MIPS架构的物联网设备组件版本信息提取方法。
背景技术
随着物联网技术的广泛应用,物联网设备数量也在逐年的增加。而物联网固件中使用的开源组件,为物联网设备安全带来了新的挑战。随着开源组件的日益增多,为了更好分析固件,需要准确的收集固件和固件中的组件信息,因此组件版本分析在固件的安全分析之中成为了一件重中之重的事情。
在一般情况下,组件的版本信息可以通过在设备真实运行或模拟运行的情况下,通过运行组件来得到其版本信息,但是由于设备种类的不同,固件的模拟依赖平台和依赖库也不尽相同,通过动态的运行组件来获取组件的版本信息是一种不具有普适性且低效的方法。因此如何准确的得到固件组件当中的组件版本信息,成为了一大问题。
因此,如何避免现有的获取组件的方法不具有普适性的麻烦,以及效率低下的情况,仍然是本领域技术人员亟待解决的问题。
发明内容
本发明实施例提供一种针对MIPS架构的物联网设备组件版本信息提取方法,用以解决现有的获取组件的方法不具有普适性且效率低下的问题。
第一方面,本发明实施例提供一种针对MIPS架构的物联网设备组件版本信息提取方法,包括:
采集物联网设备固件,基于所述固件确定所述物联网设备的组件二进制字符串;
基于所述组件二进制字符串确定所述物联网设备的具有版本信息的二进制字符串;
基于所述具有版本信息的二进制字符串确定所述物联网设备的组件版本信息,所述组件版本信息包括组件版本号和组件版本名。
优选地,该方法中,所述基于所述具有版本信息的二进制字符串确定所述物联网设备的组件版本信息,所述组件版本信息包括组件版本号和组件版本名,具体包括:
若所述具有版本信息的二进制字符串中包含组件版本名和组件版本号,则确定所述组件版本名和组件版本号为所述物联网设备的组件版本信息;
若所述具有版本信息的二进制字符串中包含组件版本名和格式化字符串,则对所述格式化字符串获取反汇编数据,基于所述反汇编数据确定组件版本号,确定所述组件版本名和组件版本号为所述物联网设备的组件版本信息。
优选地,该方法中,所述对所述格式化字符串获取反汇编数据,基于所述反汇编数据确定组件版本号,具体包括:
获取所述格式化字符串的反汇编数据,所述反汇编数据包括数据段和代码段,确定所述格式化字符串在代码段中的引用地址为第一地址;
确定所述第一地址所在的代码基本块,在所述代码基本块中确定格式化版本号字符串的传递地址;
基于所述格式化版本号字符串的传递地址确定组件版本号。
优选地,该方法中,所述基于所述格式化版本号字符串的传递地址确定组件版本号,具体包括:
若所述格式化版本号字符串的传递地址为堆栈地址,基于版本号占位符在格式化字符串中的位置顺序确定所述堆栈地址在堆栈中的相对位置地址,确定所述相对位置地址的堆栈值,基于所述堆栈值确定组件版本号;
若所述格式化版本号字符串的传递地址为参数寄存器,确定所述参数寄存器中最终存储的常量数据段地址,基于所述常量数据段地址获取组件版本号字符串的值,确定所述组件版本号字符串的值为组件版本号。
优选地,该方法中,所述采集物联网设备固件,基于所述固件确定所述物联网设备的组件二进制字符串,具体包括:
爬取物联网设备的固件,对所述固件进行解压获取解压组件;
判断所述解压组件是否为二进制可执行文件,若是,则确定所述解压组件为所述物联网设备的组件二进制字符串。
优选地,该方法中,所述基于所述组件二进制字符串确定所述物联网设备的具有版本信息的二进制字符串,具体包括:
通过正则匹配方法对所述组件二进制字符串进行过滤,确定所述组件二进制字符串中的具有版本信息的二进制字符串;
确定所述具有版本信息的二进制字符串为所述物联网设备的具有版本信息的二进制字符串;
其中,所述具有版本信息的二进制字符串为同时包括组件版本名和组件版本号的二进制字符串或者为同时包括组件版本名和格式化字符串的二进制字符串。
第二方面,本发明实施例提供一种针对MIPS架构的物联网设备组件版本信息提取装置,包括:
采集单元,用于采集物联网设备固件,基于所述固件确定所述物联网设备的组件二进制字符串;
提取单元,用于基于所述组件二进制字符串确定所述物联网设备的具有版本信息的二进制字符串;
确定单元,用于基于所述具有版本信息的二进制字符串确定所述物联网设备的组件版本信息,所述组件版本信息包括组件版本号和组件版本名。
优选地,该装置中,所述确定单元,具体用于,
若所述具有版本信息的二进制字符串中包含组件版本名和组件版本号,则确定所述组件版本名和组件版本号为所述物联网设备的组件版本信息;
若所述具有版本信息的二进制字符串中包含组件版本名和格式化字符串,则对所述格式化字符串获取反汇编数据,基于所述反汇编数据确定组件版本号,确定所述组件版本名和组件版本号为所述物联网设备的组件版本信息。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的针对MIPS架构的物联网设备组件版本信息提取方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的针对MIPS架构的物联网设备组件版本信息提取方法的步骤。
本发明实施例提供的方法,通过确定采集的物联网设备固件对应的组件二进制字符串,从所述组件二进制字符串中筛选出具有版本信息的二进制字符串,然后从所述具有版本信息的二进制字符串中提取出物联网设备的组件版本号和组件版本名。如此,实现了物联网设备的组件版本信息的自动提取。因此,本发明实施例提供的方法,能够提高物联网设备的组件版本信息提取的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的针对MIPS架构的物联网设备组件版本信息提取方法的流程示意图;
图2为包括格式化字符串的组件静态数据段的示意图;
图3为包括格式化字符串aGeneratedByIpt的代码基本块的示意图;
图4为包括格式化字符串aPrint1s2s3s4s5的代码段的示意图;
图5为包括格式化字符串aPrintReturnVer的代码段的示意图;
图6为本发明实施例提供的物联网设备组件版本信息提取具体流程的示意图;
图7为本发明实施例提供的针对MIPS架构的物联网设备组件版本信息提取装置的结构示意图;
图8为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有的针对MIPS架构的物联网设备组件版本信息提取方法,普遍存在普适性低,且效率低的问题。对此,本发明实施例提供了一种针对MIPS架构的物联网设备组件版本信息提取方法。图1为本发明实施例提供的针对MIPS架构的物联网设备组件版本信息提取方法的流程示意图,如图1所示,该方法包括:
步骤110,采集物联网设备固件,基于所述固件确定所述物联网设备的组件二进制字符串。
具体地,固件是指物联网设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定的设备的运行动作,它通常是被写入可擦写可编程只读存储器或电可编程只读存储器的程序从网络上从网络上爬取物联网设备的固件,各个物联网设备的厂家通常会将他们生产的设备的所有版本的固件都发布到网络上,想要获取物联网设备的固件,常用的采集物联网设备固件常用方式即使用python爬取物联网设备固件。然后,基于所述固件确定所述物联网设备的组件二进制字符串具体包括使用binwalk工具对得到的固件解压并使用file工具判断得到的解压固件是否为二进制可执行文件,如果是,则将该二进制可执行文件作为物联网设备的组件二进制字符串。
步骤120,基于所述组件二进制字符串确定所述物联网设备的具有版本信息的二进制字符串。
具体地,使用strings和grep工具对组件二进制字符串进行过滤,使用正则匹配方法分析出所述组件二进制字符串是否具有版本信息,即筛选出同时包括组件版本名和组件版本号的二进制字符串或者筛选出同时包括组件版本名和格式化字符串的二进制字符串。
步骤130,基于所述具有版本信息的二进制字符串确定所述物联网设备的组件版本信息,所述组件版本信息包括组件版本号和组件版本名。
具体地,基于所述具有版本信息的二进制字符串确定所述物联网设备的组件版本信息包括对所述具有版本信息的二进制字符串使用grep以及正则方法判断所述具有版本信息的二进制字符串是否完整。若完整,则表明所述具有版本信息的二进制字符串为同时包括组件版本名和组件版本号的二进制字符串,因此,可以直接从包括组件版本名和组件版本号的二进制字符串中提取物联网设备的组件版本名和组件版本号;若不完整,则表明所述具有版本信息的二进制字符串为同时包括组件版本名和格式化字符串的二进制字符串,可以直接提取组件版本名,但是对于格式化字符串,需要对该二进制字符串进行反汇编,然后基于反汇编得到的格式化字符串所在指令所在的代码基本块搜索格式化字符串的传递地址中的最终存储的常数数据段地址,确定所述常数数据段地址中存储的字符串为组件版本号。此处,反汇编的处理基础是本发明中的物联网设备的固件采用的是MIPS架构。这里,最终存储的含义是指传递地址可能为堆栈或者参数寄存器时,不断循环确定传递地址所在指令对应的第一源操作数,若第一源操作数不是常数数据段地址再确定第一源操作数作为目的操作数对应的第二源操作数,再判断第二源操作数是否为常数数据段地址,直到找到第n源操作数为常数数据段地址,则确定该常数数据段地址为最终存储的常数数据段地址。
本发明实施例提供的方法,通过确定采集的物联网设备固件对应的组件二进制字符串,从所述组件二进制字符串中筛选出具有版本信息的二进制字符串,然后从所述具有版本信息的二进制字符串中提取出物联网设备的组件版本号和组件版本名。如此,实现了物联网设备的组件版本信息的自动提取。因此,本发明实施例提供的方法,能够提高物联网设备的组件版本信息提取的效率。
基于上述实施例,该方法中,所述基于所述具有版本信息的二进制字符串确定所述物联网设备的组件版本信息,所述组件版本信息包括组件版本号和组件版本名,具体包括:
若所述具有版本信息的二进制字符串中包含组件版本名和组件版本号,则确定所述组件版本名和组件版本号为所述物联网设备的组件版本信息;
若所述具有版本信息的二进制字符串中包含组件版本名和格式化字符串,则对所述格式化字符串获取反汇编数据,基于所述反汇编数据确定组件版本号,确定所述组件版本名和组件版本号为所述物联网设备的组件版本信息。
具体地,要从所述具有版本信息的二进制字符串中提取出物联网设备的组件版本信息,首先要判断所述具有版本信息的二进制字符串是否完整。若完整,则表明所述具有版本信息的二进制字符串为同时包括组件版本名和组件版本号的二进制字符串,因此,可以直接从包括组件版本名和组件版本号的二进制字符串中提取物联网设备的组件版本名和组件版本号;若不完整,则表明所述具有版本信息的二进制字符串为同时包括组件版本名和格式化字符串的二进制字符串,可以直接提取组件版本名,但是对于格式化字符串,需要对该二进制字符串进行反汇编,从反汇编数据中确定组件版本号,于是可以确定组件版本名和组件版本号为所述物联网设备的组件版本信息。
基于上述任一实施例,该方法中,所述对所述格式化字符串获取反汇编数据,基于所述反汇编数据确定组件版本号,具体包括:
获取所述格式化字符串的反汇编数据,所述反汇编数据包括数据段和代码段,确定所述格式化字符串在代码段中的引用地址为第一地址;
确定所述第一地址所在的代码基本块,在所述代码基本块中确定格式化版本号字符串的传递地址;
基于所述格式化版本号字符串的传递地址确定组件版本号。
具体地,对所述格式化字符串使用IDA获取静态反汇编数据,所述反汇编数据包括数据段和代码段,首先确定该格式化字符串在数据段中的地址,然后再确定该格式化字符串在代码段中的引用地址为第一地址。例如:图2为包括格式化字符串的组件静态数据段的示意图,如图2所示,矩形框框出的一行数据,表示数据段中地址为0040FE8C处存储有aGeneratedByIpt,其中,后面的注释指出变量aGeneratedByIpt代表Generated byiptables-save v%son%s,而“aGeneratedByIpt”就是一个包含版本信息的格式化字符串,其中,“v%s”为格式化版本号字符串,v表示组件版本名,而%s则是版本号占位符,现在需要确定的就是代码段中使用变量aGeneratedByIpt时,是如何给v%s中的%s赋值的,于是可以确定%s的实际值;图3为包括格式化字符串aGeneratedByIpt的代码基本块的示意图,首先需要确定的就是变量aGeneratedByIpt在代码段中的引用地址00802B0C为所述格式化字符串在代码段中的引用地址。基于所述第一地址确定第一地址所在的代码基本块是通过jal跳转指令进行切分的,即获取第一地址的前一个jal指令和后一个jal指令之间的代码作为代码基本块,然后再从代码基本块中确定所述格式化版本号字符串的传递地址。由于MIPS架构中参数寄存器只有四个,在使用print函数时优先使用参数寄存器,在四个参数寄存器都用完的情况下会使用堆栈,因此,根据所述版本号占位符在格式化字符串中的位置和格式化字符串作为参数传递的参数寄存器可以推断出格式化版本号字符串的传递地址为参数寄存器或者堆栈,然后,基于所述传递地址可以逐步搜索确定组件版本号的值。
基于上述任一实施例,该方法中,所述基于所述格式化版本号字符串的传递地址确定组件版本号,具体包括:
若所述格式化版本号字符串的传递地址为堆栈地址,基于版本号占位符在格式化字符串中的位置顺序确定所述堆栈地址在堆栈中的相对位置地址,确定所述相对位置地址的堆栈值,基于所述堆栈值确定组件版本号;
若所述格式化版本号字符串的传递地址为参数寄存器,确定所述参数寄存器中最终存储的常量数据段地址,基于所述常量数据段地址获取组件版本号字符串的值,确定所述组件版本号字符串的值为组件版本号。
具体地,首先判断所述格式化版本号字符串的传递地址为堆栈地址还是参数寄存器地址。举例如下:如图3所示,在调用printf函数时,此处格式化字符串aGeneratedByIpt占用传递函数中的第一个参数寄存器a0,那么格式化版本号字符串“v%s”中的版本号占位符的位置是第一个占位符,因此,格式化版本号字符串的传递地址为传递函数中的第二个参数寄存器a1;图4为包括格式化字符串aPrint1s2s3s4s5的代码段的示意图,如图4所示,在调用print函数时,此处格式化字符串aPrint1s2s3s4s5占用传递函数中的第一个参数寄存器a0,而传递函数中的后面三个参数寄存器a1,a2和a3分别存储了str1、str2和str3的地址,因此,在打印aPrint1s2s3s4s5时,输出的前三个“%s”分别是str1、str2和str3存储的常数或者字符串,而排在后面的格式化版本号字符串“ver:%s”只能使用堆栈地址作为传递地址了。
若格式化版本号字符串的传递地址为堆栈地址,则根据版本号占位符在格式化字符串中的位置顺序确定所述堆栈地址在堆栈中的相对位置地址。例如,如图4所示,版本号占位符在格式化字符串中的位置顺序为第五个占位符,前三个占位符使用参数寄存器,后两个占位符使用堆栈,版本号占位符与第四个占位符在堆栈中的相对位置是版本号占位符相对于第四个占位符在堆栈中的地址更大。因为堆栈的使用是先从大地址开始存储,存入堆栈的第一个变量的地址最大,第二变量的地址次大,等等,而取出使用堆栈中的变量时先从小地址开始使用,因此,先使用地址最小的变量,再使用地址次小的变量,等等。图4中,“4%s”中的第四个占位符“%s”的传递地址为堆栈地址中的较小地址0x28+var_18($sp),格式化版本号字符串“ver:%s”中的版本号占位符的传递地址为堆栈地址中的较大地址0x28+var_14($sp),而堆栈地址0x28+var_14($sp)中的堆栈值是vernum,确定vernum中存储的字符串的值即可以确定组件版本号。
若格式化版本号字符串的传递地址为参数寄存器,确定所述参数寄存器中最终存储的常量数据段地址。如图3所示,格式化版本号字符串“v%s”的传递地址为传递函数中的第二个参数寄存器a1,然后对代码基本块进行搜索确定参数寄存器a1存储的是常数数据段地址a1410,基于a1410存储的字符串“1.4.10”即可以确定组件版本号为1.4.10。但是,确定传递地址为参数寄存器中最终存储的常量数据段地址,可能需要多次搜索寻找。首先,从代码基本块中有最高地址向低地址查找版本号字符串对应的参数寄存器赋值命令地址,如图3所示,对应的参数寄存器赋值命令地址就是最后一行代码对应的地址,该赋值命令为“la$a1,a1410”;图5为包括格式化字符串aPrintReturnVer的代码段的示意图,如5所示,对应的参数寄存器赋值命令地址为格式化字符串所在代码基本块Block1中第5行对应的地址,该赋值命令为“lw$a1,0x28+var_10($fp)”。然后要检测赋值命令的源操作数,对于图5中的示例,赋值命令的“lw$a1,0x28+var_10($fp)”的源操作数为0x28+var_10($fp),由赋值命令的上一行命令“sw$v0,0x28+var_10($fp)”可知赋值命令的源操作数即为v0,而v0为函数参数返回值寄存器,跳转到函数返回值寄存器所在上一代码基本块,搜索函数返回值寄存器的参数赋值;对于图3中的示例,赋值命令的“la$a1,a1410”的源操作数为a1410,然后通过确定a1410中存储的字符串确定组件版本号。具体地,确定所述参数寄存器中最终存储的常量数据段地址即不断循环确定赋值指令所在指令对应的第一源操作数,若第一源操作数不是常数数据段地址再确定第一源操作数作为目的操作数对应的第二源操作数,再判断第二源操作数是否为常数数据段地址,直到找到第n源操作数为常数数据段地址,则确定该常数数据段地址为最终存储的常数数据段地址。
基于上述任一实施例,该方法中,所述采集物联网设备固件,基于所述固件确定所述物联网设备的组件二进制字符串,具体包括:
爬取物联网设备的固件,对所述固件进行解压获取解压组件;
判断所述解压组件是否为二进制可执行文件,若是,则确定所述解压组件为所述物联网设备的组件二进制字符串。
具体地,采集物联网设备固件时是使用python爬取各类厂商的物联网设备固件,然后逐一确定每个物联网设备的版本信息,爬取的各类厂商的物联网设备固件通常存入mongodb数据库中。然后对所述固件进行解压获取解压组件,通常是使用binwalk工具对所述固件进行解压。再使用file工具判断所述解压组件是否为二进制可执行文件,如是,则确定所述解压组件为所述物联网设备的组件二进制字符串,通常还会将所述组件二进制字符串分离出来存入数据库。
基于上述任一实施例,该方法中,所述基于所述组件二进制字符串确定所述物联网设备的具有版本信息的二进制字符串,具体包括:
通过正则匹配方法对所述组件二进制字符串进行过滤,确定所述组件二进制字符串中的具有版本信息的二进制字符串;
确定所述具有版本信息的二进制字符串为所述物联网设备的具有版本信息的二进制字符串;
其中,所述具有版本信息的二进制字符串为同时包括组件版本名和组件版本号的二进制字符串或者为同时包括组件版本名和格式化字符串的二进制字符串。
具体地,使用strings和grep工具通过正则表达式方法过滤组件二进制字符串,判断组件二进制字符串中是否包括版本信息,其中所述版本信息为“v1.1.14”、“v%s”、“version3.2.10”、“version%s”等类型,具体地,具有版本信息的二进制字符串为同时包括组件版本名和组件版本号的二进制字符串或者为同时包括组件版本名和格式化字符串的二进制字符串,上述举例中“v1.1.14”和“version3.2.10”即为同时包括组件版本名和组件版本号的二进制字符串,“v%s”和“version%s”即为同时包括组件版本名和格式化字符串的二进制字符串。
基于上述任一实施例,本发明实施例提供一种物联网设备组件版本信息提取具体流程,图6为本发明实施例提供的物联网设备组件版本信息提取具体流程的示意图。如图6所示,首先爬取各个物联网设备厂家固件,构建固件数据库;然后,使用binwalk工具解压固件,获取固件的组件并存入组件数据库;再使用strings和grep工具对二进制组件字符串进行过滤,使用正则匹配方法分析二进制组件是否具有版本信息,筛选出其中具有“version”及具有组件名称的字符串;再进一步使用grep以及正则方法判断该组件的版本信息是否完整,如果版本信息字符串中包括版本号以及“version”字符串或组件名称,则认为该版本信息字符串为完整版本信息字符串,可以直接提取出组件版本信息,如果版本字符串中不包含版本号,为格式化字符串,则认为该组件需要提取版本信息;对于需要提取版本信息的组件,使用IDA获取静态反汇编数据,在该组件的静态数据段搜索到待分析提取信息的格式化版本号字符串地址;然后转到代码段中的该格式化版本号字符串引用地址,获取该引用地址的所在的代码基本块;再由引用地址向高地址,按照指令的源操作数与目的操作数进行索引,找到最终传递的目的操作数作为参数寄存器或者堆栈的指令地址,此指令地址为格式化版本号字符串最终调用地址;再根据格式化版本字符串中的版本号占位符位置和格式化版本号字符串作为参数传递的参数寄存器推断出版本号字符串最终传递的操作数为参数寄存器或者堆栈;下一步分两种情况:
若版本号字符串最终传递地址为参数寄存器,则在基本块中由最高地址向低地址查找到版本号字符串对应的参数寄存器赋值指令地址,然后检测该地址指令的源操作数;若该指令的源操作数为函数参数返回值寄存器,则跳转到上一基本块获取函数返回值寄存器的参数赋值,然后根据参数赋值的地址数据值判断该值是否为常量数据段地址,如是则直接获取该常量数据段地址对应的字符串作为版本号字符串,如不是则获取数据段地址对应地址的数据值,按照此数据值作为常量数据段地址找到常量数据段地址中对应的字符串作为版本号字符串;若该指令的源操作数为数据段地址或者常量数据段地址,则根据地址数据值判断该值是否为常量数据段地址,如是则直接获取该常量数据段地址对应的字符串作为版本号字符串,如不是则获取数据段地址对应地址的数据值,按照此数据值作为常量数据段地址找到常量数据段地址中对应的字符串作为版本号字符串。
若版本号字符串最终传递地址为堆栈,则进行堆栈恢复操作,模拟基本块内堆栈的指针地址变换操作以及赋值操作,获得模拟堆栈,地址与地址内的值一一对应的字典;再根据版本号参数所在位置的顺序计算出版本号所在的堆栈相对位置,并获取堆栈位置的数据值,作为版本号的地址数据;根据地址数据值判断该值是否为常量数据段地址,如是则直接获取该常量数据段地址对应的字符串作为版本号字符串,如不是则获取数据段地址对应地址的数据值,按照此数据值作为常量数据段地址找到常量数据段地址中对应的字符串作为版本号字符串。
基于上述任一实施例,本发明实施例提供一种针对MIPS架构的物联网设备组件版本信息提取装置,图7为本发明实施例提供的针对MIPS架构的物联网设备组件版本信息提取装置的结构示意图。如图7所示,该装置中,包括采集单元710、提取单元720和确定单元730,其中,
所述采集单元710,用于采集物联网设备固件,基于所述固件确定所述物联网设备的组件二进制字符串;
所述提取单元720,用于基于所述组件二进制字符串确定所述物联网设备的具有版本信息的二进制字符串;
所述确定单元730,用于基于所述具有版本信息的二进制字符串确定所述物联网设备的组件版本信息,所述组件版本信息包括组件版本号和组件版本名。
本发明实施例提供的装置,通过确定采集的物联网设备固件对应的组件二进制字符串,从所述组件二进制字符串中筛选出具有版本信息的二进制字符串,然后从所述具有版本信息的二进制字符串中提取出物联网设备的组件版本号和组件版本名。如此,实现了物联网设备的组件版本信息的自动提取。因此,本发明实施例提供的装置,能够提高物联网设备的组件版本信息提取的效率。
基于上述任一实施例,该装置中,所述确定单元,具体用于,
若所述具有版本信息的二进制字符串中包含组件版本名和组件版本号,则确定所述组件版本名和组件版本号为所述物联网设备的组件版本信息;
若所述具有版本信息的二进制字符串中包含组件版本名和格式化字符串,则对所述格式化字符串获取反汇编数据,基于所述反汇编数据确定组件版本号,确定所述组件版本名和组件版本号为所述物联网设备的组件版本信息。
基于上述任一实施例,该装置中,所述对所述格式化字符串获取反汇编数据,基于所述反汇编数据确定组件版本号,具体包括:
获取所述格式化字符串的反汇编数据,所述反汇编数据包括数据段和代码段,确定所述格式化字符串在代码段中的引用地址为第一地址;
确定所述第一地址所在的代码基本块,在所述代码基本块中确定格式化版本号字符串的传递地址;
基于所述格式化版本号字符串的传递地址确定组件版本号。
基于上述任一实施例,该装置中,所述基于所述格式化版本号字符串的传递地址确定组件版本号,具体包括:
若所述格式化版本号字符串的传递地址为堆栈地址,基于版本号占位符在格式化字符串中的位置顺序确定所述堆栈地址在堆栈中的相对位置地址,确定所述相对位置地址的堆栈值,基于所述堆栈值确定组件版本号;
若所述格式化版本号字符串的传递地址为参数寄存器,确定所述参数寄存器中最终存储的常量数据段地址,基于所述常量数据段地址获取组件版本号字符串的值,确定所述组件版本号字符串的值为组件版本号。
基于上述任一实施例,该装置中,所述采集单元,具体用于,
爬取物联网设备的固件,对所述固件进行解压获取解压组件;
判断所述解压组件是否为二进制可执行文件,若是,则确定所述解压组件为所述物联网设备的组件二进制字符串。
基于上述任一实施例,该装置中,所述提取单元,具体用于,
通过正则匹配方法对所述组件二进制字符串进行过滤,确定所述组件二进制字符串中的具有版本信息的二进制字符串;
确定所述具有版本信息的二进制字符串为所述物联网设备的具有版本信息的二进制字符串;
其中,所述具有版本信息的二进制字符串为同时包括组件版本名和组件版本号的二进制字符串或者为同时包括组件版本名和格式化字符串的二进制字符串。
图8为本发明实施例提供的电子设备的实体结构示意图,如图8所示,该电子设备可以包括:处理器(processor)801、通信接口(Communications Interface)802、存储器(memory)803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信。处理器801可以调用存储在存储器803上并可在处理器801上运行的计算机程序,以执行上述各实施例提供的针对MIPS架构的物联网设备组件版本信息提取方法,例如包括:采集物联网设备固件,基于所述固件确定所述物联网设备的组件二进制字符串;基于所述组件二进制字符串确定所述物联网设备的具有版本信息的二进制字符串;基于所述具有版本信息的二进制字符串确定所述物联网设备的组件版本信息,所述组件版本信息包括组件版本号和组件版本名。
此外,上述的存储器803中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的针对MIPS架构的物联网设备组件版本信息提取方法,例如包括:采集物联网设备固件,基于所述固件确定所述物联网设备的组件二进制字符串;基于所述组件二进制字符串确定所述物联网设备的具有版本信息的二进制字符串;基于所述具有版本信息的二进制字符串确定所述物联网设备的组件版本信息,所述组件版本信息包括组件版本号和组件版本名。
以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种针对MIPS架构的物联网设备组件版本信息提取方法,其特征在于,包括:
采集物联网设备固件,基于所述固件确定所述物联网设备的组件二进制字符串;
基于所述组件二进制字符串确定所述物联网设备的具有版本信息的二进制字符串;
基于所述具有版本信息的二进制字符串确定所述物联网设备的组件版本信息,所述组件版本信息包括组件版本号和组件版本名。
2.根据权利要求1所述的针对MIPS架构的物联网设备组件版本信息提取方法,其特征在于,所述基于所述具有版本信息的二进制字符串确定所述物联网设备的组件版本信息,所述组件版本信息包括组件版本号和组件版本名,具体包括:
若所述具有版本信息的二进制字符串中包含组件版本名和组件版本号,则确定所述组件版本名和组件版本号为所述物联网设备的组件版本信息;
若所述具有版本信息的二进制字符串中包含组件版本名和格式化字符串,则对所述格式化字符串获取反汇编数据,基于所述反汇编数据确定组件版本号,确定所述组件版本名和组件版本号为所述物联网设备的组件版本信息。
3.根据权利要求2所述的针对MIPS架构的物联网设备组件版本信息提取方法,其特征在于,所述对所述格式化字符串获取反汇编数据,基于所述反汇编数据确定组件版本号,具体包括:
获取所述格式化字符串的反汇编数据,所述反汇编数据包括数据段和代码段,确定所述格式化字符串在代码段中的引用地址为第一地址;
确定所述第一地址所在的代码基本块,在所述代码基本块中确定格式化版本号字符串的传递地址;
基于所述格式化版本号字符串的传递地址确定组件版本号。
4.根据权利要求3所述的针对MIPS架构的物联网设备组件版本信息提取方法,其特征在于,所述基于所述格式化版本号字符串的传递地址确定组件版本号,具体包括:
若所述格式化版本号字符串的传递地址为堆栈地址,基于版本号占位符在格式化字符串中的位置顺序确定所述堆栈地址在堆栈中的相对位置地址,确定所述相对位置地址的堆栈值,基于所述堆栈值确定组件版本号;
若所述格式化版本号字符串的传递地址为参数寄存器,确定所述参数寄存器中最终存储的常量数据段地址,基于所述常量数据段地址获取组件版本号字符串的值,确定所述组件版本号字符串的值为组件版本号。
5.根据权利要求1-4中任一项所述的针对MIPS架构的物联网设备组件版本信息提取方法,其特征在于,所述采集物联网设备固件,基于所述固件确定所述物联网设备的组件二进制字符串,具体包括:
爬取物联网设备的固件,对所述固件进行解压获取解压组件;
判断所述解压组件是否为二进制可执行文件,若是,则确定所述解压组件为所述物联网设备的组件二进制字符串。
6.根据权利要求求1-4中任一项所述的针对MIPS架构的物联网设备组件版本信息提取方法,其特征在于,所述基于所述组件二进制字符串确定所述物联网设备的具有版本信息的二进制字符串,具体包括:
通过正则匹配方法对所述组件二进制字符串进行过滤,确定所述组件二进制字符串中的具有版本信息的二进制字符串;
确定所述具有版本信息的二进制字符串为所述物联网设备的具有版本信息的二进制字符串;
其中,所述具有版本信息的二进制字符串为同时包括组件版本名和组件版本号的二进制字符串或者为同时包括组件版本名和格式化字符串的二进制字符串。
7.一种针对MIPS架构的物联网设备组件版本信息提取装置,其特征在于,包括:
采集单元,用于采集物联网设备固件,基于所述固件确定所述物联网设备的组件二进制字符串;
提取单元,用于基于所述组件二进制字符串确定所述物联网设备的具有版本信息的二进制字符串;
确定单元,用于基于所述具有版本信息的二进制字符串确定所述物联网设备的组件版本信息,所述组件版本信息包括组件版本号和组件版本名。
8.根据权利要求7所述的针对MIPS架构的物联网设备组件版本信息提取装置,其特征在于,所述确定单元,具体用于,
若所述具有版本信息的二进制字符串中包含组件版本名和组件版本号,则确定所述组件版本名和组件版本号为所述物联网设备的组件版本信息;
若所述具有版本信息的二进制字符串中包含组件版本名和格式化字符串,则对所述格式化字符串获取反汇编数据,基于所述反汇编数据确定组件版本号,确定所述组件版本名和组件版本号为所述物联网设备的组件版本信息。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-6中任一项所述的针对MIPS架构的物联网设备组件版本信息提取方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如1-6中任一项所述的针对MIPS架构的物联网设备组件版本信息提取方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010324001.7A CN111580856A (zh) | 2020-04-22 | 2020-04-22 | 针对mips架构的物联网设备组件版本信息提取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010324001.7A CN111580856A (zh) | 2020-04-22 | 2020-04-22 | 针对mips架构的物联网设备组件版本信息提取方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111580856A true CN111580856A (zh) | 2020-08-25 |
Family
ID=72122651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010324001.7A Pending CN111580856A (zh) | 2020-04-22 | 2020-04-22 | 针对mips架构的物联网设备组件版本信息提取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111580856A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113779620A (zh) * | 2021-08-19 | 2021-12-10 | 成都鲁易科技有限公司 | 程序文件的校验方法、装置、存储介质及计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030158973A1 (en) * | 2002-02-19 | 2003-08-21 | Funai Electric Co., Ltd. | Program for CD-R/RW writing, operation control program and drive apparatus |
CN109375945A (zh) * | 2018-08-28 | 2019-02-22 | 中国人民解放军国防科技大学 | 物联网设备的固件版本探测方法及漏洞修复率评估方法 |
CN110362966A (zh) * | 2019-07-11 | 2019-10-22 | 华东师范大学 | 一种基于模糊哈希的跨平台固件同源性安全检测方法 |
CN110659502A (zh) * | 2019-09-05 | 2020-01-07 | 中国科学院软件研究所 | 一种基于文本信息关联关系分析的项目版本检测方法及系统 |
-
2020
- 2020-04-22 CN CN202010324001.7A patent/CN111580856A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030158973A1 (en) * | 2002-02-19 | 2003-08-21 | Funai Electric Co., Ltd. | Program for CD-R/RW writing, operation control program and drive apparatus |
CN109375945A (zh) * | 2018-08-28 | 2019-02-22 | 中国人民解放军国防科技大学 | 物联网设备的固件版本探测方法及漏洞修复率评估方法 |
CN110362966A (zh) * | 2019-07-11 | 2019-10-22 | 华东师范大学 | 一种基于模糊哈希的跨平台固件同源性安全检测方法 |
CN110659502A (zh) * | 2019-09-05 | 2020-01-07 | 中国科学院软件研究所 | 一种基于文本信息关联关系分析的项目版本检测方法及系统 |
Non-Patent Citations (1)
Title |
---|
WEIDONG ZHANG等: "PANDORA: A Scalable and Efficient Scheme to Extract Version of Binaries in IoT Firmwares", 《2018 IEEE INTERNATIONAL CONFERENCE ON COMMUNICATIONS (ICC)》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113779620A (zh) * | 2021-08-19 | 2021-12-10 | 成都鲁易科技有限公司 | 程序文件的校验方法、装置、存储介质及计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109063055B (zh) | 同源二进制文件检索方法和装置 | |
US10866972B2 (en) | Systems and methods for trie-based automated discovery of patterns in computer logs | |
CN107506389B (zh) | 一种提取职位技能需求的方法和装置 | |
US9332086B2 (en) | Identifying properties of a communication device | |
CN109740347B (zh) | 一种针对智能设备固件的脆弱哈希函数的识别与破解方法 | |
CN111199054B (zh) | 一种数据脱敏方法、装置及数据脱敏设备 | |
CN112364014B (zh) | 数据查询方法、装置、服务器及存储介质 | |
CN111580822A (zh) | 基于vex中间语言的物联网设备组件版本信息提取方法 | |
CN104182548A (zh) | 网页更新处理方法及装置 | |
CN113254751A (zh) | 一种复杂网页结构化信息精确提取方法、设备及存储介质 | |
CN111444718A (zh) | 一种保险产品需求文档处理方法、装置及电子设备 | |
CN112818200A (zh) | 基于静态网站的数据爬取及事件分析方法及系统 | |
EP3965024A1 (en) | Automatically labeling functional blocks in pipelines of existing machine learning projects in a corpus adaptable for use in new machine learning projects | |
CN114201759A (zh) | 一种基于软件包命名矩阵的软件漏洞识别方法与系统 | |
CN111580856A (zh) | 针对mips架构的物联网设备组件版本信息提取方法 | |
CN113806647A (zh) | 识别开发框架的方法及相关设备 | |
CN113312485B (zh) | 日志自动化分类方法及装置、计算机可读存储介质 | |
CN114756586A (zh) | 代码匹配分析方法、装置、电子设备及存储介质 | |
CN116049213A (zh) | 表格文档的关键词检索方法及电子设备 | |
CN112732681B (zh) | 数据平台迁移方法及系统 | |
CN116266182A (zh) | Sql语句优化方法及装置 | |
CN114201376A (zh) | 基于人工智能的日志解析方法、装置、终端设备及介质 | |
CN108153817B (zh) | 一种智能网页数据采集方法 | |
CN112686029A (zh) | 用于数据库审计系统的sql新语句识别方法及装置 | |
CN114328149B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200825 |