To main content

WhatsApp: Mehrere Backups zusammenführen

Veröffentlicht von Benjamin Marwell am

Hinweis: Dieser Artikel ist vom August 2014. WhatsApp hat die Nachrichtenformate geändert, und nicht alle Tools in diesem Artikel kommen mit dem neuen Formaten zurecht. Außerdem liegen die Keys nicht mehr an der gleichen Stelle. Der Artikel ist also leider veraltet.

Durch laufende Abstürze eines Galaxy S2 Plus verlor WhatsApp alle Nachrichten. Die Folge: Ein altes Backup, sowie ab diesem Zeitpunkt mehrere neue Backups, welche die alten Nachrichten wiederum nicht enthielten. Die Benutzerin war sehr sauer, auf die schnelle war da auch nichts zu machen.

[caption id="attachment_5377" align="aligncenter" width="1024"]WhatsApp: Merge Multiple Backups and restore / Mehrfache Backups zusammenführen.WhatsApp: Mehrfache Backups zusammenführen.[/caption]

Der Artikel zeigt dazu kurz auf, welche Backup-Schritte durchgeführt wurden, und welche Möglichkeiten zur Restauration von mehreren alten WhatsApp-Chats es gibt.

Schritt 1: Dateien sichern

Der erste Schritt war es, alte WhatsApp-Chats zu sichern. Die Bilder waren dank Dropbox-Upload soweit alle sicher, die heruntergeladenen an einem Windows-PC per MTP mit mäßiger Geschwindigkeit auch gesichert. Die externe SD-Karte ließ sich schnell in einen Adapter stecken und ebenfalls sichern.

Zu meiner Verwunderung gab es einen WhatsApp-Ordner auf der internen und externen SD-Karte. Im Endeffekte habe ich also folgende Verzeichnisse gesichert:

/storage/sdcard/WhatsApp/
/storage/extSdcard/WhatsApp/

Die dort enthaltenen .crypt-Dateien mit Datumsstempel (Unterordner: Databases) sind später noch sehr wichtig. Diese enthalten die gesuchten Nachrichten. Zusätzlich sichert man aber auch die msgstore.db.crypt (also die Datei ohne Datumsstempel). Falls in beiden Ordnern diese Dateien vorhanden sein sollten, fügt ihr im Namen einfach einen Zähler ein, also etwa msgstore-2013-05-15.2.db .

Schritt 2: WhatsApp-Datenbanken zusammenführen

Nun aber zum eigentlichen Schritt. Die gesicherten WhatsApp-Datenbanken möchten ja noch zusammengeführt werden. Da WhatsApp hier nichts anbietet und ausnahmsweise mal etwas nicht in der Cloud speichert (nur die Telefonnummern eurer Kontakte, na danke…), brauchen wir andere Tools.

Vorraussetzungen zum Mergen

Wir müssen uns eine Toolsuite zusammenstellen. Am einfachsten ist das unter Linux oder MacOS, da Python im Pfad liegt. Windows-Abenteurer können sich mit ellenlangen Befehlszeilenketten oder modifizierten PATH-Variablen anfreunden.  :twisted: Prinzipiell ist der Weg aber der Gleiche.

Folgende Tools werden installiert bzw. entspackt:

  • Python sudo apt-get install python
  • WhatsApp xtrract Zip gibt es hier bei XDA <-- klick
  • WhatsApp Forensic Tools Quelle: GitHub Dateien jeweils anklicken, auf "raw" klicken und dann die angezeigt Datei einfach mit Strg+S in das WhatsApp xtract-Verzeichnis speichern.

Datenbanken decrypten

Zunächst legt man alle Datenbanken von WhatsApp in ein Verzeichnis. Dieses heißt üblicherweise Databases. Da ich von mehreren Verzeichnissen die .db.crypt -Dateien zusammenkopiert habe, nutze ich ein Verzeichnis mit dem Namen unmerged - das ist aber nebensächlich.

Im folgenden ersten Schritt werden die Dateien entschlüsselt, um später zusammengeführt werden zu können.

(bmarwell@aeon)[~/Desktop/whatsapxtract/wa_extr] $ python encryption.py --decrypt --dir ./unmerged/ --output-dir ./decrypted/

    #######################################
    #    WhatsApp Encryption Tool 0.4     #
    #-------------------------------------#
    #  Decrypts encrypted msgstore files  #
    #   This tool is part of WForensic    #
    # https://sch3m4.github.com/wforensic #
    #######################################

