Le message de l'extraction de la sauvegarde de la base de données WhatsApp

Dans cet article, je vais vous présenter comment utiliser Python pour récupérer les messages de WhatsApp. Et je vais vous expliquer comment trouver et de se concentrer sur le dialogue extrait, et où les données analysées sur le terrain et la base de données SQLite de WhatsApp. Ce n'est pas une analyse inverse / de médecine légale du travail - la seule raison pour laquelle j'écris ceci est que, maintenant, je ne trouve pas que vous pouvez faire confiance à cet effet une information libre et / ou des outils open source. Donc, je pensais que si je pouvais partager mon travail, il sera en mesure de gagner du temps pour les autres. Vous pouvez analyser d'autres applications (messagerie) avec l'utilisation d'un processus similaire.

Dans cet article, je vais utiliser Jupyter ordinateurs portables et les Pandas, mais la quasi-totalité du code peut être utilisé indépendamment de Jupyter. Code pour extraire les messages de DB de WhatsApp dans (écrit pour bloc-notes Jupyter), vous pouvez obtenir à la GitHub.

fond

En raison de certains problèmes juridiques des promoteurs immobiliers (il y a des développeurs honnêtes font?) Je dois récupérer une information WhatsApp sur les appareils iPhone plus âgés placard deux ans.

Je ne suis pas un utilisateur iPhone normal, donc je commençais à penser à des façons de le faire, je trouve que iCloud ne donne pas accès au contenu réel de la sauvegarde. Mais voici quelques outils pour vous aider à obtenir des informations de connexion, et vous permet de parcourir une sauvegarde complète du contenu, mais je ne veux pas que mes (femme) ont révélé des informations de connexion à ces outils inconnus. Alors, j'ai commencé des recherches sur la façon de le faire en sans compromettre la sécurité de votre compte.

Après le démarrage de charge iPhone je trouve WhatsApp ne fonctionne pas, et il y avait un message étrange demande à votre date de téléphone est inexact! Réglez l'horloge et essayez à nouveau (date de téléphone inexact! S'il vous plaît ajuster votre horloge et essayez à nouveau). Je ne sais pas la date d'émission et commencer à WhatsApp ont rien à faire, mais la date de la réparation et le temps ne résout pas ce problème, je lis beaucoup de solutions en ligne semblent recommander le déchargement du matériel lourd. Mais je ne veux pas prendre le risque, parce que je besoin de cette information au tribunal comme preuve.

Étape 1 - Décompressez les fichiers de sauvegarde iPhone

Cette étape est plus approprié pour Mac OS, mais il fonctionne comme dans d'autres systèmes d'exploitation.

1. Créez une machine virtuelle et installer iTunes sur elle. Assurez-vous que la machine virtuelle n'est pas connecté au réseau. (Si vous ne savez pas comment créer une machine virtuelle, s'il vous plaît voir cet article).

2. Connectez votre iPhone à la machine virtuelle. Selon les étapes habituelles de la sauvegarde locale iPhone VM. Pour ceux qui sont intéressés par le Mac, une sauvegarde se trouve à cet endroit: ~ / Library / Application Support / MobileSync / Sauvegarde

Description du format de sauvegarde est disponible ici.

3. Installation iPhone outils d'extraction de sauvegarde (tels que iExplorer par Macroplant) dans une machine virtuelle. Quel outil est pas important, car il ne peut pas accéder à Internet, afin que vos données sont en sécurité.

4. Enfin, utilisez l'outil d'extraction de sauvegarde à l'extrait chatstorage.sqlite, qui est la principale base de données de session WhatsApp. Pour y accéder vous devez naviguer au « Groupe App » « group.net.whatsapp.WhatsApp.shared »

5. En outre, vous pouvez également extraire les médias en extrayant le dossier: « App » « net.whatsapp.WhatsApp » « Bibliothèque » « Médias »

