CN105740390A - 一种逆向提取plist格式数据的方法 - Google Patents
一种逆向提取plist格式数据的方法 Download PDFInfo
- Publication number
- CN105740390A CN105740390A CN201610057163.2A CN201610057163A CN105740390A CN 105740390 A CN105740390 A CN 105740390A CN 201610057163 A CN201610057163 A CN 201610057163A CN 105740390 A CN105740390 A CN 105740390A
- Authority
- CN
- China
- Prior art keywords
- data
- plist
- label
- key
- xml
- 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
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种逆向提取plist格式数据的方法,包括下面步骤:S1:读取plist数据;S2:确定plist的格式类型;S3:解析plist格式类型结构;S4:解析plist的xml格式逻辑;S5:存储解析后的数据逻辑;S6:通过解析后的数据逻辑关系键值提取指定的数据。本发明的有益效果如下:可通过解析plist的xml格式逻辑,在没有原始对象结构的情况下准确获取存储在plist中的序列化对象数据,提高了plist格式数据恢复成功率。
Description
技术领域
本发明涉及信息安全技术领域,特别涉及一种逆向提取plist格式数据的方法。
背景技术
plist格式是IOS系统中用来保存数据的常见序列化格式,在IOS系统中常用于存储各种应用数据及用户数据。由于pilst是一种序列化,序列化指定的对象数据到文件中,需要指定的对象结构才能将数据反序列化。
目前由于取证等领域的需要,往往要提取的plist数据,但是由于plist数据是各种不同程序产生的,并不知道其最初的对象结构,通过反序列化的方式很难完全有效的提取每个plist的数据。综上所诉,开发一种逆向提取plist格式数据的方法显得尤为重要。
发明内容
本发明针对现有技术的缺陷,提供了一种逆向提取plist格式数据的方法,能有效的解决上述现有技术存在的问题。
一种逆向提取plist格式数据的方法,包括下面步骤:
S1:读取plist数据;
S2:确定plist的格式类型;
S3:解析plist格式类型结构;
S4:解析plist的xml格式逻辑;
S5:存储解析后的数据逻辑;
S6:通过解析后的数据逻辑关系键值提取指定的数据。
作为优选,所述S1具体步骤为:
S101:判断plist数据的存储方式,若以文件方式存储则执行S102,若以数据块方式存储在数据库中则执行S103,若通过网络方式传送则执行S104;
S102:指定需要逆向提取的Pilst文件路径,打开文件读取数据,执行S2;
S103:则通过数据库读取支持库,读取plist数据所在字段的数据,执行S2;
S104:调用相应网络接口读取pilst数据,执行S2。
作为优选,所述S2具体步骤为:
S201:若数据格式头部为xml类型,且存在“<!DOCTYPEplist”标志,则认为数据为plist普通xml结构类型;
若数据格式头部开始位置存在“bplist00”标志,则认为数据为bplist二进制结构类型;
S202:通过文件格式版本标识获取格式版本,不同的版本文件结构可能不同。
作为优选,所述S3具体步骤为:
若为plist普通xml结构类型,可采用第三方xml库完成类型结构解析,也可以通过自己编写的xml库完成类型结构解析;
若为bplist二进制结构类型,则遵循bplist文件结构描述的方法完成类型结构解析,将文件二进制的结构解析为XML结构。
作为优选,所述S4具体步骤为:
S401:判断plist的xml格式结构中是否存在$objects对象结构,若xml格式结构中有标签数据“<key>$objects</key>”表明是,则执行S402,若没有表示否,则执行S407;
S402:判断标签数据“<key>$objects</key>”的下一个标签是否为<array>,是则执行S403,否则执行S407;
S403:判断标签<array>中的第二个标签是否为<dict>,是则执行S404,否,否则执行S407;
S404:获取<dict>标签中标签数据<key>$class</key>所指向的UID数据值;
S405:读取UID下标所指向的数据,获取类名称;
S406:接着<key>$class</key>标签数据之后是对象中所存储的数据,用递归的方式依次从上往下组装名称和数据,遇到UID则跳转位置获取数据,依次完成对象结构的解析;
S407:解析普通数据:
若为<key>标签则拷贝数据名称;
若为<string>标签则拷贝字符串数据;
若为<integer>标签则拷贝整数数据;
若为<real>标签则拷贝浮点型数据;
若为<array>标签则拷贝数据数组;
若为<boolean>标签则拷贝布尔类型数据;
若为<dictionary>标签则拷贝键值对数据;
若为<data>标签则拷贝base64字符数据;
若为<date>标签则拷贝并转换为时间数据。
作为优选,所述S5具体为:将解析过滤UID后的逻辑数据通过JSON或XML以新的数据逻辑存储。
作为优选,所述S6具体为:使用JSON库或XML库指定解析后的键值路径提取plist序列化中指定字段名称的数据。
与现有技术相比本发明的优点在于:可通过解析plist的xml格式逻辑,在没有原始对象结构的情况下准确获取存储在plist中的序列化对象数据,提高了plist格式数据恢复成功率。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下举实施例,对本发明做进一步详细说明。
一种逆向提取plist格式数据的方法,包括下面步骤:
S1:读取plist数据;
S2:确定plist的格式类型;
S3:解析plist格式类型结构;
S4:解析plist的xml格式逻辑;
S5:存储解析后的数据逻辑;
S6:通过解析后的数据逻辑关系键值提取指定的数据。
所述S1具体步骤为:
S101:判断plist数据的存储方式,若以文件方式存储则执行S102,若以数据块方式存储在数据库中则执行S103,若通过网络方式传送则执行S104;
S102:指定需要逆向提取的Pilst文件路径,打开文件读取数据,执行S2;
S103:则通过数据库读取支持库,读取plist数据所在字段的数据,执行S2;
S104:调用相应网络接口读取pilst数据,执行S2。
所述S2具体步骤为:
S201:若数据格式头部为xml类型,且存在“<!DOCTYPEplist”标志,则认为数据为plist普通xml结构类型;
若数据格式头部开始位置存在“bplist00”标志,则认为数据为bplist二进制结构类型;
S202:通过文件格式版本标识获取格式版本,不同的版本文件结构可能不同。
所述S3具体步骤为:
若为plist普通xml结构类型,可采用第三方xml库完成类型结构解析,也可以通过自己编写的xml库成类型结构解析;
若为bplist二进制结构类型,则遵循bplist文件结构描述的方法完成类型结构解析,将文件二进制的结构解析为XML结构。
所述S4具体步骤为:
S401:判断plist的xml格式结构中是否存在$objects对象结构,若xml格式结构中有标签数据“<key>$objects</key>”表明是,则执行S402,若没有表示否,则执行S407;
S402:判断标签数据“<key>$objects</key>”的下一个标签是否为<array>,是则执行S403,否则执行S407;
S403:判断标签<array>中的第二个标签是否为<dict>,是则执行S404,否,否则执行S407;
S404:获取<dict>标签中标签数据<key>$class</key>所指向的UID数据值;(注:UID数值为<array>标签中数据的下标,从上往下依次累加)
S405:读取UID下标所指向的数据,获取类名称;
S406:接着<key>$class</key>标签数据之后是对象中所存储的数据,用递归的方式依次从上往下组装名称和数据,遇到UID则跳转位置获取数据,依次完成对象结构的解析;
S407:解析普通数据:
若为<key>标签则拷贝数据名称;
若为<string>标签则拷贝字符串数据;
若为<integer>标签则拷贝整数数据;
若为<real>标签则拷贝浮点型数据;
若为<array>标签则拷贝数据数组;
若为<boolean>标签则拷贝布尔类型数据;
若为<dictionary>标签则拷贝键值对数据;
若为<data>标签则拷贝base64字符数据;
若为<date>标签则拷贝并转换为时间数据。
所述S5具体为:将解析过滤UID后的逻辑数据通过JSON或XML以新的数据逻辑存储。
所述S6具体为:使用JSON库或XML库指定解析后的键值路径提取plist序列化中指定字段名称的数据。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的实施方法,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
Claims (7)
1.一种逆向提取plist格式数据的方法,包括下面步骤:
S1:读取plist数据;
S2:确定plist的格式类型;
S3:解析plist格式类型结构;
S4:解析plist的xml格式逻辑;
S5:存储解析后的数据逻辑;
S6:通过解析后的数据逻辑关系键值提取指定的数据。
2.根据权利要求1所述的一种逆向提取plist格式数据的方法,其特征在于所述S1具体步骤为:
S101:判断plist数据的存储方式,若以文件方式存储则执行S102,若以数据块方式存储在数据库中则执行S103,若通过网络方式传送则执行S104;
S102:指定需要逆向提取的Pilst文件路径,打开文件读取数据,执行S2;
S103:则通过数据库读取支持库,读取plist数据所在字段的数据,执行S2;
S104:调用相应网络接口读取pilst数据,执行S2。
3.根据权利要求2所述的一种逆向提取plist格式数据的方法,其特征在于所述S2具体步骤为:
S201:若数据格式头部为xml类型,且存在“<!DOCTYPEplist”标志,则认为数据为plist普通xml结构类型;
若数据格式头部开始位置存在“bplist00”标志,则认为数据为bplist二进制结构类型;
S202:通过文件格式版本标识获取格式版本,不同的版本文件结构可能不同。
4.根据权利要求3所述的一种逆向提取plist格式数据的方法,其特征在于所述S3具体步骤为:
若为plist普通xml结构类型,可采用第三方xml库完成类型结构解析,也可通过自己编写的xml库成类型结构解析;
若为bplist二进制结构类型,则遵循bplist文件结构描述的方法完成类型结构解析,将文件二进制的结构解析为XML结构。
5.根据权利要求4所述的一种逆向提取plist格式数据的方法,其特征在于所述S4具体步骤为:
S401:判断plist的xml格式结构中是否存在$objects对象结构,若xml格式结构中有标签数据“<key>$objects</key>”表明是,则执行S402,若没有表示否,则执行S407;
S402:判断标签数据“<key>$objects</key>”的下一个标签是否为<array>,是则执行S403,否则执行S407;
S403:判断标签<array>中的第二个标签是否为<dict>,是则执行S404,否,否则执行S407;
S404:获取<dict>标签中标签数据<key>$class</key>所指向的UID数据值;
S405:读取UID下标所指向的数据,获取类名称;
S406:接着<key>$class</key>标签数据之后是对象中所存储的数据,用递归的方式依次从上往下组装名称和数据,遇到UID则跳转位置获取数据,依次完成对象结构的解析;
S407:解析普通数据:
若为<key>标签则拷贝数据名称;
若为<string>标签则拷贝字符串数据;
若为<integer>标签则拷贝整数数据;
若为<real>标签则拷贝浮点型数据;
若为<array>标签则拷贝数据数组;
若为<boolean>标签则拷贝布尔类型数据;
若为<dictionary>标签则拷贝键值对数据;
若为<data>标签则拷贝base64字符数据;
若为<date>标签则拷贝并转换为时间数据。
6.根据权利要求5所述的一种逆向提取plist格式数据的方法,其特征在于所述S5具体为:将解析过滤UID后的逻辑数据通过JSON或XML以新的数据逻辑存储。
7.根据权利要求6所述的一种逆向提取plist格式数据的方法,其特征在于所述S6具体为:使用JSON库或XML库指定解析后的键值路径提取plist序列化中指定字段名称的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610057163.2A CN105740390A (zh) | 2016-01-27 | 2016-01-27 | 一种逆向提取plist格式数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610057163.2A CN105740390A (zh) | 2016-01-27 | 2016-01-27 | 一种逆向提取plist格式数据的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105740390A true CN105740390A (zh) | 2016-07-06 |
Family
ID=56247815
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610057163.2A Pending CN105740390A (zh) | 2016-01-27 | 2016-01-27 | 一种逆向提取plist格式数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105740390A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110188003A (zh) * | 2019-05-31 | 2019-08-30 | 四川效率源信息安全技术股份有限公司 | 一种针对硬盘中丢失缺陷条目后的数据恢复方法 |
CN112084153A (zh) * | 2020-09-09 | 2020-12-15 | 南京烽火星空通信发展有限公司 | 一种plist文件按视图视角模糊快速化节点数据的方法及系统 |
CN114218171A (zh) * | 2021-12-22 | 2022-03-22 | 武汉斗鱼鱼乐网络科技有限公司 | 一种便利的存储方法、电子设备、存储介质及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750495A (zh) * | 2012-06-07 | 2012-10-24 | 北京锐安科技有限公司 | iPhone手机加密备份文件的破解及还原系统 |
CN104123197A (zh) * | 2013-04-25 | 2014-10-29 | 南京邮电大学 | 未持有iOS设备情况下的离线取证方法 |
-
2016
- 2016-01-27 CN CN201610057163.2A patent/CN105740390A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750495A (zh) * | 2012-06-07 | 2012-10-24 | 北京锐安科技有限公司 | iPhone手机加密备份文件的破解及还原系统 |
CN104123197A (zh) * | 2013-04-25 | 2014-10-29 | 南京邮电大学 | 未持有iOS设备情况下的离线取证方法 |
Non-Patent Citations (1)
Title |
---|
刘肖: "Windows平台下iOS设备取证方法研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110188003A (zh) * | 2019-05-31 | 2019-08-30 | 四川效率源信息安全技术股份有限公司 | 一种针对硬盘中丢失缺陷条目后的数据恢复方法 |
CN112084153A (zh) * | 2020-09-09 | 2020-12-15 | 南京烽火星空通信发展有限公司 | 一种plist文件按视图视角模糊快速化节点数据的方法及系统 |
CN114218171A (zh) * | 2021-12-22 | 2022-03-22 | 武汉斗鱼鱼乐网络科技有限公司 | 一种便利的存储方法、电子设备、存储介质及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108399256B (zh) | 异构数据库内容同步方法、装置及中间件 | |
CN103092726B (zh) | 注册表删除数据的恢复方法和装置 | |
CN107346284B (zh) | 一种应用程序的检测方法及检测装置 | |
CN105740390A (zh) | 一种逆向提取plist格式数据的方法 | |
CN106406913B (zh) | 一种从项目中提取代码的方法及系统 | |
CN106021301B (zh) | 一种不同文件格式的数据比对系统及方法 | |
CN101667118A (zh) | 多语言版本的开发、替换方法及装置 | |
CN105446865A (zh) | 多种环境下的测试方法及装置 | |
CN103377123B (zh) | 一种网页代码自动化测试方法及装置 | |
JP2012212422A (ja) | 情報処理装置、および情報処理方法、並びにプログラム | |
CN110083722A (zh) | 一种电子图纸查找方法、装置、设备及可读存储介质 | |
CN106407038A (zh) | 一种碎片文件的数据恢复方法 | |
CN109492115A (zh) | 一种汽修知识实体网络构建方法、装置及设备 | |
CN103164335B (zh) | 检查单元测试质量的方法和系统 | |
CN105468661A (zh) | 一种查找elf文件中符号信息的方法及系统 | |
CN110532576A (zh) | 一种数据处理方法、装置及电子设备 | |
Eyal-Salman et al. | Recovering traceability links between feature models and source code of product variants | |
CN108090364B (zh) | 一种数据泄漏源的定位方法及系统 | |
CN110008446A (zh) | 一种基于编程语言对表格文件进行转化的方法和电子设备 | |
CN106569986B (zh) | 字符串替换方法和装置 | |
CN112328379A (zh) | 一种应用迁移方法、装置、设备及介质 | |
CN107133200A (zh) | 一种Android系统字符串提取及合并方法 | |
CN104484156A (zh) | 多语言公式的编辑方法、编辑系统和多语言公式编辑器 | |
CN106557569B (zh) | 基于元模型的非结构化文档的导入方法和导入装置 | |
CN104778097B (zh) | 一种数据恢复方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into 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: 20160706 |