微信数据库最新的解密方式,使用C++代码解密微信加密数据库信息!

2023-05-16

原文转载于:https://blog.csdn.net/jiangwei0910410003/article/details/79436956

一、知识回顾

最近有人找我弄微信数据库解密的东西,其实这个现在网上都公开了,我在很早之前就静态分析过微信数据库加密算法,不了解的同学可以查看这里:Android中静态方式破解微信数据库加密密码,所以现在有人找我的话我都会告诉他们这个内容,微信数据库加密的密码很简单就是:MD5(IMEI+UIN).Substring(0, 7).toLower;设备的imei和微信登录账号后的唯一表示uin值拼接然后计算MD5值,取前7位在变成小写字母即可。这个我在那篇文章最后也说到了,这个加密算法不会变化的,因为维系为了兼容以前版本,如果数据库加密算法变动,那么老版本的用户升级到新版本,老版本的数据库解密就会失败,也就是用户看不到以前的消息内容了,这个用户会疯的,所以微信即使知道了这个算法被破解了,他也是没办法升级的,所以现在不会变,以后也不会变的。但是比较奇葩的是他按照我的文章操作计算出来的密码还是不可以。所以我就让他把我的数据库文件传给我我来解密,中间其实我遇到了问题最后才知道被微信转码坑了,因为他微信把IMEI和UIN传递给我了,结果我直接复制计算MD5是错的,最后才知道微信消息中有转码的。

 

二、获取解密密码

所以开始就计算错误,他一度怀疑微信的加密算法是不是变化了,但是这一点我还是坚信微信不可能换加密算法的,这个原因我之前也说了,对于微信来说几乎是不可能操作的。然后他就在网上搜找到一个收费的PC端工具,大致是这样的:

只需要选择微信的数据库目录MicroMsg即可,就可以识别出来用户,然后点击指定用户就可以查看对应的数据了,所以他这么一说我倒是有点怀疑我的方法了?因为毕竟他用这个工具解密是没有问题的。所以我就用这个工具查看了一下的确没问题,那么为什么这个工具可以解密成功呢?所以我就想探究这个工具的原理,但是我不会PC端的软件逆向,但是我们可以借助强大的逻辑排除法定位,你看这个工具是需要选择微信数据库目录的,也就是这样的格式:

我就好奇了,我们在之前的文章中了解到用忽的UIN是存储在xml中的,但是你看这个工具只要导入这个目录就可以解密,也就是说他能够拿到设备imei和uin值,所以我就怀疑他读取这个目录下的几个文件获取的,那么就一个一个排除,首先通过肉眼判断哪些文件肯定不是的,最后发现就这几个cfg文件打开是二进制文件,所以怀疑对象就在这几个文件了,因为文件不多,我们可以这么排除,就是通过逐一修改文件名,然后在用那个工具解密,如果提示错误了,那么就表示这个文件是关键的,通过最后排查,有两个文件不能修改,也就是上图中文件名后面没有11的两个,一个是systemInfo.cfg和CompatibleInfo.cfg了。那么这个文件是二进制文件,怎么解密呢?这个就简单了,直接用Jadx全局搜这两个文件:

运气很好,正好在第一个dex中就搜到了,点进去查看:

继续点进去查看:

到这里就看明白了,原来不是什么加密操作,而是序列化对象到文件中,那么想看这个文件的原始内容就简单了,我们去写一个Java程序把文件中的内容读取出来是Map结果,然后把所有的key和value打印看看结果:

运行看看结果:

因为之前他在微信上把他的uin和imei发给我了,所以我一眼就看到了这里有他的imei和uin值,也就是说那个工具的确是通过这两个序列化文件来获取imei值和uin值然后计算密码的,所以我再一次相信他也是用MD5计算那个密码的,所以这时候我就不用他发给我的那个信息了,我就从这里打印的结果直接计算结果,然后在用sqlcipher.exe工具直接查看,竟然解开了:

所以再一次确认了微信的数据库加密算法没有变化,那为什么他还是没解开呢?因为最后也确认了他和我计算的密码是一样的?那么我就要怀疑他使用的sqlcipher.exe工具了,最后果然是工具出了问题,我把我发给他的工具就可以用了。所以这个过程我被他微信发给我的信息坑了,他被解密数据的工具坑了。不过不管怎么样都成功了。所以以后如果你在操作微信解密失败问题,一定不要怀疑微信算法变了,不可能变的。如果有错误可能这些原因:

