Trovare la chiave crittografica di WhatsApp senza bisogno di root

Una procedura che permette di arrivare ad estrarre la chiave crittografica usata da WhatsApp sui telefoni Android senza bisogno del rooting.

I messaggi salvati sullo smartphone da WhatsApp vengono automaticamente crittografati da parte dell’applicazione usando una chiave segreta, diversa per ciascun utente.
La chiave crittografica di WhatsApp è memorizzata nella cartella /data/data/com.whatsapp/files/key del dispositivo, totalmente inaccessibile da parte dell’utente a meno di non effettuare il rooting del dispositivo Android.

Se, per qualunque motivo, si avesse l’esigenza di trovare la chiave segreta usata per cifrare gli archivi dei messaggi di WhatsApp, si può usare una procedura “tosta” che però permette di raggiungere l’obiettivo – soprattutto se ne si comprendono bene i rudimenti – sui dispositivi non sottoposti a rooting.

Nel nostro caso abbiamo scelto di utilizzare una macchina virtuale Ubuntu eseguita tramite Virtualbox su un sistema host Windows 10.
Abbiamo quindi effettuato con successo il recupero della chiave crittografica di WhatsApp aggiornato all’ultima versione e installato su uno smartphone Android 10 (collegato tramite cavo USB).

Prima di iniziare è bene effettuare un backup completo di WhatsApp magari attivando il backup sul cloud di Google Drive: in questo modo non si correrà il rischio di perdere qualche messaggio. Nel caso in cui qualcosa dovesse andare storto potreste dover reinstallare manualmente e riconfigurare WhatsApp. Fate eventualmente riferimento alla versione dell’app di messaggistica pubblicata sul Play Store.

Come trovare la chiave crittografica che WhatsApp usa per cifrare gli archivi dei messaggi su smartphone Android “no root”

Il contenuto dei file msgstore*-db.crypt12 che WhatsApp memorizza nella cartella \WhatsApp\databases dello smartphone non è direttamente accessibile perché protetto utilizzando un algoritmo crittografico sicuro.

Per accedervi è possibile comunque usare un trucco ovvero forzare l’installazione di una precedente versione di WhatsApp che permetteva l’utilizzo del comando adb backup per creare su PC un backup completo di tutti i suoi file, chiave crittografica compresa.
Le ultime versioni di WhatsApp, così come come altre applicazioni, non permettono più questa possibilità: è però possibile giocare d’astuzia per raggiungere il traguardo prefisso:

1) Attivare le Opzioni sviluppatore sul dispositivo Android. Per procedere in tal senso è necessario accedere alle impostazioni di Android quindi toccare Info sul telefono molto rapidamente per almeno sette volte.

2) Abilitare Debug USB e Installa tramite USB nelle Opzioni sviluppatore. Le voci proposte potrebbero differire leggermente a seconda della versione di Android in uso e della “personalizzazione” applicata dal produttore dello smartphone.

3) Collegare lo smartphone al PC usando un cavo USB e, nel caso in cui Ubuntu fosse caricato come macchina virtuale Virtualbox, cliccare sul menu Dispositivi, USB quindi scegliere lo smartphone collegato. Accordare sul display dello smartphone la possibilità di collegarsi dal PC per effettuare il debug USB.

4) Aprire una finestra del terminale in Ubuntu quindi digitare quanto segue:


sudo apt install git -y
sudo apt install python3 -y
sudo apt install python3-pip -y
sudo apt-get install android-tools-adb android-tools-fastboot -y
python3 -m pip install -r requirements.txt
sudo apt install default-jre -y
sudo apt install sqlite3 -y
sudo apt install sqlitebrowser -y

git clone https://github.com/yuvrajraghuvanshis/WhatsApp-Key-Database-Extractor.git
cd WhatsApp-Key-Database-Extractor

