一、實現環境:
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系統而言,類似系統數據采集,微信聊天記錄采集這樣的工具大有存在