Skip to content
Dump wechat messages from android
Python Shell HTML Other
Branch: master
Clone or download
Pull request Compare This branch is even with notxmg:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
common
legacy
libchat
screenshots
third-party
wechat
.gitattributes
.gitignore
LICENSE.txt
README.md
android-interact.sh
compatibility.sh
count-message.sh
decrypt-db.py
dump-html.py
dump-msg.py
list-chats.py
plot-num-msg-by-time.py

README.md

Dump WeChat Messages from Android

导出安卓微信聊天数据

WeChat(微信), as the most popular mobile IM app in China, doesn't give users any method to export well-formatted history message. This tool can parse and export WeChat messages on a rooted android phone.

Right now it can dump messages in text-only mode, or generate a single-file html containing voice messages, images, emoji, etc.

NEWS: WeChat 6.0+ uses silk to encode audio. The code is updated.

NEWS: WeChat 6.3 uses a new avatar storage. The code is updated.

If this tools works for you, please take a moment to add your phone/OS to the wiki. If it doesn't work, please leave an issue together with your phone/OS/wechat version.

How to use:

Dependencies:

  • python-PIL
  • PyQuery
  • pysox
  • pysqlcipher
  • numpy
  • python-csscompressor (suggested, optional)
  • adb and rooted android phone connected to a Linux/Mac OS.
  • Silk audio decoder (just run ./third-party/compile_silk.sh)
  • gnu-sed

Get Necessary Data:

  • Get decrypted WeChat database (Linux & Mac Only):
    • Automatic: ./android-interact.sh db-decrypt
    • Manual:
      • Get /data/data/com.tencent.mm/MicroMsg/long-long-name/{EnMicroMsg.db,sfs/avatar.index} from root filesystem, possible ways are:
        • ./android-interact.sh db
        • Use your rooted file system manager app
      • Get WeChat uin, possible ways are:
        • ./android-interact.sh uin
        • Login to web wechat, get wxuin=1234567 from document.cookie
      • Get your phone IMEI number, possible ways are:
        • ./android-interact.sh imei
        • Call *#06# on your phone
        • Find IMEI in system settings
      • Decrypt database, will produce decrypted.db:
       ./decrypt-db.py <path to EnMicroMsg.db> <imei> <uin>
      

NOTE: you may need to try different ways to getting imei & uin, because things behave differently on different phones.

Also, if the decryption doesn't work with pysqlcipher, maybe try the version of sqlcipher in legacy.

  • Get WeChat user resource directory from your phone to resource directory:
    • ./android-interact.sh res
    • You might need to change the resource location in this script if the default doesn't work
    • This takes a long time.

Run:

  • Parse and dump text messages of every chat (resource directory is not needed to run this):
./dump-msg.py decrypted.db output_dir
  • List all chats:
./list-chats.py decrypted.db
  • Generate statistical report on text messages:
./count-message.sh output_dir
  • Dump messages of one contact to html, containing voice messages, emojis, and images:
./dump-html.py decrypted.db avatar.index resource <contact name> output.html

Examples:

See here for an example html.

Screenshots of generated html:

byvoid

TODO List

  • Search by uid/username
  • Faster way to copy a directory from android (I don't know..).
  • Fix rare unhandled types: > 10000 and < 0
  • Better user experiences... see grep 'TODO' wechat -R
  • more easy-to-use for non-programmers (GUI?)

Donate!

Paypal: [paypal]

You can’t perform that action at this time.