2 votes

Comment convertir/chiffrer WhatsApp .sqlite en .db.crypt8 ?

J'ai un fichier WhatsApp ChatStorage.sqlite qui a été pris à partir d'une sauvegarde iPhone, et je ne comprends pas exactement la structure des données à l'intérieur de la base, mais il est clair qu'elles ne sont pas cryptées. Je veux utiliser ce fichier pour "restaurer" les messages qu'il contient dans un téléphone Android plus récent. D'après ce que je sais, le format actuel utilisé par WhatsApp pour stocker les bases de données de messages est .db.crypt8 qui, je suppose, est la même base de données SQLite, mais cryptée (mais je peux me tromper). WhatsApp (2.12.317) sur Android (5.0) ne semble pas "reconnaître" le fichier .sqlite simple comme une base de données sauvegardée lors de la première installation. Y a-t-il un moyen de faire en sorte qu'il accepte le fichier comme une sauvegarde de message ? Puis-je crypter le fichier DB dans le format qu'il s'attend à recevoir ?

3voto

Gezim Points 161

Ok... à la maison maintenant.

Je ne sais pas si vous exécutez la variante unix ou autre chose... Ce n'est pas vraiment le cas mais tous ces scripts ont été exécutés sous Linux.

créer une sauvegarde de l'iphone ( http://libimobiledevice.org )

idevicebackup2 backup

Lecture de la sauvegarde

clone git https://github.com/PicciMario/iPhone-Backup-Analyzer-2
construire

puis modifier main.py à la ligne 1449

-database = sqlite3.connect(':memory:') # Créer un fichier de base de données en mémoire
+database = sqlite3.connect('/tmp/md.db') # Créer un fichier de base de données en mémoire

Ensuite, lancez le programme et laissez-le analyser le fichier Manifest.mbdb de la sauvegarde de l'iphone.

python2.7 main.py

analyser /tmp/md.db et extraire les noms des fichiers whatsapp et des médias

sqlite3 /tmp/md.db
SQLite version 3.8.10.2 2015-05-20 18:17:19
Saisissez ".help" pour obtenir des conseils d'utilisation.
sqlite> .mode csv
sqlite> .séparateur | \n
sqlite> .sortie fichiers2.csv
sqlite> .headers on
sqlite> select fileid,domain_type,domain,file_path,file_name from indice where domain = "net.whatsapp.WhatsApp" AND domain_type = "AppDomain" ;
sqlite> .out stdout
sqlite> .quit

copier les fichiers et corriger leurs noms (remplacer simplement par votre UUID) :

foreach i ( cat files2.csv | grep Library/Media/ | grep '""' | sed "s/|\"\".\+$//g" | cut -d "|" -f 2- | sed "s/|/\//g" );do;mkdir -p /tmp/extracted/$i;done

foreach i ( cat files2.csv | grep Library/Media/ | grep -v '""' | sed "s/|/\//g" | sed "s/\/AppDomain/|AppDomain/" );do;src= echo $i | cut -d "|" -f 1 ;dst= echo $i | cut -d "|" -f 2 | sed "s/.$//g" ; cp -v /Path/to/iphone/backup/UUID/0ef862e6faede9b72c75b948f8b5c9663921e796/$src /tmp/extracted/$dst;done

cp 0ef862e6faede9b72c75b948f8b5c9663921e796/ec50dd986a0f35953e40f6ca9602ad78173e254f /tmp/extracted/Contacts.sqlite

cp 0ef862e6faede9b72c75b948f8b5c9663921e796/7c7fba66680ef796b916b067077cc246adacf01d /tmp/extracted/ChatStorage.sqlite

Maintenant vous avez votre média whatsapp et ChatStorage.sqlite

installer adb (depuis Android-sdk-update-manager) http://developer.Android.com/sdk/

Sur Android, installez WhatsApp, devenez débogueur et activez le débogage usb. Configurez WhatsApp et envoyez au moins un message et cliquez sur backup dans whatsapp. Téléchargez l'ancien whatsapp et éventuellement l'actuel :