Étape 2 - la connexion à la base de données et de lire la table des messages

WhatsApp semble toutes les conversations qui sont stockées dans une base de données SQLite. Dans un premier temps, nous allons essayer d'utiliser la bibliothèque intégrée sqlite3 python + colonne Pandas pour voir si nous pouvons nous connecter à la base de données et obtenir la table:

Comme vous pouvez le voir, il y a 18 tables. Grâce à l'observation minutieuse de l'une des tables a attiré mon attention (qui est, avec un message que vous) semble être ZWAMESSAGE. Ouvrons:

On peut voir dans le tableau 34:

Voyons voir ce que nous avons. Ce qui suit est une analyse j'ai mené ma propre dans les caractéristiques de la table de base de données et mon raisonnement:

1. Z_PK - apparaît comme un numéro de série 2. Z_ENT à ZFILTEREDRECIPIENTCOUNT - semblent moins importants 3. ZFLAGS - semble indiquer l'état du message 4. ZGROUPEVENTTYPE - semble être lié aux discussions de groupe 5. ZISFROMME - message est de moi ... il est de 1 pour les messages envoyés par cet utilisateur et 0 pour les messages reçus 6. ZMESSAGEERRORSTATUS à ZSPOTLIGHTSTATUS - semble états généraux 7. ZSTARRED - avons-nous étoiles le message 8. ZCHATSESSION - identifiant unique indiquant une session de conversation 9. ZGROUPMEMBER - N'a pas eu à regarder celui-ci encore 10. ZLASTSESSION - Dernière session de chat n'a pas creusé en elle 11. ZMEDIAITEM - semble liée à l'indexation de l'élément média, peut-être un identifiant à l'un des autres tables 12. ZMESSAGEINFO et ZPARENTMESSAGE - semblent assez simples à comprendre des noms 13. ZMESSAGEDATE - message Date de création sans doute (voir la discussion de format de la date ci-dessous) 14. ZSENTDATE - message Date SENT probablement (voir la discussion de format de la date ci-dessous) 15. ZFROMJID - de qui avons-nous (si elle est un message entrant) 16. ZMEDIASECTIONID - semble liée au stockage des médias pour les messages des médias, ne montre pas dans les messages sans média 17. ZPHASH - Hmmm ... pas sûr 18. ZPUSHNAME - semble que le nom de contact sur votre téléphone 19. ZSTANZAID -. Certains indicateurs identifiant la conversation / media Format semble différent dans les messages des médias et des messages texte 20. ZTEXT - le texte du message 21. ZTOJID - à qui ne nous envoyons (si elle est un message sortant)

Étape 3 - extrait du dialogue spécifique

Notre objectif fondamental est d'extraire le dialogue ou communication spécifique. Donc, si nous nous souvenons de cette partie du texte, nous pouvons, ou rechercher un dialogue spécifique par un message par nom ou rechercher un numéro de téléphone de contact, selon l'extrait final un ID de session de dialogue complet.

Cependant, avant de faire cela, nous devons d'abord comprendre comment la date et l'heure dans un format lisible. Je suppose intuitivement zmessagedate est un horodatage unix. Donc je convertir à une date, voici le résultat que je reçois:

Apple semble être unique dans sa sagesse infinie a décidé d'utiliser les dates de début de 1.1.2001 sur l'iPhone, donc nous allons voir si nous unix temps TIME0 décalage est ajouté à 1.1.2001, qu'arrive-t-:

Cela semble résoudre le problème. Dans le processus, j'ai aussi ajouté un indice de date à la trame de données, ce qui rend plus facile à utiliser. S'il vous plaît noter que si vous êtes de l'Android ou un autre système d'exploitation à l'importation, vous devrez peut-être utiliser cette conversion date.

Avec la date, nous pouvons maintenant commencer à extraire un dialogue. Tout d'abord, laissez-nous extrayons un dialogue qui nous intéresse, comme un numéro spécifique:

Il faut noter que j'ai créé pour la recherche colonne lambda. Voici un décevant instant Python « Wat », parce que le faux | Aucun = Aucun |! Faux Ceci est déraisonnable. Dans tous les cas, passez à la colonne de ZCHATSESSION look, on remarquera que, dans mon cas, le numéro d'identification de la session sera « 104,0 » (s'il y a un chat en groupe, vous pouvez voir plus d'un ID de session de chat). L'étape suivante serait que tous les messages dans l'extraction de la session de chat. À cette fin, nous et d'autres méthodes de recherche mentionnés ci-dessus ajouter l'accesseur appropriée (accesseurs) pour elle:

Maintenant, nous allons obtenir tous les messages d'une session de chat et de les afficher (activer le format multi-lignes pour afficher tout le texte):

Partie 4 - Notes et médias extrait Conclusion

Les fichiers multimédias sont stockés dans le dossier mentionné dans l'étape 1, les sous-dossiers en fonction d'un numéro de téléphone de contact de fichiers partagés (ainsi que représente le suffixe du chat en groupe - Ceci est une supposition). Dans le dossier Subfolder pour chaque numéro de téléphone semble suivre le format de sauvegarde iTunes logique similaire, je pense que les médias d'information table liée référencée dans la table, mais je ne prend pas vraiment le temps de vérifier. La dernière chose à noter est que certains dossiers contiennent également un certain nombre de fichiers de pouce, qui sont vraiment juste un fichier JPG (changement de nom pour ouvrir correctement).

code portable Jupyter est disponible sur Github

J'ai supprimé de renseignements personnels, mais exactement le même code et des exemples. En outre, un ordinateur portable peut également contenir des informations supplémentaires.

Enfin, des suggestions d'amélioration et si vous avez la patience de plus amples renseignements ou pour avoir le code, alors vous êtes les bienvenus à tout moment d'envoyer la demande de traction sur github! Merci pour la lecture!

 * Référence Source: moyenne, FB Xiao Bian secist compilé, reproduit à partir FreeBuf.COM

Poursuivre les traces des martyrs | il préférait mourir plutôt que la dévotion se agenouiller au service commémoratif Yan'an révolutionnaire a eu lieu pour lui
Précédent
Fan Bingbing Li Chen et trois, « nous », il semble maintenant très ironique
Prochain
Chanson Zhongji, Liu Hao Ran, Fan Bingbing: ce que vous êtes dans le groupe difficile si Zhang Yun il?
Vos « plaintes », est de détruire la gestion émotionnelle de l'enfant, afin que les enfants ne peuvent pas face à la vie
Voir l'effet Shu Chongqing pour construire la première plate-forme 5G pilote automatique de la fonction publique du pays
Changer de tactique: Décomposition TA505 organiser des activités HTML récemment utilisées, RAT et d'autres technologies
Meixi Lac 36 sous: Jia Cai Fan et Yao a quitté l'humeur l'autre, l'animal à la partie Agitation
Russie « pont de l'amitié » série et le Festival International « Dream Future »
Mise au point super | officiel Chongqing a déclaré le Swaziland Sui Weijie à la rotation de réserve pour des raisons de santé, le futur premier gardien de l'équipe qui jouera?
Quelle est l'importance des sous-vêtements l'allaitement? Porter et ne portez pas une si grande différence en fait, je ne crois pas Baoma
Huangzi Hong Fan: Avec une seule main Collect une « prune Xihu 35 lourd battement, » le garçon
A travers le labyrinthe, des blocs de construction, de la programmation sur place, jetez un oeil au robot enfants « guerre »
« Son dans le cur des gens, » Li Xiangzhe: Je vous soupçonnez pour Huangzai Hong Van, et a des preuves
Matin: Basket-ball signe Lakers tester même Dieu Rondo et d'autres moins de prestige et les gestionnaires pour discuter du commerce et d'autres choses