itunes备份文件解析入门
itunes提供给设备备份的功能,不知道怎么备份的话可以戳一下这个看一下:http://jingyan.baidu.com/article/92255446ea8f46851648f4a4.html
首先让我们来认识一下iphone的备份文件。备份完成之后,在资源管理器中输入%appdata%,然后进入\Apple Computer\MobileSync,是不是可以看到一个backup文件夹了?是的,这就是iphone备份文件啦。打开了看一下,里面会有各种文件,见图1
图1
上面这些文件中,由40位字符组成的文件是一些数据库文件,待会儿下面我们要说的短信和联系人数据库就在其中。*.list文件是一些信息文件,打开Info.plist文件来看看其中的一些信息吧,见图2
图2
这是什么信息呢?Product Type表示手机设备,图上所示是iphone3,Product Version表示手机设备里的ios版本号,这些信息的用处在于读取数据库文件时可以针对不同的ios号、itunes号等信息做兼容工作,因为不同的ios版本,联系人、短信等数据库也会有相应的变化。
Status.plist文件里面包含了一些诸如备份时间、是否为全量备份等信息的备份状态,见图3信息
图3
接下来让我们进入本文第二部分,如何实现从备份数据库文件中读取短信和联系人信息。就在\Apple Computer\MobileSync中有两个文件要告诉大家,一个是“31bb7ba8914766d4ba40d6dfb6113c8b614be442”,另一个是“3d0d7e5fb2ce288813306e4d4636395e047a3d28”,他们分别是iphone、ipad等苹果设备的备份数据库文件,要打开它们可以借助一款第三方软件——SQLiteSpy,可以下载下来看看itunes到底帮亲备份了哪些东西。苹果对设备数据备份采用的是开源数据库产品——sqlite,要对这些数据库文件进行解析可以借助sqlite3的封装类,开源地址:http://sqlitewrapper.kompex-online.com/doxygen/dir_c1d6be483d10aafba59e40addb339565.html。利用这个开源库可以对里面的数据进行读取。分为几个步骤:1.初始化数据库,用开源sqlite3封装库里的类SQLiteDatabase的构造函数即可,Kompex::SQLiteDatabase* pDatabase = new Kompex::SQLiteDatabase(WideToUTF8(strDBFilePath);, SQLITE_OPEN_READONLY, 0);2.利用刚刚获得的数据库指针构造一个sqlite语句指针以操作该数据库,用类SQLiteStatement的构造函数即可,std::auto_ptr<Kompex::SQLiteStatement> pStmt( new Kompex::SQLiteStatement(pDatabase) );。到了这一步你已经有了操作数据库的指针,接下来你要做的是构造一个短信的数据结构,然后通过语句指针读取每一条短信放进一个容器里面。至于得到的pStmt怎么用我就不公布代码了,自己可以写写,顺便练练手,在KompexSQLiteStatement.h中大概会有诸如这么一些接口是要用到的:
inline void Sql(const std::string &sql) {Prepare(sql.c_str());}
std::string GetColumnString(int column) const;
int64 GetColumnInt64(int column) const;
void FreeQuery();
配合接口注释,只要略懂数据库方面的知识用起来应该不难。
itunes备份文件解析入门的更多相关文章
- 用java实现一个简易编译器1-词法解析入门
本文对应代码下载地址为: http://download.csdn.net/detail/tyler_download/9435103 视频地址: http://v.youku.com/v_show/ ...
- SpringBoot快速入门(解析+入门案例源码实现)
这里写目录标题 SpringBoot入门 一.SpringBoot 概念 二.JavaConfig 入门 1. JavaConfig 概念 2. 项目准备 三.常用注解 四.SpringBoot 入门 ...
- javaweb入门20160305---xml的解析入门
一个XML文件除了我们人去读写以外,我们希望可以通过程序去读写,利用程序去增删改查XML的过程就是XML编程 CRUD:Create.Read.Update.Delete XML的两种解析方式 d ...
- xml解析方式之JAXP解析入门
XML解析 1 引入 xml文件除了给开发者看,更多的情况使用[程序读取xml文件]的内容.这叫做xml解析 2 XML解析方式(原理不同) DOM解析 SAX解析 3 XML解析工具 DOM解析原理 ...
- dump解析入门-用VS解析dump文件进行排障
突然有一天部署在服务器的一个应用挂掉了,没办法只能进入服务器打开 [事件查看器]查看下,好不容易找到了打开后一脸懵逼 事件查看器查到的内容根本对我们排障没有任何作用. 在这个时候如果有对应的dump文 ...
- 用python做网页抓取与解析入门笔记[zz]
(from http://chentingpc.me/article/?id=961) 事情的起因是,我做survey的时候搜到了这两本书:Computational Social Network A ...
- PHP模板解析入门
学习:李炎恢PHP视频第二季 模板引擎的特点: 1.鼓励分离:让更个系统的可读性和维护性得到提高. 2.促进分工:使得程序员和美工去专心处理自己的设计. 3.比PHP更容易解析:编译文件和缓存文件加载 ...
- spring架构解析--入门一
Spring 框架中的核心组件只有三个:Core.Context 和 Beans.它们构建起了整个 Spring 的骨骼架构.简单理解: spring core是工具,context是环境,而bean ...
- Linksys WRT120N路由器备份文件解析
Perusing the release notes for the latest Linksys WRT120N firmware, one of the more interesting comm ...
随机推荐
- 【CMD】findstr命令
findstr用来搜索匹配字符串的文件. FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file] [ ...
- ES6笔记-正则表达式和字符串正则方法
RegExp构造函数 在ES5中,RegExp构造函数的参数有两种情况. 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag). var regex = new RegExp( ...
- jsonp 使用示例
客户端: <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>< ...
- Jquery 实现瀑布流布局
//保证img文件夹下有图片//引入jquery <script src="Script/jquery-1.7.2.js"></script> <st ...
- yii2 安装
php版本必须是php5.4以上.记得配置php环境变量 1.下载https://github.com/yiisoft/yii2-app-advanced 2.php -r "readfil ...
- arm-linux-gcc编译器定义寄存器变量
uboot代码中有这么一句话“#define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8")”, ...
- C# 使用Salt+Hash来为密码加密
(一) 为什么要用哈希函数来加密密码 如果你需要保存密码(比如网站用户的密码),你要考虑如何保护这些密码数据,象下面那样直接将密码写入数据库中是极不安全的,因为任何可以打开数据库的人,都将可以直接看到 ...
- git操作回顾:
1. git查看自己的本地分支: ***:~/mysite/mysite$ git branch * master 2. 查看远程分支: ***:~/mysite/mysite$ git branch ...
- Wordpress 网站搭建及性能监控方法详解!
前言 说到 Wordpress,大家往往想到的是博客,其实,如今的 WordPress 已经成为全球使用量最多的开源 CMS 系统.并且,如果你有一定的技术基础稍加改动,就可以搭建出新闻网站.企业网站 ...
- spring 属性配置细节
1.使用构造器注入属性值可以指定参数的位置和参数的类型!以区分重载的构造器.例如:<constructor-arg value="" type="java.lang ...