真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何從WhatsApp的備份數(shù)據(jù)庫中提取消息

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

按需定制可以根據(jù)自己的需求進行定制,成都網(wǎng)站建設(shè)、網(wǎng)站制作構(gòu)思過程中功能建設(shè)理應(yīng)排到主要部位公司成都網(wǎng)站建設(shè)、網(wǎng)站制作的運用實際效果公司網(wǎng)站制作網(wǎng)站建立與制做的實際意義

我將為大家介紹如何使用Python從WhatsApp恢復(fù)消息。并且我會著重解釋如何從WhatsApp的sqlite數(shù)據(jù)庫中查找和提取對話,并解析那里的字段和數(shù)據(jù)。這絕不是一項全面的逆向/取證分析的工作 - 我寫這篇文章的唯一原因是,目前我并沒有找到一個你可以信任的可用于此目的免費信息和/或開源工具。所以我想如果我能分享我所做的工作,那么將可以為他人節(jié)省一些時間。你可以使用與之相似的過程來分析其他的(messaging)應(yīng)用程序。

我將使用Jupyter Notebooks和Pandas,但幾乎所有代碼都可以獨立于Jupyter使用。用于從WhatsApp sqlite DB中提取消息的代碼(專為Jupyter notebook編寫),你可以在github獲取到。

背景

由于房地產(chǎn)開發(fā)商的一些法律問題(有誠實的開發(fā)商嗎?)我需要從一個放在壁櫥里兩年的舊iPhone設(shè)備中恢復(fù)whatsApp信息。

我不是正常的iPhone用戶,所以我開始想辦法來做到這一點,我發(fā)現(xiàn)iCloud并沒有賦予訪問實際備份內(nèi)容的權(quán)限。不過這里有一些工具可以幫助你獲取登錄憑證,并允許你瀏覽完整的備份內(nèi)容,但是我不想將我(妻子)的登錄憑證透露給這些未知工具。所以,我開始研究如何在不損害帳戶安全的前提下做到這一點。

為iPhone充電開機后我發(fā)現(xiàn)WhatsApp無法正常工作,并出現(xiàn)了一個奇怪的消息提示Your phone date is inaccurate! Adjust your clock and try again(你的電話日期不準確!請調(diào)整你的時鐘并再次嘗試)。我不知道日期問題與啟動WhatsApp有什么關(guān)系,但修復(fù)日期和時間并沒有解決這個問題,我閱讀了許多網(wǎng)上的解決方案似乎都是建議卸載重裝。但我不想冒這個險,因為在法庭上我需要這些信息作為證據(jù)。

第1步 - 從iPhone備份和解壓縮文件

此步驟更適用于Mac OS,盡管它在其他操作系統(tǒng)的工作方式類似。

1.創(chuàng)建虛擬機并在上面安裝iTunes。確保VM未連接到網(wǎng)絡(luò)。(如果你不知道如何創(chuàng)建VM,請參閱本文)。

2.將iPhone連接到VM。按照通常的步驟在VM上本地備份iPhone。對于那些對Mac感興趣的人,可以在該位置找到備份:~/Library/Application Support/MobileSync/Backup

備份格式描述請參閱此處。

3.在虛擬機中安裝iPhone備份提取工具(如iExplorer by Macroplant)。哪種工具不重要,因為它無法訪問互聯(lián)網(wǎng),因此你的數(shù)據(jù)是安全的。

4.最后使用備份提取工具提取chatstorage.sqlite,這是主要的whatsapp會話數(shù)據(jù)庫。要訪問它你需要瀏覽到“App Group”→“group.net.whatsapp.WhatsApp.shared”

5.另外,你還可以通過提取文件夾來提取media:“App” → “net.whatsapp.WhatsApp” → “Library” → “Media”

如何從WhatsApp的備份數(shù)據(jù)庫中提取消息

第2步 - 連接到數(shù)據(jù)庫并閱讀消息表

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

如何從WhatsApp的備份數(shù)據(jù)庫中提取消息

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

如何從WhatsApp的備份數(shù)據(jù)庫中提取消息

可以看到該表中有34列:

如何從WhatsApp的備份數(shù)據(jù)庫中提取消息

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

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步 - 提取特定的對話

我們的基本目標是提取特定的對話或通信。因此,如果我們記住部分文本,我們可以按姓名或電話號碼搜索聯(lián)系人,或者按消息搜索特定的對話,最終根據(jù)會話ID提取完整的對話。

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

如何從WhatsApp的備份數(shù)據(jù)庫中提取消息

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

如何從WhatsApp的備份數(shù)據(jù)庫中提取消息

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

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

如何從WhatsApp的備份數(shù)據(jù)庫中提取消息

你應(yīng)該注意到我創(chuàng)建的lambda用于搜索列。這里有一個讓人失望的Python “Wat” moment ,因為False | None != None | False這是不合理的。無論如何,繼續(xù)看ZCHATSESSION列,我們會注意到在我的例子中,這個號碼的會話ID將是“104.0”(如果還有群組聊天,你可能會看到多個聊天會話ID)。所以下一步將是提取聊天會話中的所有消息。為此,讓我們?yōu)樗蜕厦嫣岬降钠渌阉鞣椒ㄌ砑舆m當?shù)脑L問器(accessors):

如何從WhatsApp的備份數(shù)據(jù)庫中提取消息

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

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

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

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

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

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。


網(wǎng)站題目:如何從WhatsApp的備份數(shù)據(jù)庫中提取消息
網(wǎng)頁鏈接:http://weahome.cn/article/ijejso.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部