0 votes

Données corrompues - Impossible de restaurer l'historique du chat Whatsapp

Lorsque j'essaie de récupérer mes messages WhatsApp sur mon nouveau téléphone après avoir copié le dossier WhatsApp de mon ancien téléphone sur la carte SD, il plante soudainement après 10 secondes : "Whatsapp a cessé de fonctionner"

J'ai cherché dans le journal système pour trouver des indices sur ce plantage. Il semble que cela ait quelque chose à voir avec SQLite et le fichier msgstore.db (ou msgstore.db.crypt), car il y a une erreur disant que le fichier msgstore.db est corrompu. Voici quelques lignes du journal système :

"E/DefaultDatabaseErrorHandler (3784): Corruption signalée par SQLite sur la base de données : /data/data/com.whatsapp/databasesmsgstore.db"
 "E/AndroidRuntime (3784): java.lang.AssertionError: android.database.sqlite.SQLiteDatabaseCorruptExcep tion: Database disk image is malformed (code 11), SQLiteConnection.java,-2"
 "E/SQLiteLog (3784): (14) cannot open file at line 30191 of [00bb9c9ce4]"
 "E/SQLiteDatabase (3784): Impossible d'ouvrir la base de données '/data/data/com.whatsapp/databases/msgstore.db'"
 "E/SQLiteDatabaseException: erreur inconnue (code 14) : Impossible d'ouvrir la base de données"
 "I/sqlite_db_corrupt (3784): /data/data.com.whatsapp/databases/msgstore.db"

Quelqu'un peut-il m'aider à démêler ce mystère ? Je veux vraiment copier mes anciens messages sur mon nouveau téléphone et continuer à utiliser l'application sur mon nouveau téléphone.

Comment puis-je réparer le fichier msgstore corrompu ? Ou voir quelle partie du fichier est corrompue (la cause exacte)

Quelques captures d'écran du fichier journal système :

Capture d'écran 1 Capture d'écran 2 Capture d'écran 3 Capture d'écran 4

4voto

GummyArgyle Points 2713

Généralement, si vous placez votre fichier msgstore.db ou msgstore.db.crypt7 dans le répertoire suivant sur votre carte SD et réinstallez WhatsApp, il le détectera et vous demandera si vous souhaitez restaurer vos anciens messages lors de l'installation.

/sdcard/WhatsApp/Databases/

Cependant, si votre base de données (msgstore.db ou msgstore.db.crypt7) est corrompue, vous pourriez toujours être en mesure de régénérer les bases de données en utilisant sqlite3.

La base de données WhatsApp est une base de données sqlite3 et est stockée non cryptée dans ce chemin sur l'appareil Android:

/data/data/com.whatsapp/databases/msgstore.db

Les sauvegardes de la base de données sont également stockées cryptées sur la carte SD généralement à l'emplacement suivant:

/sdcard/WhatsApp/Databases/msgstore.db.crypt7

La clé unique pour les bases de données de sauvegarde cryptées est stockée ici:

/data/data/com.whatsapp/files/key

L'accès au répertoire /data/data nécessite un accès root. Alternativement, ADB (Android Debug Bridge) peut être utilisé pour extraire les fichiers ci-dessus après le démarrage en mode de récupération sur l'appareil.

Si vous travaillez avec des fichiers msgstore.db.crypt7 alors vous devez d'abord les Decrypter comme suit:

(les commandes ci-dessous sont exécutées à partir d'un environnement linux)

  • Extraire le fichier de clé: /data/data/com.whatsapp/files/key

  • Extraire le fichier crypt7: /sdcard/WhatsApp/Databases/msgstore.db.crypt7

  • Extraire les clés de déchiffrement du fichier "key" extrait à l'étape 1:

    • Clé AES 256 bits:

      hexdump -e '2/1 "%02x"' key | cut -b 253-316 > aes.txt

    • IV (vecteur d'initialisation):

      hexdump -e '2/1 "%02x"' key | cut -b 221-252 > iv.txt

  • Supprimer l'en-tête du fichier crypt7:

    dd if=msgstore.db.crypt7 of=msgstore.db.crypt7.nohdr ibs=67 skip=1

    Remarque: La taille du fichier d'en-tête strippé en octets doit être divisible par 16

  • Décrypter le fichier crypt7:

    openssl enc -aes-256-cbc -d -nosalt -nopad -bufsize 16384 -in msgstore.db.crypt7.nohdr -K $(cat aes.txt) -iv $(cat iv.txt) > msgstore.db

Une fois que vous avez votre fichier msgstore.db soit en premier lieu en décryptant le msgstore.db.crypt7 ou en l'extrayant du répertoire /data/data/com.whatsapp/databases/, vous pouvez essayer de le régénérer en utilisant les commandes suivantes:

echo .dump | sqlite3.exe msgstore.db > Temp.sql

echo .quit | sqlite3.exe -init Temp.sql msgstore_new.db

Essayez maintenant de restaurer votre base de données à nouveau

  • Si vous avez suivi la procédure ci-dessus correctement, vous devriez maintenant avoir un fichier msgstore_new.db.
  • Renommez ce fichier en msgstore.db et placez-le dans le répertoire /sdcard/WhatsApp/Databases/ et réinstallez WhatsApp. Choisissez de restaurer votre ancienne base de données/messages lorsque vous y êtes invité pendant l'installation.

Référence:

  1. http://forum.xda-developers.com/showpost.php?p=24566937&postcount=3
  2. http://forum.xda-developers.com/showthread.php?t=1583021

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