第一、现在很多设备都有很多个imei值,一般是两个,所以如果一个失败了,就尝试第二个。因为你不知道微信获取的是哪个imei值。

第二、获取imei值我们会用简单的拨号和设置中进行查看,这里我用小米 4+6.0系统验证发现这两种方式查看的值是不一样的,而拨号的方式是正确的。

第三、就是有的同学imei和uin值都获取对了,但是计算MD5和全是字母小写这一点弄错了,也要注意。

如果以上都没有问题,那么还是解密失败,就请怀疑你使用给的sqlcipher.exe工具吧,不过没关系了,从现在开始我要带你们开发这个工具,以后只要用我的工具就可以了。

 

三、C++代码解密数据库

那么到这里本文就算结束了吗?本来是结束了,因为帮他搞定了解密,但是我就去看了那个工具,发现他查看消息和其他功能都是收费的,这我就不答应了,这么简单的功能还收费,我就喜欢做免费的东西,所以在那一刻之后我决定了自己开发这个工具,功能和他都是差不多,只需要导入MicroMsg目录就可以预览信息了。那么在写这个工具之前,我们不用C++来编写界面,因为我不会,我只会用Java写界面,但是SQLCipher官网中没有Java中可以使用的jar功能,但是我们在之前的文章已经在VS中用C++实践成功了,所以我们可以用Java开发JNI来调用dll文件,把解密工作放到C++中做,数据展示放到Java层做这样就没问题了。其实主要还是我不会C++的图形化开发,我也不想去折腾学习了,因为我觉得价值不是很大。而且用Java做我们可以回顾JNI开发知识也是一件很好的事情。

那么不多说了,先来解决第一件事就是利用之前的文章说的SQLCipher代码来解密微信数据库看看能否成功,代码修改很简单,直接把我们计算的密码替换一下,然后把微信的加密数据库EnMicroMsg.db放到工程目录下,运行即可:

可惜的是运行代码提示数据库加密了,也就是我们解密数据库失败了,但是我们用sqlcipher.exe工具查看都没有问题,所以这里的密码是没有问题的,但是哪里出问题呢?代码也是没问题,因为我们之前写的demo都没有问题,所以就怀疑微信的数据库加密做了一些其他设置,我们可能还需要设置一些东西,就跑去SQLCipher官网查看api:

然后找到这些内容,就尝试执行这些命令:

然后在执行程序:

这样就成功了,把userinfo数据表中的数据都成功打印出来了,到这里本文的内容就结束了,后面还有一篇文章介绍如何利用JNI把C++层的解密数据传递到Java层中进行展示,以及如何开发出工具。因为篇幅过长,本文就不在继续讲解了。

 

那么看完本文之后,了解到微信中会把uin值和imei值序列化到cfg文件中,所以从这里看到我们的确只需要MicroMsg目录就可以进行解密操作了,但是我也发现

加密数据库都放在这种类似于md5文件夹下面,所以我们为了后面更好的操作,所以我们要搞清楚这个文件夹名字怎么来的,这个比较简单,再去dex文件中跟踪即可:

点进去查看跟踪可以看到,这里其实我不想说了,因为我之前在网上看到其他人说了,这个文件夹的算法就是:MD5("mm"+uin).toLower 即可。所以我就直接告诉大家了。

当然因为现在微信作为最常用的聊天通信工具,很多人的聊天信息都保存了,当然微信官方说好了不会上传用户的聊天记录,所以有时候当我们无意中丢失了和朋友之间的聊天记录在找回来很麻烦了,比如手机摔坏了想找回聊天记录怎么办?这时候我们可以这么做吧手机的内存卡卸载下来,这一步一般如果不是一个喜欢动手的同学可以去找专业人员操作:

卸载下来之后直接可以用电脑访问,这时候看到就是有root身份直接访问微信的沙盒数据,然后直接用这种解密方式就可以找回微信信息进行保存即可。当然如果你在大马路上无意中捡到一部手机的话,如果无法解锁找到失主,最好的方式是交给JC叔叔,当然你可以还有其他办法找到失主,这里不方便多说,当然也有现在很多JC叔叔破案可以通过手机中的微信聊天记录找到线索,如果有了犯罪分子的手机可以通过这种方式进行操作。

 

