91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-12-08 16:47:32 來源:億速云 閱讀:139 作者:柒染 欄目:數據安全

如何從WhatsApp的備份數據庫中提取消息,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

我將為大家介紹如何使用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”

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

第2步 - 連接到數據庫并閱讀消息表

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

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

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

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

可以看到該表中有34列:

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

讓我們看看我們有什么。以下是我根據我在自己數據庫中的表中找到的數據和我的推論進行的分析:

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提取完整的對話。

但是,在我們做這些之前,我們應該先弄清楚如何將日期和時間轉換成人類可讀的格式。直覺上我假設zmessagedate是一個unix時間戳。所以我把它轉換成一個日期,這就是我得到的結果:

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

蘋果似乎以其無限獨特的智慧決定在iPhone上使用從1.1.2001開始的日期,所以讓我們看看如果我們將unix-time time0的偏移量添加到1.1.2001,會發生什么情況:

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

這似乎解決了這個問題。在此過程中,我還向data-frame添加了一個日期索引,使其更易于使用。請注意,如果你從Android或其他操作系統導入,則可能不需要使用此日期轉換。

日期有了,現在我們可以開始提取對話了。首先,讓我們提取一個我們關心的對話,比如一個特定的號碼:

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

你應該注意到我創建的lambda用于搜索列。這里有一個讓人失望的Python “Wat” moment ,因為False | None != None | False這是不合理的。無論如何,繼續看ZCHATSESSION列,我們會注意到在我的例子中,這個號碼的會話ID將是“104.0”(如果還有群組聊天,你可能會看到多個聊天會話ID)。所以下一步將是提取聊天會話中的所有消息。為此,讓我們為它和上面提到的其他搜索方法添加適當的訪問器(accessors):

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

現在,讓我們從聊天會話中獲取所有消息并顯示它們(啟用多行格式以查看所有文本):

第4部分 - 結束語及media提取的注意事項

媒體文件被存儲在步驟1中提到的文件夾中,子文件夾基于共享文件的聯系人的電話號碼(以及表示組聊天的后綴?- 這是一個猜測)。每個電話號碼下的子文件夾似乎遵循與iTunes備份格式類似的邏輯,我懷疑消息表引用了媒體表中的鏈接,但我沒有花時間去實際驗證。最后一點要注意的是,一些文件夾還將包含一些thumb文件,這些文件實際上只是JPG文件(重命名即可正常打開)。

Jupyter notebook的代碼可以在Github上找到

我已從中刪除了個人信息,但代碼和示例完全相同。此外,notebook可能還包含了一些額外的信息。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

柏乡县| 沽源县| 周宁县| 大安市| 锦州市| 乐业县| 玉溪市| 施秉县| 小金县| 屏东县| 巴里| 屏山县| 莱阳市| 江阴市| 桃园市| 北碚区| 牙克石市| 定边县| 彭水| 阜平县| 广平县| 新安县| 德钦县| 西城区| 杨浦区| 搜索| 静海县| 分宜县| 桂阳县| 乐陵市| 泰州市| 壶关县| 黄陵县| 东至县| 永和县| 米易县| 临西县| 扎囊县| 柏乡县| 安义县| 吐鲁番市|