歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

從WhatsApp的備份數據庫中提取消息

來源:本站整理 作者:佚名 時間:2019-06-17 TAG: 我要投稿

本文我將為大家介紹如何使用Python從WhatsApp恢復消息。并且我會著重解釋如何從WhatsApp的sqlite數據庫中查找和提取對話,并解析那里的字段和數據。這絕不是一項全面的逆向/取證分析的工作 – 我寫這篇文章的唯一原因是,目前我并沒有找到一個你可以信任的可用于此目的免費信息和/或開源工具。所以我想如果我能分享我所做的工作,那么將可以為他人節省一些時間。你可以使用與之相似的過程來分析其他的(messaging)應用程序。
本文我將使用Jupyter Notebooks和Pandas,但幾乎所有代碼都可以獨立于Jupyter使用。用于從WhatsApp sqlite DB中提取消息的代碼(專為Jupyter notebook編寫),你可以在github獲取到。
背景
由于房地產開發商的一些法律問題(有誠實的開發商嗎?)我需要從一個放在壁櫥里兩年的舊iPhone設備中恢復whatsApp信息。
我不是正常的iPhone用戶,所以我開始想辦法來做到這一點,我發現iCloud并沒有賦予訪問實際備份內容的權限。不過這里有一些工具可以幫助你獲取登錄憑證,并允許你瀏覽完整的備份內容,但是我不想將我(妻子)的登錄憑證透露給這些未知工具。所以,我開始研究如何在不損害帳戶安全的前提下做到這一點。
為iPhone充電開機后我發現WhatsApp無法正常工作,并出現了一個奇怪的消息提示Your phone date is inaccurate! Adjust your clock and try again(你的電話日期不準確!請調整你的時鐘并再次嘗試)。我不知道日期問題與啟動WhatsApp有什么關系,但修復日期和時間并沒有解決這個問題,我閱讀了許多網上的解決方案似乎都是建議卸載重裝。但我不想冒這個險,因為在法庭上我需要這些信息作為證據。
第1步 – 從iPhone備份和解壓縮文件
此步驟更適用于Mac OS,盡管它在其他操作系統的工作方式類似。
1.創建虛擬機并在上面安裝iTunes。確保VM未連接到網絡。(如果你不知道如何創建VM,請參閱本文)。
2.將iPhone連接到VM。按照通常的步驟在VM上本地備份iPhone。對于那些對Mac感興趣的人,可以在該位置找到備份:~/Library/Application Support/MobileSync/Backup
備份格式描述請參閱此處。
3.在虛擬機中安裝iPhone備份提取工具(如iExplorer by Macroplant)。哪種工具不重要,因為它無法訪問互聯網,因此你的數據是安全的。
4.最后使用備份提取工具提取chatstorage.sqlite,這是主要的whatsapp會話數據庫。要訪問它你需要瀏覽到“App Group”→“group.net.whatsapp.WhatsApp.shared”
5.另外,你還可以通過提取文件夾來提取media:“App” → “net.whatsapp.WhatsApp” → “Library” → “Media”

第2步 – 連接到數據庫并閱讀消息表
WhatsApp似乎將所有對話存儲在了Sqlite DB中。作為第一步,讓我們嘗試使用sqlite3內置的python庫+Pandas來查看我們是否可以連接到數據庫并獲取表的列:

如你所見,有18張表。通過仔細觀察其中一個表引起了我的注意(即帶有你的消息的那個)似乎是ZWAMESSAGE。讓我們打開它:

可以看到該表中有34列:

讓我們看看我們有什么。以下是我根據我在自己數據庫中的表中找到的數據和我的推論進行的分析:
1. Z_PK — seems like a serial number
2. Z_ENT to ZFILTEREDRECIPIENTCOUNT — seem less important
3. ZFLAGS — seems to indicate message state
4. ZGROUPEVENTTYPE — seems to be related to group chats
5. ZISFROMME — message is from me… it is 1 for messages sent by this user and 0 for messages received
6. ZMESSAGEERRORSTATUS to ZSPOTLIGHTSTATUS — seems like general statuses
7. ZSTARRED — did we star the message
8. ZCHATSESSION — unique identifier denoting a chat session
9. ZGROUPMEMBER — haven’t gotten to look at this one yet
10. ZLASTSESSION — last chat session? didn’t dig into it
11. ZMEDIAITEM — seems related to media item indexing, might be an identifier to one of the other tables
12. ZMESSAGEINFO and ZPARENTMESSAGE — seem simple enough to figure out from the names
13. ZMESSAGEDATE — message creation date probably (see date format discussion below)
14. ZSENTDATE — message sent date probably (see date format discussion below)
15. ZFROMJID — from who did we get it (if it is an incoming message)
16. ZMEDIASECTIONID — seems related to media storage for media messages, doesn’t show in messages without media
17. ZPHASH - hmmm... not sure
18. ZPUSHNAME — seems like the contact name on your phone
19. ZSTANZAID — some conversation / media id indicator. Format seems different in media messages and text messages
20. ZTEXT — message text
21. ZTOJID — to whom did we send it (if it is an outgoing message)
第3步 – 提取特定的對話
我們的基本目標是提取特定的對話或通信。因此,如果我們記住部分文本,我們可以按姓名或電話號碼搜索聯系人,或者按消息搜索特定的對話,最終根據會話ID提取完整的對話。

[1] [2]  下一頁

【聲明】:黑吧安全網(http://www.pcpbjo.tw)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        云南快乐十分前三电视