5) Lo script Python che presentiamo è davvero eccellente ma non funziona su tutti gli smartphone. Il problema deriva dal fatto che dopo il caricamento della vecchia versione di WhatsApp, questa chiede conferma all’utente dei permessi richiesti. Non ricevendo alcuna conferma (lo script Python è completamente automatizzato) la procedura di estrazione della chiave e successivo backup non vanno a buon fine.

Per risolvere digitare quanto segue:

rm wa_kdbe.py
wget https://www.techportal.it/dl/wa_kdbe.txt
mv wa_kdbe.txt wa_kdbe.py

6) Creare quindi manualmente la cartella in cui saranno salvati i backup di WhatsApp, chiave crittografica compresa:

mkdir -p extracted/whatsapp

7) A questo punto si potrà avviare lo script vero e proprio:

python3 wa_kdbe.py

8) Come primo passo bisognerà dapprima indicare il numero seriale dello smartphone Android collegato via USB.

9) Dopo aver letto attentamente le istruzioni, premere “y” quindi Invio.

10) Alla comparsa del messaggio Installing legacy WhatsApp sullo schermo dello smartphone apparirà una schermata come quella riprodotta in figura. Scegliere Installa.

11) Quando apparirà il messaggio Waiting 15 secs to run WhatsApp legacy affrettarsi ad avviare la vecchia versione di WhatsApp installata sul dispositivo mobile, accordare i permessi richiesti e premere OK in corrispondenza del messaggio Questa app è realizzata per una versione precedente di Android.

Ignorare l’eventuale messaggio che dovesse informare sull’utilizzo di data/ora non corrette (non premere Modifica data e ora).
12) A questo punto, alla comparsa sul PC del messaggio Now unlock your device and confirm the backup operation, inserire una password in corrispondenza del campo Se desideri crittografare tutti i dati di backup… quindi cliccare su Effettua backup dei miei dati.

Dovrebbe comparire un riferimento a com.whatsapp.

13) A questo punto la procedura di backup proseguirà (potrebbe essere necessario attendere a seconda del volume degli archivi di WhatsApp) per poi mostrare il messaggio Enter a reference name for this user. Scrivere whatsapp e premere Invio.

In corrispondenza di Enter same password which you entered on device when prompted earlier scrivere la password scelta in precedenza lato smartphone per proteggere gli archivi di backup di WhatsApp.

14) Come ultimo passo lo script permette di proteggere con una password tutti i dati di WhatsApp appena importati in Ubuntu.

15) Digitando ls extracted/whatsapp si vedranno tutte le conversazioni di WhatsApp in chiaro: sono memorizzate come file dal nome msgstore.db.
La chiave crittografica usata per generare i file msgstore*-db.crypt12 è contenuta nel file key sprovvisto di estensione.

16) Digitando ora sqlitebrowser quindi selezionando il file msgstore.db si potrà verificarne la struttura e il contenuto.

17) Copiando il file key su un sistema Windows quindi scaricando WhatsApp Viewer da GitHub è possibile consultare direttamente i messaggi scambiati tramite WhatsApp con i vari contatti.

Basterà infatti copiare il file msgstore*-db.crypt12 dalla cartella \WhatsApp\databases dello smartphone Android sul PC Windows quindi avviare WhatsApp Viewer scegliendo File, Decrypt .crypt12.

Nel campo Database file si dovrà indicare l’archivio WhatsApp in formato cifrato copiato dallo smartphone; in Key file il file chiave key recuperato con lo script Python.

Dopo aver cliccato su Decrypt WhatsApp Viewer chiederà dove salvare la versione decifrata dell’archivio. Cliccando su File, Open si potrà infine aprirla.

Si otterrà una schermata come quella in figura con a sinistra i numeri di telefono dei contatti WhatsApp: cliccando su uno di essi si accederà alla cronologia completa dei messaggi (esportabile in formato .txt, .html e .json).

Maggiori informazioni sul funzionamento dello script Python sono disponibili in queste pagine su GitHub.

Le “miniature” fotografiche a corredo dell’articolo sono di Aarn Giri e Rachit Tank.

Ti consigliamo anche

Link copiato negli appunti