Recevoir tous les messages de Whatsapp

j'essaie d'implémenter une application qui affichera dans un textview tous les messages reçus de Whatsapp. Est-il possible de le faire? Est-il possible d'extraire tous les messages de Whatsapp?

32
demandé sur Tshepang 2012-01-14 00:33:44

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é.

26
répondu Taranfx 2013-03-15 07:37:30

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");
16
répondu amalBit 2014-04-30 05:24:55

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 /

8
répondu RenWal 2016-12-23 13:24:10

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\ "

6
répondu Pedro Teran 2012-02-20 04:53:02

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.

3
répondu user3160429 2014-01-04 14:15:40

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
3
répondu Ehtesh Choudhury 2014-05-28 00:37:08

Je ne suis pas sûr si WhatsApp stocke vraiment ses affaires dans une base de données sqlite stockée dans l'Espace app privé, mais il peut être intéressant d'essayer de faire la même chose que j'ai suggéré ici . Vous aurez besoin d'un accès root pour cela.

1
répondu Luminger 2017-05-23 11:47:23

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.

0
répondu Willa Foster 2017-02-15 08:09:56
-1
répondu Rico 2013-01-14 16:08:52