本文涉及到的代码项目可以去编码美丽小密圈自取,欢迎加入小密圈一起学习探讨技术

 

四、总结

本文的内容就介绍完了,主要是利用C++代码解密微信数据库内容,只要这一步成功了,后续的工具就是把数据展示出来即可,这个是下一篇文章的内容了,敬请期待。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信数据库最新的解密方式,使用C++代码解密微信加密数据库信息! 的相关文章

  • (八)linux中断实现

    目录 一 linux中断的实现二 中断号三 中断的标志四 中断源对应的中断服务程序五 中断服务程序与原子上下文六 等待队列七 附录 一 linux中断的实现 span class token macro property span clas
  • i3wm 屏幕配置踩坑

    i3wm 屏幕配置踩坑 前言踩坑 前言 自从18 19年开始正式使用linux作为我的开发系统就一直没有换回windows 从一开始的 ubuntu 到后来的manjaro 感觉越来越有意思可玩性很高 至于我我什么不换回windows 原因
  • 这个Python库太强了,竟然能把图片,视频无损清晰放大!

    这几天在逛GitHub的时候发现了一个非常牛逼的库 xff0c 竟然有逆天的功能 xff0c 一个用Python做的库 xff0c 利用机器学习算法把图片无损的放大很多倍 这个库叫video2x xff0c 目前收获1500颗星 xff0c
  • 字符串和枚举的互相转化

    字符串和枚举的互相转化 字符串转枚举枚举转字符串总结 字符串转枚举 提示 xff1a 关键代码Enum Parse 代码如下 xff08 示例 xff09 xff1a string str span class token operator
  • CentOS7 安装mysql(YUM源方式)

    CentOS7 安装mysql xff08 YUM源方式 xff09 1 下载mysql源安装包 wget http dev mysql com get mysql57 community release el7 8 noarch rpm
  • Linux(5)---Linux中nano命令

    nano是一个字符终端的文本编辑器 xff0c 有点像DOS下的editor程序 它比vi vim要简单得多 xff0c 比较适合Linux初学者使用 某些Linux发行版的默认编辑器就是nano nano命令可以打开指定文件进行编辑 xf
  • Centos7安装配置桌面环境xfce

    1 centos最小化安装之后由于没有桌面环境 xff0c gnome太大 xff0c 所以找一个小的桌面环境用于一些不方便命令行的操作 2 首先是连接到网络 xff08 不详细展开了 xff09 3 安装桌面环境 yum groupins
  • 利用RSA+AES 前后端对数据进行加密处理 -- 整体思路

    利用RSA 43 AES 前后端对数据进行加密处理 整体思路 前言RSA加密算法RSA简介RSA缺点 AES加密算法AES简介AES缺点 RSA 43 AES 整体流程 前言 目前项目中需要对接口中的一些参数进行加密处理 xff0c 考虑了
  • centos7安装FreeSwitch,以及设置Freeswitch开机自启

    一 下载指定版本的freeswitch cd usr local src git clone branch v1 10 7 https github com signalwire freeswitch git 也可以下载1 10 7的压缩包
  • [iOS] TableViewCell 自适应高度

    说明 TableViewCell 几乎是必用控件 xff0c 使用 TableViewCell 免不了计算其 cell 高度 xff0c 网上也有非常多关于 TableViewCell 高度自适应的文章 xff0c 自己也尝试总结了计算ce
  • Tmux 使用教程

    转载自Tmux 使用教程 作者 xff1a 阮一峰 URL xff1a http www ruanyifeng com blog 2019 10 tmux html Tmux 1 Tmux 是什么 xff1f 1 1 会话与进程1 2 Tm
  • MacOS 下 VScode 编译运行 C/C++ (ACM向)简单粗暴

    VSCode 的下载 安装 在 VSCode 官网 点击 Download for Mac 开始下载 xff0c 之后双击下载完成的文件等待一会就安装好了 必备插件安装 VSCode 启动后 xff0c 点击左侧最下的方块形按钮 xff08
  • 写在2019年ACM-ICPC亚洲区域赛宁夏站之后——一只菜鸡的ACM生涯

    写在2019年ACM ICPC亚洲区域赛宁夏站之后 一只菜鸡的ACM生涯 一晃时间就过去了 xff0c 接触ACM也将近一年半的时间 在这段时间里 xff0c 有过找不出来bug的难受体验 xff0c 也有过茅塞顿开的兴奋激动 xff1b
  • win10下安装Anaconda3后cmd中运行“conda”命令显示“‘conda’不是内部或外部命令,也不是可运行的程序”的解决方法

    找到安装目录 Anaconda3 xff0c 例如我的是 C Users zuoyu Anaconda3 xff1b 将 Anaconda3 Anaconda3 Scripts Anaconda3 Library bin 三个目录添加到系统
  • VS Code中使用Code Runner运行Python代码时中文乱码问题解决

    在配置文件 setting json 中加入如下代码即可 34 code runner executorMap 34 34 python 34 34 set PYTHONIOENCODING 61 utf8 amp amp python u
  • 【PAT】B1019 数字黑洞

    给定任一个各位数字不完全相同的 4 位正整数 xff0c 如果我们先把 4 个数字按非递增排序 xff0c 再按非递减排序 xff0c 然后用第 1 个数字减第 2 个数字 xff0c 将得到一个新的数字 一直重复这样做 xff0c 我们很
  • 【PAT】B1030 完美数列

    给定一个正整数数列 xff0c 和正整数 p xff0c 设这个数列中的最大值是 M xff0c 最小值是 m xff0c 如果 M mp xff0c 则称这个数列是完美数列 现在给定参数 p 和一些正整数 xff0c 请你从中选择尽可能多
  • 【PAT】B1025 反转链表

    给定一个常数 K 以及一个单链表 L xff0c 请编写程序将 L 中每 K 个结点反转 例如 xff1a 给定 L 为 1 2 3 4 5 6 xff0c K 为 3 xff0c 则输出应该为 3 2 1 6 5 4 xff1b 如果 K
  • jupyter notebook中安装完nb_conda后,change kernel中仍然没有所需环境

    问题前解 xff1a jupyter notebook创建新的环境时遇到困难解决笔记 没有所需环境 xff0c 但按上述解决方案解决过 问题解决方案 xff1a 需要增加kernel xff1a python m ipykernel ins
  • 使用Code:Blocks调试程序

    首先 xff0c 工程路径必须是英文 xff0c 不然根本打不开Debug模式 鼠标停留在debug栏按钮上会显示名称 将光标移至代码开始行 xff08 自定 xff0c 如程序有scanf xff0c 建议移至scanf下一行 xff09