[i] Setting AES key....... OK

[+] Decrypting msgstore-2013-05-15.1.db.crypt (msgstore-2013-05-15.1.db) -> 23617552 Bytes
	+ 65490 Messages from 85 contacts

[+] Decrypting msgstore-2013-05-16.1.db.crypt (msgstore-2013-05-16.1.db) -> 23702544 Bytes
	+ 65673 Messages from 85 contacts

[+] Decrypting msgstore-2013-05-17.1.db.crypt (msgstore-2013-05-17.1.db) -> 23726096 Bytes
	+ 65754 Messages from 85 contacts

[+] Decrypting msgstore-2013-05-18.1.db.crypt (msgstore-2013-05-18.1.db) -> 23757840 Bytes
	+ 65869 Messages from 86 contacts

[+] Decrypting msgstore-2013-05-19.1.db.crypt (msgstore-2013-05-19.1.db) -> 23831568 Bytes
	+ 66023 Messages from 86 contacts

[+] Decrypting msgstore-2013-05-20.1.db.crypt (msgstore-2013-05-20.1.db) -> 23869456 Bytes
	+ 66129 Messages from 86 contacts

[+] Decrypting msgstore-2013-05-21.1.db.crypt (msgstore-2013-05-21.1.db) -> 23924752 Bytes
	+ 66285 Messages from 86 contacts

[+] Decrypting msgstore-2013-05-22.1.db.crypt (msgstore-2013-05-22.1.db) -> 24018960 Bytes
	+ 66616 Messages from 88 contacts

[+] Decrypting msgstore-2013-12-30.1.db.crypt (msgstore-2013-12-30.1.db) -> 24018960 Bytes
	+ 66616 Messages from 88 contacts

[+] Decrypting msgstore-2014-02-08.1.db.crypt (msgstore-2014-02-08.1.db) -> 2392080 Bytes
	+ 8027 Messages from 56 contacts

[+] Decrypting msgstore-2014-04-14.1..db.crypt (msgstore-2014-04-14.1..db) -> 2392080 Bytes
	+ 8027 Messages from 56 contacts

[i] Gathered 610509 messages from 887 contacts!

[+] Done!

(bmarwell@aeon)[~/Desktop/whatsapxtract/wa_extr] $

WhatsApp-Datenbanken mergen

Der eigentliche Schritt findet nun statt. Man erstellt sich einen Ordner "merged", in dem die einzelnen Dateien zu einer msgstore -Datei zusammengeführt werden. Der erste Parameter ist das Quellverzeichnis, der zweite ein Pattern der Namen, und der dritte Parameter ist das Zielverzeichnis, das wir gerade angelegt haben.

(bmarwell@aeon)[~/Desktop/whatsapxtract/wa_extr] $ mkdir merged
(bmarwell@aeon)[~/Desktop/whatsapxtract/wa_extr] $ python merge.py ./decrypted/ "msgstore*" ./merged/

    #######################################
    #  WhatsApp Msgstore Merge Tool 0.3  #
    #------------------------------------#
    # Merges WhatsApp message files into #
    #           a single one.            #
    #   This tool is part of WForensic   #
    # http://sch3m4.github.com/wforensic #
    ######################################

[i] Origin: ./decrypted/msgstore*
[i] Output file: ./merged/

+ Merging: ./decrypted/msgstore-2013-05-15.1.db
+ Merging: ./decrypted/msgstore-2013-05-16.1.db  (Merged 0 contacts and 183 messages)
+ Merging: ./decrypted/msgstore-2013-05-17.1.db  (Merged 0 contacts and 81 messages)
+ Merging: ./decrypted/msgstore-2013-05-18.1.db  (Merged 1 contacts and 115 messages)
+ Merging: ./decrypted/msgstore-2013-05-19.1.db  (Merged 0 contacts and 154 messages)
+ Merging: ./decrypted/msgstore-2013-05-20.1.db  (Merged 0 contacts and 106 messages)
+ Merging: ./decrypted/msgstore-2013-05-21.1.db  (Merged 0 contacts and 156 messages)
+ Merging: ./decrypted/msgstore-2013-05-22.1.db  (Merged 2 contacts and 331 messages)
+ Merging: ./decrypted/msgstore-2013-12-30.1.db  (Merged 0 contacts and 0 messages)
+ Merging: ./decrypted/msgstore-2014-02-08.1.db  (Merged 21 contacts and 8026 messages)
+ Merging: ./decrypted/msgstore-2014-04-14.1..db  (Merged 0 contacts and 0 messages)

