andreas-mausch / whatsapp-viewer

Small tool to display chats from the Android msgstore.db database (crypt12)
https://andreas-mausch.de/whatsapp-viewer/
MIT License
1.27k stars 383 forks source link

WhatsApp Viewer

Small tool to display chats from the Android msgstore.db database.

Status

πŸ›‘βš  WhatsApp Viewer does not work with the latest WhatsApp database format. βš πŸ›‘

I only maintain this project every once in a while.

WhatsApp gets a lot of updates with a bunch of new features.
I do have interests beside this project and unfortunately not enough time to keep up with the updates.

This project is not dead though (even if it looks like it), and I still take a plaintext database backup once in a while (about every year) and try to update this software accordingly.

How to use

  1. You need root access to your phone. If you don't know what it is: Wikipedia
  2. Download your WhatsApp database and key files:
    • /data/data/com.whatsapp/files/key
    • /data/data/com.whatsapp/databases/msgstore.db
    • /data/data/com.whatsapp/databases/wa.db
  3. Open WhatsApp Viewer
  4. File -> Open -> Select file
  5. Select msgstore.db in the folder "extracted"
  6. Leave account name empty, is was used for older versions of WhatsApp (crypt5)
  7. Optional: If you want, you can import contact names from the wa.db file

Command line support

"WhatsApp Viewer.exe" -decrypt14 msgstore-2016-10-22.1.db.crypt14 whatsapp.cryptkey14 decrypted.db

You cannot see bigger images because only thumbnails are stored in the database.

Build

Visual Studio

Open WhatsApp Viewer.sln.

Command-line

See build-release.cmd.

Vagrant

You can also use vagrant to build (for example if you are on a Linux machine):

vagrant up
vagrant powershell -c 'cmd.exe /c "cd C:\vagrant && build-release.cmd"'

Android Emulator

I use the Android Emulator to test WhatsApp (and the creation of backups) on my developer machine.

I'm on Manjaro and use this (see here):

sudo mkdir /opt/android-sdk/platforms
sudo mkdir /opt/android-sdk/platform-tools
yay -S android-sdk-cmdline-tools-latest android-emulator
yes | sudo sdkmanager "system-images;android-30;google_apis;x86"
avdmanager create avd --name "WhatsApp-Viewer" --package "system-images;android-30;google_apis;x86" --device "Nexus 6P"
emulator -avd "WhatsApp-Viewer"

adb install ./WhatsApp.apk

adb pull -a /sdcard/WhatsApp/Databases/msgstore.db.crypt14
adb root
adb pull -a /data/data/com.whatsapp
adb unroot

I've also did this to enable the hardware keyboard.

Export schema

sqlite3 msgstore.db ".schema --nosys" > ./data/msgstore.db.schema.sql

Build test database

rm -f ./data/test-database.db && sqlite3 ./data/test-database.db -cmd ".read data/msgstore.db.schema.sql" ".read data/test-database.sql"

Credits