Skip to content

xdcesc/wechat-dump

 
 

Repository files navigation

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 contact (resource directory is not needed to run this):
./dump-msg.py decrypted.db output_dir
  • 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]

About

Dump wechat messages from android

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 82.0%
  • Shell 13.2%
  • HTML 3.7%
  • Other 1.1%