Perché uno screenshot di WhatsApp non ha valore probatorio
Uno screenshot di una conversazione WhatsApp è trivialmente falsificabile. Chiunque può modificare il contenuto di una pagina web tramite l'Inspector del browser (Modifica HTML, Inspect Element), alterando nomi, messaggi, orari e stati di consegna. Il risultato è visivamente identico a una conversazione autentica.
Uno screenshot non prova che il messaggio sia mai esistito sul server WhatsApp, non contiene metadati verificabili, non documenta la catena di custodia e non garantisce che il contenuto visualizzato corrisponda a dati reali.
L'acquisizione forense con C.E.R.T.O. funziona in modo radicalmente diverso: scarica i dati direttamente da WhatsApp Web tramite Chrome DevTools Protocol e DOM, estrae i messaggi da IndexedDB, decifra i media con HKDF-SHA256 e AES-256-CBC, e registra l'intera sessione in video. Ogni file viene sottoposto a hash forense quadruplo (MD5, SHA-1, SHA-256, SHA-512) e marca temporale RFC 3161.
Come funziona l'acquisizione: i 3 passaggi operativi
L'acquisizione forense WhatsApp con C.E.R.T.O. Desktop 3.1 si svolge in tre passaggi all'interno dell'applicazione. L'operatore non deve installare nulla sul dispositivo del titolare dell'account: serve solo l'accesso a WhatsApp Web tramite scansione del codice QR.
Passaggio 1 — Connessione a WhatsApp Web
C.E.R.T.O. apre una sessione browser controllata e naviga su WhatsApp Web. L'operatore scansiona il codice QR con il dispositivo del titolare dell'account, esattamente come avviene nell'uso normale di WhatsApp Web.
Il software rileva automaticamente il completamento del login tramite polling ogni 2 secondi sullo stato della pagina. Al primo accesso vengono catturati i dati di sessione critici:
- WAToken1 e WAToken2 — token di autenticazione della sessione
- WABrowserId — identificativo univoco del browser
- WASecretBundle — bundle crittografico della sessione
- WID — WhatsApp ID dell'account (numero di telefono)
- LID — Linked Device ID del dispositivo collegato
L'intercettazione CDP (Chrome DevTools Protocol) si attiva immediatamente dopo il login. La registrazione video inizia contestualmente, catturando frame a 1 FPS in formato JPEG.


