Recevoir tous les messages de Whatsapp
9 réponses
Whatsapp stocker tous les messages dans une base de données cryptée (phycrypt) qui est très facile à déchiffrer en utilisant Python.
vous pouvez récupérer cette base de données facilement sur Android, iPhone, Blackberry et le jeter dans le fichier html. Voici les instructions complètes: Lire, extraire WhatsApp messages sauvegarde sur Android, iPhone, Blackberry
avertissement: j'ai fait des recherches et j'ai écrit ce guide détaillé.
code Android fonctionnel: (pas de root requis)
une fois que vous avez accès au fichier dbcrypt5 , voici le code android pour le décrypter:
private byte[] key = { (byte) 141, 75, 21, 92, (byte) 201, (byte) 255,
(byte) 129, (byte) 229, (byte) 203, (byte) 246, (byte) 250, 120,
25, 54, 106, 62, (byte) 198, 33, (byte) 166, 86, 65, 108,
(byte) 215, (byte) 147 };
private final byte[] iv = { 0x1E, 0x39, (byte) 0xF3, 0x69, (byte) 0xE9, 0xD,
(byte) 0xB3, 0x3A, (byte) 0xA7, 0x3B, 0x44, 0x2B, (byte) 0xBB,
(byte) 0xB6, (byte) 0xB0, (byte) 0xB9 };
long start = System.currentTimeMillis();
// create paths
backupPath = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/WhatsApp/Databases/msgstore.db.crypt5";
outputPath = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/WhatsApp/Databases/msgstore.db.decrypt";
File backup = new File(backupPath);
// check if file exists / is accessible
if (!backup.isFile()) {
Log.e(TAG, "Backup file not found! Path: " + backupPath);
return;
}
// acquire account name
AccountManager manager = AccountManager.get(this);
Account[] accounts = manager.getAccountsByType("com.google");
if (accounts.length == 0) {
Log.e(TAG, "Unable to fetch account!");
return;
}
String account = accounts[0].name;
try {
// calculate md5 hash over account name
MessageDigest message = MessageDigest.getInstance("MD5");
message.update(account.getBytes());
byte[] md5 = message.digest();
// generate key for decryption
for (int i = 0; i < 24; i++)
key[i] ^= md5[i & 0xF];
// read encrypted byte stream
byte[] data = new byte[(int) backup.length()];
DataInputStream reader = new DataInputStream(new FileInputStream(
backup));
reader.readFully(data);
reader.close();
// create output writer
File output = new File(outputPath);
DataOutputStream writer = new DataOutputStream(
new FileOutputStream(output));
// decrypt file
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec secret = new SecretKeySpec(key, "AES");
IvParameterSpec vector = new IvParameterSpec(iv);
cipher.init(Cipher.DECRYPT_MODE, secret, vector);
writer.write(cipher.update(data));
writer.write(cipher.doFinal());
writer.close();
} catch (NoSuchAlgorithmException e) {
Log.e(TAG, "Could not acquire hash algorithm!", e);
return;
} catch (IOException e) {
Log.e(TAG, "Error accessing file!", e);
return;
} catch (Exception e) {
Log.e(TAG, "Something went wrong during the encryption!", e);
return;
}
long end = System.currentTimeMillis();
Log.i(TAG, "Success! It took " + (end - start) + "ms");
Modifier
comme WhatsApp mis un certain effort dans l'amélioration de leur système de cryptage, obtenir les données n'est plus si facile. Avec les nouvelles versions de WhatsApp, il n'est plus possible d'utiliser adb backup
. Les applications peuvent refuser les sauvegardes et le client WhatsApp le fait. Si vous avez un téléphone enraciné, vous pouvez utiliser un shell root pour obtenir le fichier de base de données non crypté.
Si vous n'avez pas de racine, vous pouvez toujours déchiffrer les données si vous avez un vieux WhatsApp APK. Trouver une version qui permet encore les sauvegardes. Ensuite, vous pouvez faire une sauvegarde du dossier de données de l'application, qui contiendra une clé de cryptage nommée, bien, key
.
Maintenant, vous aurez besoin de la base de données cryptée. Utilisez l'Explorateur de fichiers de votre choix ou, si vous préférez la ligne de commande, utilisez adb:
adb pull /sdcard/WhatsApp/Databases/msgstore.db.crypt12
en utilisant les deux fichiers, vous pouvez maintenant utiliser https://gitlab.com/digitalinternals/whatsapp-crypt12 pour obtenir le texte de base de données. Il n'est plus possible d'utiliser des outils de cartes Linux comme openssl
parce que WhatsApp semble utiliser une version modifiée de API du château D'éponge pour la cryptographie qu'openssl ne comprend pas.
Réponse Originale à cette question (uniquement pour les vieux crypt7)
comme whatsapp utilise maintenant le format crypt7, il n'est plus aussi facile d'obtenir et de décrypter la base de données. Il ya une approche de travail en utilisant ADB et USB débogage.
vous pouvez soit obtenir les clés de cryptage via ADB et décrypter la base de données de messages stockés sur /sdcard, ou vous venez d'obtenir la version simple de la base de données via ADB backup, ce qui semble être l'option la plus facile.
pour obtenir la base de données, faites ce qui suit:
Connectez votre téléphone Android à votre ordinateur. Maintenant, Lancez
adb backup -f whatsapp_backup.ab -noapk com.whatsapp
pour sauvegarder tous les fichiers WhatsApp a créé dans son dossier privé.
Vous obtiendrez un fichier compressé zlib au format tar avec quelques en-têtes ADB. Nous devons d'abord nous débarrasser de ces en-têtes car ils confondent la commande de décompression:
dd if=whatsapp_backup.ab ibs=1 skip=24 of=whatsapp_backup.ab.nohdr
Le fichier peut maintenant être décompressé:
cat whatsapp_backup.ab.nohdr | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" 1> whatsapp_backup.tar
cette commande exécute Python et décompresse le fichier en utilisant zlib en whatsapp_backup.tar
Maintenant nous pouvons défaire le fichier:
tar xf whatsapp_backup.tar
le archive est maintenant extrait dans votre répertoire de travail actuel et vous pouvez trouver les bases de données (msgstore.db et wa.db) dans apps / com.whatsapp / db /
vous pouvez accéder à la base de données WhatsApp situé sur la carte SD que comme un utilisateur root je pense. si vous ouvrez "\data\data\com.whatsapp "vous verrez que" bases de données "est lié à" \firstboot\sqlite\com.whatsapp\ "
Pour enracinée utilisateurs :whats app store tous les messages et les contacts dans msgstore.db et wa.fichiers db en texte clair.Ces fichiers sont disponibles dans le fichier /data/data/com.whatsapp/bases de données/. vous pouvez ouvrir ces fichiers en utilisant n'importe quel navigateur sqlite comme le navigateur de base de données SQLite.
si vous voulez vraiment quelque chose de simple et que vous savez écrire/exécuter Python, jetez un oeil au script Bas Bosschert: sources
#!/usr/bin/env python
import sys
from Crypto.Cipher import AES
try:
wafile=sys.argv[1]
except:
print "Usage: %s <msgstore.db.crypt>" % __file__
sys.exit(1)
key = "346a23652a46392b4d73257c67317e352e3372482177652c".decode('hex')
cipher = AES.new(key,1)
open('msgstore.db',"wb").write(cipher.decrypt(open(wafile,"rb").read()))
exécution Complète:
(scratch)ehtesh@ackee:/tmp/whatsapp$ mkvirtualenv whatsapp_decrypt
New python executable in whatsapp_decrypt/bin/python
Installing setuptools, pip...done.
(whatsapp_decrypt)ehtesh@ackee:/tmp/whatsapp$ pip install pycrypto >/dev/null
(whatsapp_decrypt)ehtesh@ackee:/tmp/whatsapp$ wget https://gist.githubusercontent.com/shurane/ffa15e959e2d134086c9/raw/bc99a9997123bea0ea0acde185e24c7e89133559/whatsapp_decrypt.py >/dev/null
(whatsapp_decrypt)ehtesh@ackee:/tmp/whatsapp$ ls
msgstore.db.crypt whatsapp_decrypt.py
(whatsapp_decrypt)ehtesh@ackee:/tmp/whatsapp$ python whatsapp_decrypt.py msgstore.db.crypt
(whatsapp_decrypt)ehtesh@ackee:/tmp/whatsapp$ ls
msgstore.db.crypt msgstore.db whatsapp_decrypt.py
(whatsapp_decrypt)ehtesh@ackee:/tmp/whatsapp$ sqlite3 msgstore.db
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> PRAGMA table_info(messages);
0|_id|INTEGER|0||1
1|key_remote_jid|TEXT|1||0
2|key_from_me|INTEGER|0||0
3|key_id|TEXT|1||0
4|status|INTEGER|0||0
5|needs_push|INTEGER|0||0
6|data|TEXT|0||0
7|timestamp|INTEGER|0||0
8|media_url|TEXT|0||0
9|media_mime_type|TEXT|0||0
10|media_wa_type|TEXT|0||0
11|media_size|INTEGER|0||0
12|media_name|TEXT|0||0
13|media_hash|TEXT|0||0
14|media_duration|INTEGER|0||0
15|origin|INTEGER|0||0
16|latitude|REAL|0||0
17|longitude|REAL|0||0
18|thumb_image|TEXT|0||0
19|remote_resource|TEXT|0||0
20|received_timestamp|INTEGER|0||0
21|send_timestamp|INTEGER|0||0
22|receipt_server_timestamp|INTEGER|0||0
23|receipt_device_timestamp|INTEGER|0||0
24|raw_data|BLOB|0||0
25|recipient_count|INTEGER|0||0
sqlite>
Pritam Baral a mentionné une façon encore plus simple:
openssl aes-192-ecb -d -in msgstore.db.crypt -out msgstore.db -K 346a23652a46392b4d73257c67317e352e3372482177652c
Oui, il doit y avoir des moyens d'obtenir msgs de WhatsApp, car il ya des outils disponibles sur le marché aider les utilisateurs WhatsApp pour sauvegarder L'histoire de chat WhatsApp sur leur ordinateur, je sais cela de ici . Par conséquent, vous devez être en mesure de mettre en œuvre ce type d'application. Peut-être que vous pouvez trouver ces outil sur le marché pour voir comment ils fonctionnent.