2016-11-22 60 views
0

我想組織一個包含Whatsapp組中所有照片的相冊。 使用rooted手機,我已將未加密的whatsapp數據庫下載到我的電腦。WhatsApp數據庫中每個媒體文件的鏈接位置

在Ubuntu上使用Sqliteman我環顧四周,特別是在msgstore.db中,似乎無法找到指向特定組圖像的所有鏈接。

對於表「chat_list」,我看到一個特定的「key_remote_jid」值對應於我想要的組,並且在「messages」數據庫中,我可以使用該「key_remote_jid」來獲取與該組有關的所有消息像:

select * from messages where key_remote_jid="[email protected]"; 

而且我可以放棄的短信,以重點我想在媒體上(照片和視頻爲主)由

select * from messages where key_remote_jid="[email protected]" and not media_wa_type = 0; 

而一些有欄下有一個文件名的圖像「media_name」,但它們只是那些 我已經發送了。

還有另一張名爲「media_refs」的表,其中包含許多圖像和視頻路徑,但似乎只包括已轉發給多個聊天的文件,並且有一個關鍵字,但我沒有找到與關聯的關鍵字「消息」表。

該組織相當老舊(可以追溯到2013年),似乎whatsapp處理其數據庫的方式多年來一直在變化,因爲有些列過去一直保持{null},而不是最近一次消息(如participant_hash)和值key_id似乎會在某個時刻更改格式。

但是,Whatsapp應用程序在向我顯示過去任何時候的文件並且給我選擇使用「Gallery」類型軟件打開實際文件的選項時沒有問題,所以信息在我的手機某處。

所有這一切的關鍵是基本上有一個備份我可以使用,並能夠從我的手機刪除圖像,仍然有他們在該組共享相同的方式組織。

回答

2

我找到表messages的欄thumb_image中的Whatsapp圖像的鏈接,作爲blob。您可以在十六進制中查看blob並查找可能看起來像這樣的字符串Whatsapp Images\IMG-20130101-WA0001.jpg。我不確切知道Whatsapp在哪裏存儲鏈接,但這對我有用。

這是我如何設法提取鏈接:

select 
    _id, 
    media_mime_type, 
    substr(
     substr(thumb_image,instr(thumb_image,'IMG'),60) 
     ,instr(substr(thumb_image,instr(thumb_image,'IMG'),23),'IMG') 
     ,23) 
from `messages` 
where 
    `key_remote_jid` like '%<your desired contact>%' 
    and `media_mime_type` like '%image%'; 

我用DB Browser for SQLite做到這一點在Windows中。

+0

哇!謝謝,我想是這樣,我幾乎給了希望。然而,我在幾臺沒有「instr」功能的計算機上運行sqlite 3.7.9和3.7.13。所以我試圖修改腳本,如下所示:https://www.techonthenet.com/sqlite/functions/instr.php(但我在第一次替換時遇到了語法錯誤instr爲「哪裏」,我試圖更好地理解它) – JunCTionS

+0

好吧,放棄了。剛剛從這裏下載了一個預編譯的二進制文件:https://sqlite.org/download.html,它的工作非常好!非常感謝你! – JunCTionS

+0

哦,如果任何人想知道,對於視頻的命令如下所示: 選擇_id,media_mime_type,SUBSTR(SUBSTR(thumb_image,INSTR(thumb_image, 'VID'),60),INSTR(SUBSTR(thumb_image,INSTR (thumb_image, 'VID')從'messages',23), 'VID'),23)其中'key_remote_jid' LIKE '%<您希望的接觸>%' 和'media_mime_type' LIKE '%視頻%'; – JunCTionS