2016-11-22 185 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