随机推荐

  • 对string类型sort

    algorithm算法库里的sort函数超级好用 xff0c 那么怎么将string类型当成字符数组一样进行排序呢 只要将需要排序的string的首尾地址放入就行啦 也可以用自己写的cmp函数当成排序规则 传参就可以 include lt
  • BFS算法求迷宫的最短路径

    BFS Breadth First Search 算法的具体实现就是 xff1a 通过不断取得某个状态能够达到的所有状态并将其加入队列尾 xff0c 并且由于队列本身的特性先加入队列的状态总是先得到处理 xff0c 这样就可以总是先将需要转
  • JS Uncaught DOMException: Blocked a frame with origin “XXX“ from accessing a cross-origin frame问题解决

    问题描述 xff1a Uncaught DOMException Blocked a frame with origin 34 http localhost 46819 34 from accessing a cross origin fr
  • Windows 正在连接xxx...无法打开到主机的连接。在端口xxx:连接失败问题解决

    问题描述 xff1a 正在连接10 10 13 206 无法打开到主机的连接 在端口8146 xff1a 连接失败 问题分析 xff1a 1 使用telnet命令连接主机时 xff0c 主机的8146端口没有对外开放 解决办法 xff1a
  • 常用命令

    1 xff1a gammping地图保存命令 rosrun map server map saver span class token operator span f your map 2 xff1a 进入功能包和查看列表 roscd am
  • %time与%timeit

    time timeit 要在ipython下才可以使用 xff08 所以说Jupyter Notebook当然是可以用的 xff0c pycharm里的python环境也是jupyter Notebook的 xff09 time可以测量一行
  • pytorch加载与修改预训练模型

    pytorch加载与修改预训练模型 有时会希望用预训练的模型来fine tune或是作为初始化 xff08 毕竟初始化权重真的玄学 xff09 xff0c 但是不需要其中某一些层 xff0c 这时候就需要对加载的预训练模型做一些修改 如果已
  • Unsupervised Data Augmentation For Consistency Training 论文阅读

    Unsupervised Data Augmentation For Consistency Training 论文阅读 UDA这篇文章针对的是半监督学习中无标签数据的增强 xff0c 论文提出 xff0c 使用有标签数据的data agu
  • 关于opencv中resize时间性能的一种说法

    用github中的开源代码时 xff0c 发现报了这样一段话 xff1a OpenCV is built with OpenMP support This usually results in poor performance For de
  • 禁用树莓派休眠

    要想永久禁用树莓派休眠 xff0c 我们可以在 etc profile d路径下新建一个file xff0c 如Screen sh xff0c 并将下面两条命令写入该文件 xff0c 即可以实现永久禁用 x setdpms 0 0 0 xs
  • paddle课程学习与paddle工具体验

    感谢pd课程的引入 xff0c 不然自己学天天看文档 xff0c 还是挺烦的 这些天试了paddle很多的工具 xff0c 包括paddlehub xff0c paddledetection xff0c paddleslim xff0c p
  • 解决:vue3使用axios返回json用v-for遍历失效,标签不渲染

    遇到vue用axios请求后端json对象 xff0c 发现vue页面对应的v for标签怎么都不渲染 首先控制台打印数据正常 xff0c 以为错误出现在生命周期钩子上面 axios请求在dom渲染之后 xff0c 但是一顿操作之后还是没有
  • anaconda3:conda not found问题

    文章仅仅针对ubuntu系统下 xff0c 本人设备产生的conda not found问题进行分享 注 xff1a 1 xff09 系统ubuntu 20 04 LTS xff0c 英伟达3090 GPU xff0c CUDA 61 61
  • 【环境】WIN10 VS2019 OSG环境配置

    在WIN10环境 VS2019编译器下 xff0c 配置OSG3 4 1的32位版本 本来是参考这篇文章WIN10系统下OSG 43 VS2017环境搭建 配置64位的 xff0c 但是在VS2017 VS2019的电脑上都未配置成功 就用
  • 安装python报错 An error occurred during the installation of assembly 'Microsoft.VC90.CRT,version = "9.0.

    报错如上图 解决办法 xff1a 在右键以管理员方式打开安装包后 xff08 不这样打开也可以 xff09 xff0c 选择当前用户 xff0c 而不是for all users
  • VB6.0学习笔记

    label控件的精妙应用 Caption属性 xff1a 通用的标题属性 xff0c 更改上面的文字 Backcolor属性 xff1a 控件的背景颜色 Forecolor属性 xff1a 前景色 xff0c 其实就是文字的颜色 Font属
  • MATLAB如何进行系统辨识(传递函数)

    MATLAB有一个常用的系统辨识工具箱 xff0c 能够根据输入输出数据计算得到系统的传递函数 xff0c 或是状态空间模型 xff0c 下面给出具体的实施方法 1 准备 将输入输出数据保存存到MATLAB的工作空间中 xff1b Matl
  • 升级sublime text4后激活及问题

    激活 1 打开浏览器进入网站https hexed it 2 打开sublime text4安装目录选择文件sublime text exe 3 搜索80 38 00更改为FE 00 90 第一个匹配到的 4 保存文件命名为sublime
  • Typecho博客支持Emoji表情功能设置

    Typecho 采用默认方式安装之后不支持 Emoji 表情 xff0c 是由于 MySQL 数据库编码的问题 只需要将默认的数据库编码从 utf 8 修改为 utf8mb4 即可 xff0c 不过 utf8mb4 编码在 PHP 5 5
  • 微信数据库最新的解密方式,使用C++代码解密微信加密数据库信息!

    原文转载于 https blog csdn net jiangwei0910410003 article details 79436956 一 知识回顾 最近有人找我弄微信数据库解密的东西 xff0c 其实这个现在网上都公开了 xff0c