[i] Merged 24 contacts and 9152 messages!

(bmarwell@aeon)[~/Desktop/whatsapxtract/wa_extr] $

Zusammengeführte WhatsApp-DB verschlüsseln

Ob dieser Schritt notwendig ist, weiß ich gar nicht so genau. Jedenfalls hat er nicht geschadet. Wir erstellen für WhatsApp eine verschlüsselte Kopie der Datenbank.

(bmarwell@aeon)[~/Desktop/whatsapxtract/wa_extr] $ python encryption.py --encrypt --file merged/msgstore.db --output-dir ./merged-encrypted/

    #######################################
    #    WhatsApp Encryption Tool 0.4     #
    #-------------------------------------#
    #  Decrypts encrypted msgstore files  #
    #   This tool is part of WForensic    #
    # https://sch3m4.github.com/wforensic #
    #######################################

[i] Setting AES key....... OK

[+] Encrypting msgstore.db (msgstore.db.crypt) -> 26360832 Bytes
[i] Gathered 0 messages from 0 contacts!

[+] Done!

(bmarwell@aeon)[~/Desktop/whatsapxtract/wa_extr] $ ll merged-encrypted/
insgesamt 26M
-rw-rw-r-- 1 bmarwell bmarwell 26M Apr 18 20:30 msgstore.db.crypt
(bmarwell@aeon)[~/Desktop/whatsapxtract/wa_extr] $

Schritt 3: Gemergetes Backup wiederherstellen

  1. Force Close bei Whatsapp - dazu geht man nach Einstellungen - Apps - WhatsApp und klickt auf »Beenden erzwingen«.
  2. Cache und alle Dateien von WhatsApp löschen. Das ist die schnelle Alternative zur Neuinstallation.
  3. Die Dateien msgstore.db.crypt  und msgstore.db  kopiert man nun in den WhatsApp-Database-Ordner (/storage/extSdCard/WhatsApp/Databases  oder /storage/sdcard1/WhatsApp/Databases  oder sonst /storage/sdcard0/WhatsApp/Databases ).
  4. WhatsApp neu einrichten. Es sollte das Backup im letzten Schritt gefunden werden.

Et voilà: Alle Nachrichten sind wieder vorhanden! Hurra!  :mrgreen:  8-)

FAQ

Sind die Tools legal?

Gute Frage, ich habe mir nicht allzuviele Gedanken dazu gemacht. Möglicherweise schon, solange man diese nur für seine eigenen Chatprotokolle verwendet. Das kann ich aber nicht mit Brief und Siegel geben. Der Diebstahl (i.S.v. unberechtigte Kopie) fremder Daten ist in jedem Fall eine Straftat, genauso wie das umgehen wirksamer Kopierschutzmechanismen. Wobei die Definition von wirksam sicher auch diskussionswürdig ist.

Einige der Tools sind Open Source - ich überlasse es dem aufmerksamen Leser, das bei den einzelnen Tools die Lizenz selbst zu studieren. Es besteht allerdings noch die Möglichkeit, dass diese gegen die Nutzungsbedingungen bzw. AGB von WhatsApp verstoßen. Andererseits - wo kein Kläger, da kein Richter.

Hast du das alles alleine herausgefunden?

Nein, mitnichten. Im Endeffekt habe Ich mehrere Anleitungen kombiniert und komprimiert. Ein sehr ähnliches Tutorial steht bei Geekbone. Hier sind die Befehle aber leicht falsch (ein Strich bei --  fehlt), und es wird das Restore nicht beschrieben. Der entscheidende Hinweis steht im Forum von Android-Hilfe.

Das es diese Tools gibt habe ich über eine einfache Google-Suche erfahren. Da die Ergebnisse an sich noch nicht sehr hilfreich waren, habe ich mich für die Dokumentation des kompletten Vorganges entschieden - herausgekommen ist dieser Blogartikel.

Funktioniert das auch für iOS?

Gute Frage. Soweit ich weiß, haben die iOS-Dateien zumindest einen anderen Namen. Einen Versuch wäre es ja Wert. Ausprobiert hab ich es aber nicht.