|
|
9 vuotta sitten | |
|---|---|---|
| common | 10 vuotta sitten | |
| legacy | 10 vuotta sitten | |
| libchat | 10 vuotta sitten | |
| screenshots | 11 vuotta sitten | |
| third-party | 10 vuotta sitten | |
| 9 vuotta sitten | ||
| .gitattributes | 10 vuotta sitten | |
| .gitignore | 10 vuotta sitten | |
| LICENSE.txt | 11 vuotta sitten | |
| README.md | 10 vuotta sitten | |
| android-interact.sh | 10 vuotta sitten | |
| compatibility.sh | 10 vuotta sitten | |
| count-message.sh | 10 vuotta sitten | |
| decrypt-db.py | 10 vuotta sitten | |
| dump-audio.py | 10 vuotta sitten | |
| dump-html.py | 9 vuotta sitten | |
| dump-msg.py | 10 vuotta sitten | |
| list-chats.py | 10 vuotta sitten | |
| plot-num-msg-by-time.py | 10 vuotta sitten |
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.
./third-party/compile_silk.sh)Note that commands involving ./android-interact.sh are meant to be run on the computer.
(Requires Linux or Mac) Get the decrypted WeChat database and the avatar index:
./android-interact.sh db-decrypt
Manual:
${userid} by inspecting the contents of /data/data/com.tencent.mm/MicroMsg on the root filesystem of the device. It should be a 32-character-long name consisting of hexadecimal digits./data/data/com.tencent.mm/MicroMsg/${userid}/{EnMicroMsg.db,sfs/avatar.index} from the device, possible ways are:
./android-interact.sh db./android-interact.sh uin, which pulls the value from /data/data/com.tencent.mm/shared_prefs/system_config_prefs.xmldocument.cookie./android-interact.sh imei*#06# on your phoneDecrypt 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.
Copy the WeChat user resource directory /mnt/sdcard/tencent/MicroMsg/${userid}/{emoji,image2,sfs,video,voice2} from the phone's SD card to the resource directory:
./android-interact.sh resRES_DIR in the script if the default doesn't workThis can take a long time. Some ways to do this faster:
busybox tar without compression in the adb shell, use adb pull to copy the tar archive to the computer, and then extract it. BusyBox is needed as the Android system's tar may choke on long paths.Alternatively, you can use pipes. This is slower, but doesn't require any free space on the SD card:
# copy MicroMsg to the current directory
adb shell 'cd /mnt/sdcard/tencent &&
busybox tar czf - MicroMsg 2>/dev/null | busybox base64' |
base64 -di | tar xzf -
Parse and dump text messages of every chat (requires decrypted.db):
./dump-msg.py decrypted.db output_dir
List all chats (requires decrypted.db):
./list-chats.py decrypted.db
Generate statistical report on text messages (requires output_dir from ./dump-msg.py):
./count-message.sh output_dir
Dump messages of one contact to html, containing voice messages, emojis, and images (requires decrypted.db, avatar.index, and resource):
./dump-html.py decrypted.db avatar.index resource "<contact_name>" output.html
See here for an example html.
Screenshots of generated html:
grep 'TODO' wechat -R