本站电脑知识提供应用软件知识,计算机网络软件知识,计算机系统工具知识,电脑配置知识,电脑故障排除和电脑常识大全,帮助您更好的学习电脑!不为别的,只因有共同的爱好,为软件和互联网发展出一分力! 我们知道,微信的聊天记录是加密的,因而我们不能从文件中直接查看、导出。本文主要介绍如何把聊天记录解密、导出成 SQL 或 csv 文件。 手机微信数据库导出方法 1—— 某些手机无需 root 即可备份某些手机(比如某米、某为)通过官方的 APP(无需 root)即可把微信手机端的应用数据备份到电脑或者 SD 卡上。 但是我在实际操作的时候碰到了困难,我用的是某为手机,在电脑端和手机端均安装了官方提供的手机助手软件以后,正准备备份微信这个应用的数据,竟然一定要我输入密码进行加密,备份数据加密后就无法进行后续的操作了。我只好放弃了这个办法。 方法 2——root如果你的手机已经 root,那么你可以直接使用?adb?将?/data/data/com.tencent.mm?复制即可。
考虑到安全因素,我没有选择这种方法。 方法 3—— 安卓模拟器我们可以在电脑上安装一款安卓模拟器,然后里面下载手机微信并登录,然后将手机端聊天记录备份到电脑端微信,再将电脑端聊天记录恢复到安卓虚拟器里的微信。现在对安卓虚拟器进行 root,然后我就可以进入?/data/data/ 下面我简单讲一下整个步骤: 根据前人的分析,微信数据库?EnMicroMsg.db?的密码是由?MD5(IMEI + uin).substring(0, 7)?生成的。因此,我们需要找到?IMEI?和?uin?值。 我通过在模拟器上安装这个工具:Find IMEI?来查看?IMEI。 下载 apk,然后把 apk 放入到?BluestacksCN/Engine/ProgramData/Engine/UserData/SharedFolder?这个文件夹中,我们就可以在模拟器的?/sdcard/windows/BstSharedFolder?文件夹中找到了,然后直接安装,打开就直接显示出?IMEI?了。 我们也可以在?/data/data/com.tencent.mm/shared_prefs/DENGTA_META.xml?中查找名为?IMEI_DENGTA?的值。 uin(unique identifier)是唯一标识符(整数类型),微信分配每个用户的唯一标识符,它具有不可重复性,也就是说这个世界上没有两个?uin?相同的微信号。 我们可以在?/data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml?找到?default_uin,后面的数字就是我们要找的?uin?了。 我们也可以登录 web 微信,按 F12 打开网页调试工具,然后?ctrl+F?搜索?uin,可以找到一串长长的 URL,里面的?uin?就是当前登录的微信的?uin。 注意: 我们可以使用:MD5 在线计算来计算 MD5 值,密码即为 32 位的前 7 位(小写)。 微信使用了?sqlcipher?加密了数据库,因此,我们也可以使用?sqlcipher?进行解密。 SQLCipher 是一个在 SQLite 基础之上进行扩展的开源数据库,它主要是在 SQLite 的基础之上增加了数据加密功能,如果我们在项目中使用它来存储数据的话,就可以大大提高程序的安全性。 Windows 用户可以直接使用?sqlcipher.exe?打开?com.tencent.mm/MicroMsg/[weixin_name]/EnMicroMsg.db,在弹出的窗口输入刚刚生成的 7 位密码。 sqlcipher.exe?其实是 SQLite Database Browser 软件再嵌套了解密功能。 注意:sqlcipher 不同版本使用的加密方式不同,如果解密用?sqlcipher?版本和加密用的?sqlcipher?版本不一样,会提示?file is not a database,实际错误是解密失败。目前发现?2.1?版本的 sqlcipher 可以正常解密。 然后我们可以在?Browse Data?菜单栏处查看数据中各个数据表。 我们可以点击菜单栏的?File-Export-Table as CSV file,选择 message 表,导出成?csv?文件。如果直接用 Excel 打开这个表格,可能会显示乱码。所以我们新建一个 Excel 表格,点击数据 - 来自文本,然后导入这个.csv?文件。在弹出的第一个下拉框中选择?GB2312,然后载入就不会出现乱码。 安装 sqlicipher: 解密数据库文件,这里我们要输入前面得到的密码: 然后我们就得到了解密的数据库?decrypted_database.db,我们可以用自己熟悉的数据库软件打开。 我们主要使用以下三个表: 微信文字聊天记录在数据表?message?中。我们可以根据?talker?这个字段来筛选出特定用户的聊天记录。如果为群聊,那么?message.talker = chatroom.chatroomname。message.content?中存储形式为:群成员wxid:\n内容。 比如,我们可以查询与某人的聊天记录,下面是 SQL 语句: 学习教程快速掌握从入门到精通的电脑知识。 |
温馨提示:喜欢本站的话,请收藏一下本站!