liens https://github.com/AbinashBishoyi/WhatsApp-Key-DB-Extractor-UnOfficial/
wget http://www.whatsapp.com/Android/current/WhatsApp.apk '

adb install -r -d LegacyWhatsApp.apk

sauvegarde whatsapp ( http://www.digitalinternals.com/security/ ).

C'est la seule phase où la version héritée doit être installée :

adb backup -f whatsapp.ab -noapk com.whatsapp

Clé d'extraction ( http://www.digitalinternals.com/security/decrypt-whatsapp-crypt8-database-messages/419/ ) :

dd if=whatsapp.ab bs=4096 skip=24 iflag=skip_bytes | openssl zlib -d > whatsapp.tar
tar xvf whatsapp.tar apps/com.whatsapp/db/msgstore.db apps/com.whatsapp/f/key k=$(hexdump -ve '2/1 "%02x"' apps/com.whatsapp/f/key | cut -b 253-316)

Sauvegarde des messages whatsapp

adb pull /sdcard/WhatsApp/Database/msgstore.db.crypt8 msgstore.db.crypt8

décrypter :

iv=$(hexdump -n 67 -ve '2/1 "%02x"' msgstore.db.crypt8 | cut -b 103-134);dd if=msgstore.db.crypt8 bs=4096 skip=67 iflag=skip_bytes | openssl enc -aes-256-cbc -d -nosalt -bufsize 16384 -K $k -iv $iv | gunzip > msgstore.db

fusionner des bases de données ( https://gist.github.com/paracycle/6107205 ). Le script fourni ici n'est pas complet et après avoir lu de nombreux sites de criminalistique, je sais maintenant comment le modifier pour obtenir vos médias également... mais c'est un travail en cours.

Quoi qu'il en soit :

sqlite3 -init ../convert.sql ../merged.db

crypter :

dd if=msgstore.db.crypt8 iflag=count_bytes count=67 of=msgstore.db.crypt8 ; cat merged.db | gzip -5 |openssl enc -aes-256-cbc -e -nosalt -bufsize 16384 -K $k -iv $iv | dd of=msgstore.db.crypt8 bs=4096 seek=67 oflag=seek_bytes conv=notrunc

Pousser une nouvelle sauvegarde :

adb push msgstore.db.crypt8 /sdcard/WhatsApp/Databases/

Repousser la version actuelle sur Android et lancer whatsapp pour lire la sauvegarde :

adb install -r -d WhatsApp.apk

0voto

Will Sheppard Points 522

Je fais la même chose depuis deux jours. C'était relativement simple. Je n'ai toujours pas compris comment inclure les médias.

Les logiciels dont vous avez besoin :

Openssl Adb (pont de débogage Android) Sqlite3 ancienne version de whatsapp +Outils unix courants

Le flux de travail est le suivant :

Extraire tous les médias de la sauvegarde d'iPhone. Les noms de fichiers sont hachés et les index sont dans Manifest.mbdb et peuvent être dix simplement copiés aux bons endroits. Avec adb, installer l'ancienne version de WhatsApp et récupérer la clé depuis Android avec adb backup. Désinstaller l'ancienne version de WhatsApp. Avec adb, téléchargez msgstore.db.crypt8 depuis Android. Enlever l'en-tête et l'iv et décrypter avec la clé et l'iv en utilisant openssl. Puis gunzip et vous avez le msgstore.db.

Fusionner msgstore.db avec chatstorage.sqlite avec des commandes SQL standard.

Gzip et cryptez msgstore.db en utilisant la même clé et n'importe quel iv. Stockez l'en-tête + l'iv et les données cryptées dans un fichier concaténé ensemble et nommé msgstore.db.crypt8. Déplacez le fichier vers Android /sdcard/WhatsApp/Database/ avec adb et installez WhatsApp.

Je peux vous donner les sources mais je ne suis pas chez moi en ce moment... Donc je le ferai plus tard...

1 votes

Ça a l'air bien. Pouvez-vous peut-être indiquer le lien vers les outils nécessaires ? Le plus important est l'APK de l'ancienne version de WhatsApp.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X