
Déchiffrer les fichiers multimédias chiffrés de WhatsApp (images, vidéos, audio, documents) à l'aide de clés multimédias extraites des bases de données iOS ChatStorage.sqlite ou Android msgstore.db.
Une enquête judiciaire très médiatisée récente a indiqué que « en raison du chiffrement de bout en bout utilisé par WhatsApp, il est pratiquement impossible de déchiffrer le contenu du fichier téléchargé [.enc] pour déterminer s’il contenait du code malveillant en plus de la vidéo livrée. »
Ce projet montre comment déchiffrer les fichiers média chiffrés téléchargés depuis WhatsApp.
$ go get github.com/ddz/whatsapp-media-decrypt
Usage: ./whatsapp-media-decrypt -o FILE -t TYPE ENCFILE HEXMEDIAKEY
Options:
-o FILE
write decrypted output to FILE
-t TYPE
media TYPE (1 = image, 2 = video, 3 = audio, 4 = doc)
La clé média est stockée dans un message protobuf lui-même stocké codé en hexadécimal dans la colonne ZMEDIAKEY.
$ sqlite ChatStorage.sqlite
SQLite version 3.27.2 2019-03-09 15:45:46
Enter ".help" for usage hints.
sqlite> select ZMEDIAURL,ZVCARDSTRING,hex(ZMEDIAKEY) from ZWAMEDIAITEM where Z_PK = 1795;
https://mmg-fna.whatsapp.net/d/f/Atzc5Drr8l7ngis8GmUTMI6vMQNjOU9zGQ2SYRkjwq44.enc|video/mp4|0A2069A349914734B9359DA0CD8923E6DFDE06F1E2BCE23222C738C521570BA8242A1220A1F5AEB2E620F73007FA853200559B2669455BB5818F619397C638042D8F7F2A18B984A5F1052000
sqlite> .quit
La clé média est stockée codée en hexadécimal dans la colonne media_key.
$ sqlite msgstore.db
SQLite version 3.27.2 2019-03-09 15:45:46
Enter ".help" for usage hints.
sqlite> select message_url,mime_type,hex(media_key) from message_media where message_row_id = 1337;
https://mmg-fna.whatsapp.net/d/f/AnUpYQ390rgUBOQRhuwCyNqo_9KGATdmLUq-ghYEx-D9.enc|video/mp4|14F9C1B3BB5E66D9A593999A5E0ED3D03ABFECA84320D17763C2B44205E91C17
sqlite> .quit
$ curl -O https://mmg-fna.whatsapp.net/d/f/Atzc5Drr8l7ngis8GmUTMI6vMQNjOU9zGQ2SYRkjwq44.enc
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 389k 100 389k 0 0 1966k 0 --:--:-- --:--:-- --:--:-- 1956k
$ whatapp-media-decrypt -o Atzc5Drr8l7ngis8GmUTMI6vMQNjOU9zGQ2SYRkjwq44.mp4 -t 2 ./Atzc5Drr8l7ngis8GmUTMI6vMQNjOU9zGQ2SYRkjwq44.enc 0A2069A349914734B9359DA0CD8923E6DFDE06F1E2BCE23222C738C521570BA8242A1220A1F5AEB2E620F73007FA853200559B2669455BB5818F619397C638042D8F7F2A18B984A5F1052000
Non. Le chiffrement de WhatsApp est de bout en bout, ce qui garantit que seuls l’expéditeur et le destinataire peuvent lire le message, et surtout pas les serveurs (ou les attaquants !) intermédiaires. Ce programme utilise une clé cryptographique stockée sur l’un des points d’extrémité pour déchiffrer une pièce jointe média de la même manière que l’application WhatsApp le fait pour l’afficher à l’écran.
Non. WhatsApp utilise iOS Data Protection pour chiffrer les fichiers de données utilisateur (y compris ChatStorage.sqlite) à l’aide de la clé matérielle UID spécifique à l’appareil et irrécupérable, ainsi que d’une clé dérivée du code d’accès de l’utilisateur. Ils ne peuvent pas être déchiffrés sans un accès physique à l’appareil iOS spécifique qui a créé le fichier, ni sans connaître le code d’accès de l’utilisateur.
Non.
Engelke, Lucas. go-whatsapp
Graham, Robert. Comment déchiffrer les fichiers média WhatsApp de bout en bout
Marczak, Bill. « Quelques pistes pour approfondir l’enquête dans l’affaire du piratage de Bezos »
Sigalor. WhatsApp Web Reverse Engineered
WhatsApp. Aperçu du chiffrement WhatsApp