一、实现环境:
iOS10.2,arm64位。
二、实现工具:
libimobiledevice工具集中的idevicebackup2对iOS系统进行备份,ideviceunback对备份文件进行解析。
关于libimobiledevice工具集详情见IOS--非越狱下非入侵式可获取的隐私资料、python--libimobiledevice
在 iOS较为低的版本中 idevicebackup2 可以对备份文件进行解析,但是在高版本的iOS系统中,这个功能不可用了。
转而由 ideviceunback 这个第三方库来使用
git地址:https://github.com/inflex/ideviceunback、ideviceunback-master.zip
工具对比
数据提取工具对比
名称所属功能备份选项作用范围备注
idevicebackup2libimobiledevice工具集对所有的iOS版本都可对其进行备份
但只有在较为低的iOS系统中方可对备份文件解析,在高版本(>=iOS9.3.2)无法解析这个工具仅能full backup。不能像android一样有选择的backup。在idevicebackup2的使用中 不仅仅是iOS备份过程需要usb连接手机,解析过程也需要usb连接手机
因此在iOS高版本,apple限制掉了usb连接手机备份的情况。
ideviceunback独立工具仅提供对iOS备份文件解析的功能,能解析全部的iOS系统的备份文件全部这个工具的解析同android一样,不需要类似idevicebackup2,是不需要连接手机解析的,只要有备份文件则可解析。
因此 本过程 是使用的 idevicebackup2 对 iOS系统进行备份,使用 ideviceunback(自己编译,工程中已提供) 对 备份数据进行解析提取的。
三、实现过程
1、备份
fedora上 dnf install libimobiledevice-utils
fedora上 还需dnf install sqlite-devel.x86_64。否则编译ideviceunback工具会报错:ideviceunback.c:30:21: fatal error: sqlite3.h: No such file or directory
需要安装 libimobiledevice 的一系列的库文件,这个在IOS--非越狱下非入侵式可获取的隐私资料、python--libimobiledevice都有介绍,这里不再赘述。
备份命令:./idevicebackup2 backup /Users/danchen/Desktop/bak
对于经常使用的iOS系统 备份过程比较长(我的手机备份时间为40分钟,大小11G)
而且在备份过程中 不能锁屏,一旦锁屏,备份过程无法继续下去。
2、解析
./ideviceunback -v -i /Users/danchen/Desktop/bak -o /Users/danchen/Desktop/unbak
解析出来的文件树太大 有3308 directories, 36196 files。故见tree.txt(使用chrome浏览器打开它)
解析后的文件总大小也是11G
解析用的时间很快 不到2分钟。
四、有用的资料
解析文件中有用的资料整理如下:
1、QQ信息
如QQ登录过几个账号、每个账号中的好友列表、我的二维码、支付二维码、最近联系人。
没有发现QQ、微信 聊天记录的db。
但是其他app的db如知乎、微博的都有。
2、通讯录信息
3、Documents
应用创建的临时文件:如QQ文件接收记录(文件存在)、QQ产生的临时文件(聊天图片)、应用创建的db文件(或sqlite)。没有发现QQ、微信的聊天记录的db。
4、Media
获取完整的iOS系统的相册、拍摄的视频。
5、Calender
获取完整的系统的日历信息、日历标签、日历通知。
6、短信内容
7、屏幕信息
8、手机网络设置信息
主要有 wifi登录信息 如下
ip信息
9、safari浏览记录、书签记录
10、设备蓝牙使用信息
11、通话记录
12、设备充电信息
13、系统便签信息
14、app对系统的设置
如开启定位、开启推送啊之类的设置
五、QQ与微信聊天记录
微信聊天的一种记录解析工具:https://github.com/humiaozuzu/wechat-explorer
在上面通过肉眼 根本无法知道QQ、微信 聊天记录在哪里。
我们来看一下 备份文件的结构
这个即是 设备udid命名的备份文件。点击进去,发现如下
Manifest.db即是总纲,告诉你这些备份文件是怎么回事
如下图
原来备份文件中那么多乱七八糟的文件的对应关系是这样的。通过检索这张表
select * from Files where domain like '%com.tencent.mqq%' and relativePath like '%QQ.db%'
很容易就得到QQ的存储路径在解析文件的 /Users/danchen/Desktop/unbak/Documents/contents/69478086/QQ.db
当然 不只 QQ.db这一个数据库,还有
同理 也可找出微信的聊天在
/Users/danchen/Desktop/unbak/Documents/8057a25d70ca34a6b95d414fc7ec4fe1/DB/MM.sqlite
会话session db存储在 /Users/danchen/Desktop/unbak/Documents/8057a25d70ca34a6b95d414fc7ec4fe1/session/session.db
如上文所述,对微信的db解析 有一种python工具 wechat-exploer。
其源码的基本原理就是对 MM.sqlite 、session.db两个数据库进行数据提取。
不过可惜,这个工具是一年前的工具,对于微信最新版的聊天记录已经无法提取了。
解析关键数据列表
数据位置类型备注
通讯录/Users/danchen/Desktop/unbak/Library/AddressBook/AddressBook.sqlitedb
/Users/danchen/Desktop/unbak/Library/AddressBook/AddressBookImages.sqlitedb数据库文件均未加密
相册
/Users/danchen/Desktop/unbak/Media/DCIM
/Users/danchen/Desktop/unbak/Media/MediaAnalysis
/Users/danchen/Desktop/unbak/Media/PhotoData
/Users/danchen/Desktop/unbak/Media/Recordings图片、视频、音频文件可直接打开
日历
/Users/danchen/Desktop/unbak/Library/calendar/Calendar.sqlitedb
/Users/danchen/Desktop/unbak/Library/calendar/Extras.db
/Users/danchen/Desktop/unbak/Library/calendar/Notifications.db数据库文件均未加密
短信
/Users/danchen/Desktop/unbak/Library/SMS/sms.db
数据库文件均未加密
屏幕信息
/Users/danchen/Desktop/unbak/Library/SpringBoard
屏幕相关信息:屏幕更换过的照片、屏幕状态等plist文件均未加密
safari浏览记录、书签记录
/Users/danchen/Desktop/unbak/Library/Safari/History.db
/Users/danchen/Desktop/unbak/Library/Safari/Bookmarks.db
Users/danchen/Desktop/unbak/Library/Safari/AutoFillCorrections.db
/Users/danchen/Desktop/unbak/Library/Safari/BrowserState.db数据库文件均未加密
设备蓝牙
Users/danchen/Desktop/unbak/Library/Database/com.apple.MobileBluetooth.ledevices.other.db
/Users/danchen/Desktop/unbak/Library/Database/com.apple.MobileBluetooth.ledevices.paired.db数据库文件均未加密
设备充电信息
/Users/danchen/Desktop/unbak/Library/Battery/charge.db
数据库文件均未加密
系统便签信息
Users/danchen/Desktop/unbak/Library/Notes/notes.sqlite
数据库文件均未加密
app对系统的设置
/Users/danchen/Desktop/unbak/Library/Preferences
plist文件均未加密
QQ聊天信息/Users/danchen/Desktop/unbak/Documents/contents/69478086/QQ.db数据库文件均未加密
微信聊天信息/Users/danchen/Desktop/unbak/Documents/8057a25d70ca34a6b95d414fc7ec4fe1/DB/MM.sqlite
/Users/danchen/Desktop/unbak/Documents/8057a25d70ca34a6b95d414fc7ec4fe1/session/session.db数据库文件均未加密
六、总结
与IOS--非越狱下非入侵式可获取的隐私资料一文中 获得的数据一致。
对于深度数据采集而言,我们目前能做到的 即是把各种DB清理出来。
然而对DB的解析和展示,是否需要做,则这个工作量取决于支持的系统版本。
比如:采集系统数据 如短信、通讯录,就要支持iOS系统版本的兼容性。
采集微信、QQ的数据,就要支持微信、QQ的版本。
如果它们的版本有变,这些数据库的表的结构可能会变。
对于iOS系统而言,类似系统数据采集,微信聊天记录采集这样的工具大有存在