Passaggio 2 — Selezione delle chat da acquisire
Una volta connesso, C.E.R.T.O. estrae la lista completa delle conversazioni dal DOM di WhatsApp Web tramite lo script SCRIPT_GET_CHAT_LIST. Per ogni chat vengono recuperati:
- Nome del contatto o del gruppo
- Anteprima dell'ultimo messaggio
- Timestamp dell'ultima attività
- Avatar del contatto
- Contatore messaggi non letti
L'operatore seleziona le chat specifiche da acquisire. È disponibile un filtro di ricerca cross-chat per individuare rapidamente le conversazioni di interesse.
Per ogni chat selezionata, il software effettua una stima delle dimensioni: esegue uno scroll verso l'alto per contare i messaggi caricati nel mirror e analizza i pattern testuali delle dimensioni media (kB, MB, GB) per stimare il peso totale dei file allegati.
Passaggio 3 — Acquisizione, cifratura e sblocco
Fase di acquisizione (per ogni chat)
- Scroll UP — il software scorre verso l'alto la conversazione (fino a 2.000 tentativi) per caricare l'intera cronologia nel mirror DOM di WhatsApp Web
- Scroll DOWN — scorrimento verso il basso con estrazione progressiva del testo dal DOM
- Doppia estrazione DOM + IndexedDB — i messaggi vengono estratti sia dal DOM (testo visibile, stato consegna, timestamp) sia da IndexedDB (corpo completo, metadati, chiavi media). Le due fonti vengono unite per ID messaggio, garantendo ridondanza
- Download e decifrazione media — ogni file allegato viene scaricato dalla CDN di WhatsApp e decifrato localmente con AES-256-CBC (chiave derivata con HKDF-SHA256). La verifica dell'integrità avviene tramite confronto filehash SHA-256
- Generazione chat HTML — viene prodotto un file HTML autocontenuto con bolle stile WhatsApp, contenente testo, media inline e metadati
- Metadati chat — salvataggio di partecipanti, ruoli, timestamp primo/ultimo messaggio, conteggi per tipo
Fase post-acquisizione
- Sincronizzazione NTP — verifica dell'ora di sistema tramite server NTP
- Snapshot processi di sistema — fotografia dei processi attivi al momento dell'acquisizione
- Report PDF e TXT — rapporto dettagliato con tutti i parametri dell'acquisizione
- Manifest hash — ogni file viene sottoposto a quadruplo hash: MD5, SHA-1, SHA-256, SHA-512
- Cifratura escrow AES-256-CBC — l'intero pacchetto viene cifrato con una chiave custodita dal server, impedendo qualsiasi alterazione tra acquisizione e registrazione
- Marca temporale RFC 3161 — timestamp certificato sul pacchetto
- Compressione ZIP — pacchetto finale pronto per lo sblocco
Flusso di sblocco
Il pacchetto cifrato viene sbloccato solo al momento della registrazione: il server fornisce la chiave di decifratura, il pacchetto viene decifrato, registrato e archiviato per 5 anni con piena integrità della catena di custodia.
Esempio reale: acquisizione di una chat WhatsApp
| Account | +39 3XX XXXXXXX |
| Chat | "Nome Contatto" (chat 1:1) |
| Messaggi estratti | 342 |
| Media scaricati e decifrati | 28 file (18 foto, 6 video, 3 documenti, 1 messaggio vocale) |
| Dimensione media | 47,3 MB |
I file generati dall'acquisizione
Al termine dell'acquisizione, C.E.R.T.O. genera un pacchetto strutturato contenente tutti i dati estratti, i registri hash e la documentazione della sessione. Ecco la struttura completa.
Rapporto e log
rapporto-acquisizione.txt
rapporto-acquisizione.tsr
acquisizione-log.txt
freetsa-cacert.pem
tsr-verifica.txt
Dati sessione (json/)
json/cookies-whatsapp.json
json/local-storage.json
json/session-storage.json
json/contacts-map.json — mappatura LID → numero di telefono + nome, partecipanti gruppi con ruoli
json/whatsapp-session-info.json — platform, userAgent, language
json/ntp-info.json
Dati per chat (json/)
json/{N}-messages.json — messaggi DOM + IndexedDB uniti per ID
json/{N}-decrypted-messages.json — corpi IndexedDB decifrati
json/{N}-network-log.json — richieste HTTP e CDN per chat
Media (media/)
media/media-manifest.json
media/MEDIA_ERROR_log.json
Chat HTML (chats/chat_N/)
chats/chat_N/messages.json
chats/chat_N/metadata.json
Video sessione (screenshot-recorded/)
screenshot-recorded/session-recording.webm — video compilato con FFmpeg
screenshot-recorded/recording-info.json
Registri hash (registri/)
registri/registro-video.txt
registri/registro-documenti.txt
registri/registro-json.txt
registri/registro-screenshot.txt
Ogni registro contiene: MD5, SHA-1, SHA-256, SHA-512 per ogni file
Manifest
{id}-hashes.json
Cosa rende completa un'acquisizione WhatsApp
Ogni acquisizione forense WhatsApp con C.E.R.T.O. integra otto elementi tecnici che, insieme, garantiscono completezza, autenticità e non ripudiabilità dei dati estratti.
| Elemento | Dettaglio tecnico |
|---|---|
| Doppia estrazione DOM + IndexedDB | I messaggi vengono estratti sia dal DOM visibile sia da IndexedDB e uniti per ID messaggio. La doppia fonte garantisce ridondanza: se un dato manca nel DOM (es. messaggi non renderizzati), viene recuperato da IndexedDB e viceversa. |
| Decifrazione media | Ogni file media viene decifrato localmente: la mediaKey estratta da IndexedDB viene espansa con HKDF-SHA256, producendo IV (16 byte), CipherKey (32 byte), MacKey (32 byte) e RefKey (32 byte). Il contenuto viene decifrato con AES-256-CBC e l'integrità verificata con filehash SHA-256. Stringhe informative specifiche per tipo media (image, video, document, audio, sticker). |
| Registrazione video | L'intera sessione viene registrata a 1 frame al secondo in formato JPEG. I singoli frame vengono conservati individualmente (frame_NNNNN_Nms.jpg) e compilati in un video WebM tramite FFmpeg. Il video documenta visivamente tutto ciò che l'operatore ha visualizzato, dalla scansione del QR al completamento. |
| Intercettazione rete CDP | Tutte le richieste HTTP, i frame WebSocket e le risposte CDN vengono intercettate e registrate tramite Chrome DevTools Protocol. Il log di rete documenta ogni singola comunicazione tra il browser e i server WhatsApp durante l'acquisizione. |
| Cattura dati sessione | Vengono acquisiti token di autenticazione (WAToken1/2), chiavi crittografiche (WASecretBundle, EncKeySalt), identificativi (WID, LID, WABrowserId), cookie, localStorage, sessionStorage e la mappa completa dei contatti con numeri di telefono e ruoli nei gruppi. |
| Cifratura escrow | Il pacchetto finale viene cifrato con AES-256-CBC utilizzando una chiave custodita esclusivamente dal server. Questo impedisce qualsiasi alterazione dei dati tra il momento dell'acquisizione e la registrazione formale. |
| Registri hash per tipologia | I file vengono suddivisi per tipologia (immagini, video, documenti, JSON, screenshot) e per ciascuno viene generato un registro separato contenente quattro hash: MD5, SHA-1, SHA-256, SHA-512. La separazione per tipo facilita la verifica selettiva. |
| Verifica magic byte | Dopo la decifrazione, il tipo di file viene confermato analizzando i magic byte iniziali: JPEG (FF D8 FF), PNG (89 50 4E 47), PDF (%PDF), MP4 (ftyp), OGG (OggS) e altri. Questo garantisce che la decifrazione sia avvenuta correttamente e che il file non sia corrotto. |
Domande frequenti
Acquisisci le tue chat WhatsApp con valore legale
Scarica C.E.R.T.O. Desktop 3.1 e ottieni acquisizioni forensi complete, con doppia estrazione, media decifrati, video sessione e marca temporale certificata.
Registrati gratis Vedi i prezzi