记一次微信数据库解密过程

2019 年 2 月 13 日 FreeBuf

本文主要记录手动解密微信数据库的过程,用于技术讨论和交流,思路仅供参考,严禁用于不法用途。

一、解密实践流程

1.对手机进行root授权

2.获取手机IMEI(MEID)码

3.获取微信的uin号

4.将IMEI(MEID)+uin进行MD5,取其前7位(小写)

5. 使用对EnMicroMsg.db解密(笔者使用的是sqlcipher这个工具)

下面来具体说说每一个步骤和相关的知识基础:

1)对手机进行root授权这一步骤是很重要的,针对安卓系统,有很多root授权工具,比如刷机精灵、Kingroot等,我在测试过程中使用的是360超级root(针对高版本的安卓机可能会存在授权问题,但不是本文的重点),此外,在成功获得手机root权限后,也要给相应的应用授权,这里要找到比较有效的搜索文件的工具(笔者使用的RE文件管理器这个文件搜索工具),不然是没办法找到微信的配置权限文件和数据库文件的,这一步如果不成功,后续则无法进行,授权截图如下:

使用RE文件管理器,找到关键文件:

默认安装微信的话,其路径为:

数据库文件:

data/data/com.tencent.mm/MicroMsg/长串字母文件夹/EnMicroMsg.db;

配置文件:

data/data/com.tencent.mm/sharedprefs/systemconfig_prefs.xml

2)在其他网络文章上大部分说的是解密过程中使用的是IMEI号,我在实践测试的过程中是使用的MEID解密的,笔者猜测可能和微信的版本有关系。

获取方式有多个

①简单粗暴的方法:有些可拆卸的电池,挖开外壳,里面可以看到相应的IMEI(MEID)号

② 在拨号键盘上输入“*#06#”:

3)微信uin就是user information,是微信用户信息识别码,可以认为是微信用户身份标识,每个用户都是不一样的,其获取方式在此笔者提供两种:

①使用浏览器自带抓包工具(搜索)可查看

②从第一步获取的微信的配置文件中获取

4)使用工具对字符串进行MD5运算,取其前7位作为最终的解密密码

MEID号(14位)+uin(10位),即输入24位要hash的字符,得到加密后的MD5值,如:

得到相应的解密密码:4abf0ca(小写)

5)使用上述得到的密码对EnMicroMsg.db解密

输入密码后,最终得到:

聊天记录保存在message表中,将其导出后可以看到详细的聊天内容:

二、源码分析为何是这样的字符串组合构成了密码

1. 前面是实现的过程,但是如何查看微信数据库的加密方式呢,当然是分析其源码(逆向)

 虽然微信的apk做了一定的加固,但是并不影响分析数据库享密码组成的逻辑,笔者写这篇文章只是想交流思路,并无其他恶意,下面简单谈一下逆向的思路:

工具准备:

1)安卓版本的微信apk (root手机)

2)静态分析工具

https://github.com/skylot/jadx (编译运行)

3)动态调试工具(Android studio)

2. 反编译weixin.apk:

1)解压weixin.apk,将classes.dex拷贝到dex2jar工具包下(dex2jar工具原理读者可以自行网上查阅相关介绍)

2)使用dex2jar命令生成相应的jar包,然后进行源码分析:

3. 找到关键的代码分析和密码组成原理:

从上面的源码可以看出,微信的加密数据库的解密密码是由“设备的IMEI(MEID)+用户的uin,进行MD5,然后取其前7位小写字母”构成的。

三、总结

上述具体解密过程我自己有制作一段简单的视频,有兴趣的读者可以与我联系。特此提出:本文目的只是想交流一下自己初探加密数据库的心得,有不妥的地方还请大家手下留情,也希望热爱手机取证、计算机取证的小伙伴我们能多多交流!!

*本文作者:西红柿炒鸡蛋bb,本文属FreeBuf原创奖励计划,未经许可禁止转载

登录查看更多
1

相关内容

数据库( Database )或数据库管理系统( Database management systems )是按照数据结构来组织、存储和管理数据的仓库。目前数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
29+阅读 · 2019年10月17日
PC微信逆向:两种姿势教你解密数据库文件
黑客技术与网络安全
16+阅读 · 2019年8月30日
数据库之架构:主备+分库?主从+读写分离?
架构文摘
8+阅读 · 2019年4月23日
亿级订单数据的访问与存储,怎么实现与优化?
码农翻身
16+阅读 · 2019年4月17日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
手把手教你用Python创建微信聊天机器人
新智元
4+阅读 · 2018年3月14日
爬了自己的微信,原来好友都是这样的!
七月在线实验室
4+阅读 · 2018年1月18日
Mesh R-CNN
Arxiv
4+阅读 · 2019年6月6日
Two Stream 3D Semantic Scene Completion
Arxiv
4+阅读 · 2018年7月16日
Arxiv
6+阅读 · 2018年5月18日
Arxiv
5+阅读 · 2018年5月1日
Arxiv
14+阅读 · 2018年4月18日
Arxiv
5+阅读 · 2018年3月6日
Arxiv
5+阅读 · 2015年9月14日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关资讯
PC微信逆向:两种姿势教你解密数据库文件
黑客技术与网络安全
16+阅读 · 2019年8月30日
数据库之架构:主备+分库?主从+读写分离?
架构文摘
8+阅读 · 2019年4月23日
亿级订单数据的访问与存储,怎么实现与优化?
码农翻身
16+阅读 · 2019年4月17日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
手把手教你用Python创建微信聊天机器人
新智元
4+阅读 · 2018年3月14日
爬了自己的微信,原来好友都是这样的!
七月在线实验室
4+阅读 · 2018年1月18日
相关论文
Mesh R-CNN
Arxiv
4+阅读 · 2019年6月6日
Two Stream 3D Semantic Scene Completion
Arxiv
4+阅读 · 2018年7月16日
Arxiv
6+阅读 · 2018年5月18日
Arxiv
5+阅读 · 2018年5月1日
Arxiv
14+阅读 · 2018年4月18日
Arxiv
5+阅读 · 2018年3月6日
Arxiv
5+阅读 · 2015年9月14日
Arxiv
3+阅读 · 2012年11月20日
Top
微信扫码咨询专知VIP会员