Giter Club home page Giter Club logo

wechat-backup's Introduction

此项目停止维护,如需二次开发,请自行 fork

效果图

使用流程

详细说明在: https://blog.greycode.top/posts/android-wechat-bak/

  1. 手机聊天记录备份到电脑,在有 ROOT 权限的手机上登陆微信,电脑点击备份恢复,把聊天记录恢复到有 ROOT 的手机上。
  2. 收集下面这些数据,然后放在同一个文件夹下:
    • image2 文件夹:里面存放着所有的微信聊天图片,位置在:/data/data/com.tencent.mm/MicroMsg/[32位字母]/image2
    • voice2 文件夹:里面存放着所有的微信语音,位置在:/sdcard/Android/data/com.tencent.mm/MicroMsg/[32位字母]/voice2
    • video 文件夹:里面存放着所有的微信视频,位置在:/sdcard/Android/data/com.tencent.mm/MicroMsg/[32位字母]/video
    • avatar 文件夹:里面存放着所有的微信头像,位置在:/data/data/com.tencent.mm/MicroMsg/[32位字母]/avatar
    • Download 文件夹: 微信的聊天发送的文件存放在这里,位置在:/sdcard/Android/data/com.tencent.mm/MicroMsg/Download
    • EnMicroMsg.db: 微信的数据库文件,位置在:/data/data/com.tencent.mm/MicroMsg/[32位字母]/EnMicroMsg.db
    • WxFileIndex.db: 微信的文件索引数据库文件,位置在:/data/data/com.tencent.mm/MicroMsg/[32位字母]/WxFileIndex.db
  3. 获取解密 DB 的密钥。
  4. 进行微信聊天数据 DB 的解密
  5. 转换微信语音
  6. 运行本程序,打开控制台输出的网址,就可以查看你的聊天记录了。

运行命令

可以直接运行:

$ git clone https://github.com/greycodee/wechat-backup.git
$ cd wechat-backup
$ go run main.go -f '[替换成你的微信备份文件路径]'

或者编译后运行:

$ git clone https://github.com/greycodee/wechat-backup.git
$ cd wechat-backup
$ go build .
$ ./wechat-backup -f '[替换成你的微信备份文件路径]'

注意⚠️:WxFileIndex.db 里面文数据表名老版本微信是 WxFileIndex2 ,新版本微信是 WxFileIndex3 ,请根据实际情况来设置代码 wxfileindex.go 文件中 SQL 查询的表名(已在代码中做处理)

快速解密微信DB

把要解密的微信 DB 所在文件夹挂在到容器的 /wcdb 上面。

$ docker run --rm -v /Users/zheng/Documents:/wcdb  greycodee/wcdb-sqlcipher -f DB名字 -k 解密密钥

2022/06/22 05:31:17 开始解密...
2022/06/22 05:31:28 解密成功: ok
2022/06/22 05:31:28 明文数据库文件名: EnMicroMsg_plain.db

快速转换微信语音 amr 文件

把要转换的语音文件夹挂载到容器的 /media 目录上,然后执行下面的命令,就会自动将文件夹里的语音转换成 mp3 格式了。

$ docker run --rm -v /Users/zheng/Documents/voice2:/media  greycodee/silkv3-decoder

/media/msg_491351061422dbfa9bb0a84104.amr
-e [OK] Convert /media/msg_491351061422dbfa9bb0a84104.amr To /media/msg_491351061422dbfa9bb0a84104.mp3 Finish.

手机没有 ROOT 解决方法

如果没有有 ROOT 的手机,根据 V 友的说法,使用安卓模拟器的话有一定的封号机率。这个还有一个方法就是使用手机自带的系统备份。 我自己是miui系统的手机,整理了大致方法如下:

  1. 在手机设置里找到备份功能,然后备份微信应用数据
  2. 备份的数据放在手机的 MIUI/backup/AllBackup/备份的日期/ 下
  3. 里面有三个文件 分别是 .bak .zip .xml 结尾
  4. zip 可以直接解压,然后获取聊天语音和聊天视频等文件
  5. bak 需要使用 HEX 编辑器打开,然后将 41 4E 前的数据删除(就是这个文件的描述数据)。然后保存
  6. 使用 abe 解包工具进行 .bak 文件的解包,开源工具地址:https://github.com/nelenkov/android-backup-extractor
  7. 解压解包后生产的 tar 压缩包,然后从里面可以获取到 DB 等文件(相当于本来要ROOT后才能获取到的这些数据,现在可以直接获取了)

我这边通过系统备份然后 bak 文件解包-解压后,文件路径在:apps/com.tencent.mm/r/MicroMsg/ 下,大家可以参考一下 如果通过手机系统自带的备份来获取数据时,解密 DB 的密码可以通过这篇文章的方法一来获取: 获取 DB 解密密码

Q&A

语音和视频所在文件夹

/data/data/com.tencent.mm/MicroMsg/[32位字母] 文件夹下,有个 account.mapping 文件,里面对应的 /sdcard/Android/data/com.tencent.mm/MicroMsg 下文件夹的名称,里面存储了聊天视频和语音等文件。

一台设备登陆多个微信怎么查找 uin?

/data/data/com.tencent.mm/shared_prefs 文件夹下有个 app_brand_global_sp.xml 文件,里面存放着所有登陆过微信的 uin,然后可以用这些 uin 去解密对应的微信 DB。

Star History

Star History Chart

wechat-backup's People

Contributors

dependabot[bot] avatar greycodee avatar xywf221 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wechat-backup's Issues

部分图片无法加载

看了手机上的文件,如果是以下扩展名的图片在网页里无法加载(.jpg⌖)
image

看了图片解析规则好像没有覆盖,这里使用的微信版本是 8.0.30 。

Thanks

uin 不是 7位

$ adb shell su -c "cat /data/data/com.tencent.mm/shared_prefs/auth_info_key_prefs.xml" | grep -i uin
    <int name="_auth_uin" value="2009066962" />

解密失败

2022/06/25 07:58:21 开始解密...
2022/06/25 07:58:22 解密失败: Error: near line 7: stepping, file is not a database (26)
Error: near line 8: stepping, unknown database WxFileIndexplain (1)
Error: near line 9: stepping, no such database: WxFileIndexplain (1)

微信8.0.32获取不到密钥

大佬你好, 尝试用Frida的方式获取密钥, 执行python脚本后手机自动打开微信, 然后退出, 控制台没有任何输出, 尝试了好多次都不行, 大佬有啥解决办法么

Docker Build Failed

尝试解密DB和语音,过程中打算先编译出如下容器,但是失败了,是否是缺少项目文件:

docker build -t wcdb-sqlcipher:1.0 ./ -f ./wcdb-sqlcipher.dockerfile

Step 6/10 : COPY wcdb-sqlcipher /usr/local/bin/wcdb-sqlcipher
COPY failed: file not found in build context or excluded by .dockerignore: stat wcdb-sqlcipher: file does not exist
docker build -t silkv3-decoder:1.0 ./ -f ./silkV3-decoder.dockerfile

Step 7/12 : COPY silk-v3-decoder /silk-v3-decoder
COPY failed: file not found in build context or excluded by .dockerignore: stat silk-v3-decoder: file does not exist

Feature Request: 朋友圈导出

感谢作者创造的这个项目 让我们可以有掌管自己聊天数据的权力
除了聊天之外 微信还掌管了我们过去的生活分享

我搜索到过去有面向iOS微信逆向的项目
https://github.com/Mr0x01/WeChatMomentExport-iOS

想问问有没有机会能导出自己的朋友圈数据(比如分享的文字、图片、视频、链接等)呢?谢谢!

有没有开放前端代码的想法呢?

按照作者写的教程成功把微信的数据导出了,这个仓库可太有用了!

导出成功之后感觉前端可以做一点点改进,比如往上滚动到顶部自动加载下一页,增大显示聊天记录的页面,一页显示更多信息等等。

试着找了一下前端的代码发现混淆过,好像是通过某种框架导出的(不是前端程序员,没怎么折腾过)。我觉得开发前端代码能够让自定义过程更加轻松,同时也能吸引到更多人使用这个项目,不知道作者有没有开放前端代码的想法呢?

是否可以支持仅db文件的解析展示?

RT,前几年由于年少无知,仅仅备份并解密了EnMicroMsg.db文件,其他的一概没保留,所以想问下是否可以兼容这种场景?另外程序是否可以预编译发布到Release上,非技术党。。

8.0.28解密失败

1234567890ABCDEF拼接123456789

1234567890ABCDEF123456789
再32位 小写
5148877b8e44e0da2878...

然后前7位
5148877

数据库提示密码错误

小米MIUI系统
手机 3个IMEI 都不行

未查询到索引表名

  1. get data and decrypt
adb pull /data/data/com.tencent.mm/MicroMsg/03973XXX/EnMicroMsg.db /tmp/wexin/
adb pull /data/data/com.tencent.mm/MicroMsg/03973XXX/WxFileIndex.db /tmp/wexin/

docker run --rm -v  /tmp/wexin/:/wcdb  greycodee/wcdb-sqlcipher -f EnMicroMsg.db -k XXX
docker run --rm -v  /tmp/wexin/:/wcdb  greycodee/wcdb-sqlcipher -f WxFileIndex.db -k XXX
2022/07/21 17:32:11 开始解密...
2022/07/21 17:32:13 解密成功: ok
2022/07/21 17:32:13 明文数据库文件名: EnMicroMsg_plain.db

2022/07/21 17:33:30 开始解密...
2022/07/21 17:33:31 解密成功: ok
2022/07/21 17:33:31 明文数据库文件名: WxFileIndex_plain.db

  1. execute main.go and get this error:
go run main.go -f '/tmp/wexin/'
2022/07/21 17:33:40 未查询到图片索引表名,sql: no rows in result set
2022/07/21 17:33:40 sql: no rows in result set
exit status 1

关于食用方法的学习

感谢大佬的项目
奈何小弟太菜,学go不精,目前是EnMicroMsg.db文件解密成功,到使用流程的第六步的时候,我开启了我的报错之旅(哈哈哈)
以下是我认为的项目运行命令
image
以下是我存储微信备份文件的文件夹内容
image
还请大佬看看 我哪里操作有问题

FeatureRequest

感谢分享项目!想请教一下,直接把这些文件夹拷到新机器的话,能确保消息记录迁移到新机器么?

8.0.25版本微信获取到的秘钥无法解密

先试了8.0.4版本微信python脚本无法获取到秘钥
手动转换的秘钥也是错的

换成8.0.25版本微信,python脚本能正常获取到秘钥,获取到的秘钥与自己手动转md5一致,但还是无法解密

8.0.40 未查询到个人信息

两个数据库文件都已经解密

在run main.go之后报了如下错误
2023/10/11 00:48:39 未查询到个人信息,Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub
2023/10/11 00:48:39 未查询到图片索引表名,Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.