Il modulo WhatsApp di C.E.R.T.O. Desktop acquisisce conversazioni da WhatsApp Web con piena validità forense. L'estrazione avviene tramite una tecnica ibrida DOM + IndexedDB che garantisce completezza e ridondanza. I media (foto, video, audio, documenti) vengono scaricati dai CDN di WhatsApp e decifrati con HKDF-SHA256 + AES-256-CBC secondo le specifiche del protocollo Signal. L'intera sessione di navigazione viene registrata in video. Il fascicolo è protetto da hash crittografici multipli, cifratura escrow AES-256 e marca temporale RFC 3161.
Costo: 1 slot per chat acquisita — vedi pacchetti slot
Come funziona l'acquisizione WhatsApp
L'acquisizione si basa su WhatsApp Web: l'utente scansiona il QR code con il proprio smartphone e C.E.R.T.O. accede alla sessione in modalità esclusivamente di lettura, senza modificare alcun messaggio o stato di consegna. Il sistema utilizza il Chrome DevTools Protocol per intercettare il traffico di rete, catturare i frame della sessione e accedere ai dati strutturati in IndexedDB.
Il flusso è progettato per acquisizioni in ambito giudiziario: contenziosi civili, procedimenti penali, indagini difensive e CTU che coinvolgono conversazioni WhatsApp.
Crittografia end-to-end preservata: WhatsApp utilizza il protocollo Signal per la cifratura end-to-end dei messaggi. C.E.R.T.O. non intercetta i messaggi a livello di trasporto, ma li acquisisce dopo la decifratura lato client, nel momento in cui WhatsApp Web li rende disponibili nel browser. I media vengono decifrati localmente utilizzando le mediaKey estratte da IndexedDB.
Cosa acquisisce il modulo WhatsApp
Per ogni chat selezionata, il modulo produce un fascicolo forense completo contenente i messaggi, i media decifrati, il rendering HTML della conversazione, i dati di sessione e l'intercettazione di rete.
| Elemento acquisito | Dettagli |
|---|---|
| Messaggi (DOM + IDB) | Estrazione ibrida da due sorgenti: DOM (testo visibile, stato consegna, timestamp) e IndexedDB (corpo decifrato, metadati strutturati, mediaKey, filehash). Le due sorgenti vengono fuse per massimizzare completezza. |
| Media decifrati | Foto, video, messaggi vocali, documenti e sticker scaricati dai CDN WhatsApp e decifrati con HKDF-SHA256 + AES-256-CBC. Tipo file verificato tramite magic bytes. Hash SHA-256 confrontato con il filehash originale. |
| Chat HTML navigabile | Ricostruzione della conversazione in un file HTML autocontenuto con stile WhatsApp: bolle messaggi, avatar, timestamp, media inline, colori per autore e indicatori di consegna. |
| Video recording sessione | Cattura continua della sessione WhatsApp Web in formato JPEG, convertita in video WebM con FFmpeg. Documenta visivamente l'intera navigazione. |
| Intercettazione rete (CDP) | Log di tutte le richieste HTTP e risposte CDN tramite Chrome DevTools Protocol. Cattura frame WebSocket con conteggio per chat. |
| Dati di sessione | Token di autenticazione (WAToken1/2), WABrowserId, WASecretBundle, chiavi di cifratura, cookie, localStorage e sessionStorage completi. |
| Mappa contatti | Mappatura LID → numero di telefono e nome visualizzato. Per i gruppi: lista partecipanti con ruoli (admin, super admin, membro), inclusi partecipanti passati. |
| Hash crittografici (x4) | MD5, SHA-1, SHA-256 e SHA-512 calcolati per ogni file media durante il download e per tutti i file del fascicolo. Registri separati per tipo (immagini, video, documenti). |
| Contesto di sistema | Sincronizzazione NTP (offset documentato), IP pubblico del client, piattaforma, user agent, lingua del browser. |
| Report forense | Documento TXT e PDF con account, interlocutori, lista chat, riepilogo acquisizione, inventario hash e catena di custodia. |
| Cifratura escrow + timestamp | Il fascicolo viene cifrato con chiave AES-256-CBC escrow gestita dal server. Marca temporale RFC 3161 (FreeTSA o InfoCert eIDAS). |
Estrazione messaggi: doppia sorgente DOM e IndexedDB
Il modulo utilizza una strategia di estrazione a doppia sorgente per garantire la massima completezza e offrire ridondanza forense: se una sorgente fallisce o risulta incompleta, l'altra compensa.
Estrazione DOM (tempo reale)
Analisi del DOM visibile di WhatsApp Web tramite selettori stabili cross-versione:
div[data-id]— container messaggi con ID univoco.message-in/.message-out— direzione.selectable-text— corpo del messaggio[data-icon]— stato consegna (inviato, consegnato, letto)- Gestione dello scroll virtuale (solo ~15 messaggi renderizzati alla volta)
Estrazione IndexedDB (strutturata)
Accesso diretto ai database interni di WhatsApp Web:
model-storage/message— messaggi con metadati crittograficimodel-storage/contact— mappatura numero → LIDmodel-storage/participant— membri gruppi con ruoliwawc_db_enc/keys— chiavi di cifratura master- Campi: id, body, timestamp, ack, mediaKey, filehash, mimetype
Le due sorgenti vengono fuse per message ID: il testo dal DOM ha priorità per la visualizzazione, i metadati da IndexedDB arricchiscono il record con informazioni crittografiche (mediaKey, filehash) e lo stato di consegna strutturato (0=pending, 1=sent, 2=delivered, 3=read).

Download e decifratura media AES-256
I media condivisi su WhatsApp (foto, video, audio, documenti) sono cifrati con il protocollo Signal e archiviati sui CDN di WhatsApp. C.E.R.T.O. li scarica e li decifra localmente utilizzando le chiavi estratte da IndexedDB.
Processo di decifratura
- Download dal CDN — il file cifrato viene scaricato da
mmg.whatsapp.netcon calcolo simultaneo degli hash MD5, SHA-1, SHA-256, SHA-512 - Estrazione mediaKey — la chiave di cifratura (32 byte, base64) viene letta dal record IndexedDB del messaggio
- Derivazione HKDF-SHA256 — la mediaKey viene espansa a 112 byte tramite HKDF (RFC 5869) con info-string specifica per tipo media:
- "WhatsApp Image Keys" — per immagini e sticker
- "WhatsApp Video Keys" — per video
- "WhatsApp Audio Keys" — per audio e messaggi vocali
- "WhatsApp Document Keys" — per documenti
- Scomposizione chiavi — i 112 byte vengono suddivisi in: IV (16 byte), CipherKey (32 byte), MacKey (32 byte), RefKey (32 byte)
- Decifratura AES-256-CBC — il payload cifrato (escludendo i 10 byte di MAC finale) viene decifrato con CipherKey e IV
- Verifica integrità — l'hash SHA-256 del file decifrato viene confrontato con il
filehashmemorizzato in IndexedDB - Riconoscimento tipo — verifica del tipo file tramite magic bytes (JPEG: FF D8 FF, PNG: 89 50 4E 47, PDF: %PDF, MP4: ftyp, OGG: OggS, WebP: RIFF..WEBP, e altri 10+ formati)

Video recording della sessione di navigazione
Durante l'intera acquisizione, C.E.R.T.O. registra la sessione di WhatsApp Web catturando un frame JPEG al secondo della finestra del browser. Al termine, la sequenza di frame viene convertita in un file video WebM tramite FFmpeg.
| Parametro | Valore |
|---|---|
| Frame rate | 1 FPS (un fotogramma al secondo) |
| Formato frame | JPEG con timestamp nel nome file (frame_00000_0ms.jpg) |
| Video output | WebM (generato da FFmpeg dalla sequenza JPEG) |
| Metadati | recording-info.json con conteggio frame, durata, FPS e timestamp di inizio |
Il video fornisce una prova visuale continua dell'intera sessione di acquisizione: dalla scansione del QR code alla navigazione delle chat, fino al completamento. Ogni frame è preservato anche come singolo file JPEG nella cartella screenshot-recorded/.

Dati di sessione e autenticazione catturati
Il modulo acquisisce i dati di sessione di WhatsApp Web che documentano l'identità dell'account, il contesto tecnico e le informazioni di autenticazione.
Autenticazione
- WAToken1, WAToken2 (session token)
- WABrowserId
- WASecretBundle (chiavi di sessione)
- WAWebEncKeySalt
- WID (phone:hash@c.us)
- LID (Linked Identity)
Browser e storage
- Cookie completi (web.whatsapp.com)
- localStorage (dump completo)
- sessionStorage (dump completo)
- User agent, piattaforma, lingua
Contatti e gruppi
- Mappatura LID → telefono + nome
- Lista partecipanti per gruppo
- Ruoli: admin, super admin, membro
- Partecipanti passati (ex-membri)
- Lista completa delle chat visibili
Il fascicolo forense prodotto
Ogni acquisizione genera un archivio cifrato contenente tutti gli artefatti forensi, organizzati per chat e per tipo.
├── json/
│ ├── auth-session-data.json — token e chiavi di autenticazione
│ ├── cookies-whatsapp.json — cookie di web.whatsapp.com
│ ├── local-storage.json — dump completo localStorage
│ ├── session-storage.json — dump completo sessionStorage
│ ├── contacts-map.json — mappatura LID → telefono e partecipanti
│ ├── whatsapp-session-info.json — piattaforma, user agent, account
│ ├── {N}-chat-metadata.json — metadati per chat (nome, JID, tipo)
│ ├── {N}-messages.json — messaggi DOM+IDB fusi
│ ├── {N}-decrypted-messages.json — messaggi IDB con corpo decifrato
│ ├── {N}-network-log.json — richieste HTTP e CDN per chat
│ ├── file-manifest.json — inventario file con hash
│ ├── {id}-hashes.json — manifest SHA-256 globale
│ └── ntp-info.json — sincronizzazione NTP
├── media/ — media scaricati e decifrati
│ ├── CDN_*.jpg / .mp4 / .pdf / .ogg / ... — file decifrati
│ ├── media-manifest.json — inventario media con hash e tipo
│ └── MEDIA_ERROR_log.json — media falliti con codici HTTP
├── chats/
│ └── chat_{N}/ — directory per chat
│ ├── chat.html — rendering HTML navigabile
│ ├── messages.json — messaggi della chat
│ └── metadata.json — info chat, partecipanti
├── screenshot-recorded/
│ ├── frame_00000_0ms.jpg ... — frame catturati
│ ├── recording-info.json — metadati registrazione
│ └── session-recording.webm — video della sessione
├── registri/ — hash separati per tipo
│ ├── registro-immagini.txt
│ ├── registro-video.txt
│ ├── registro-documenti.txt
│ ├── registro-json.txt
│ └── registro-screenshot.txt
├── rapporto-acquisizione.txt — report forense
├── rapporto-acquisizione.pdf — report PDF
├── rapporto-acquisizione.tsr — marca temporale RFC 3161
├── acquisizione-log.txt — log cronologico
└── freetsa-cacert.pem / tsr-verifica.txt — verifica timestamp
Contenuto del report forense
Il documento rapporto-acquisizione.pdf include:
- Account WhatsApp: nome, numero di telefono, WID, LID
- Metodo di autenticazione (QR Code) e modalità di accesso (read-only)
- Tecnica di estrazione: CDP + DOM ibrido v3.1
- Sincronizzazione NTP con offset documentato
- Elenco interlocutori con numeri di telefono e ruoli (per i gruppi)
- Lista completa delle chat visibili sull'account (prime 50 con tipo e timestamp)
- Criteri di selezione: chat scelte per l'acquisizione
- Riepilogo: chat acquisite, messaggi estratti, media scaricati/trovati, dimensione totale
- Dettaglio per chat: nome, tipo, conteggio messaggi e media
- Registri hash per tipo: immagini, video, documenti, JSON, screenshot (MD5, SHA-1, SHA-256, SHA-512)
- Hash manifest e hash archivio ZIP

Integrità, cifratura escrow e marca temporale
Il fascicolo WhatsApp ha un livello di protezione aggiuntivo rispetto agli altri moduli: la cifratura escrow AES-256 che garantisce che i dati non possano essere alterati prima della registrazione sul server.
Hash per file (x4)
MD5, SHA-1, SHA-256, SHA-512 calcolati durante il download di ogni media e per tutti i file del fascicolo. Registri separati per tipo.
Verifica filehash
L'hash SHA-256 di ogni file media decifrato viene confrontato con il filehash memorizzato in IndexedDB, a garanzia che la decifratura sia corretta.
Cifratura escrow
Il fascicolo (ZIP + TAR) viene cifrato con AES-256-CBC usando una chiave escrow generata dal server. Lo sblocco avviene solo al momento della registrazione.
Marca temporale
RFC 3161 tramite FreeTSA o InfoCert eIDAS. File .tsr e certificato CA inclusi per verifica offline con OpenSSL.
Flusso di sblocco escrow
- L'acquisizione produce il fascicolo cifrato (
.zip.ence.tar.enc) - L'utente richiede lo sblocco — il sistema verifica la disponibilità di slot
- Il server fornisce la chiave AES-256 e l'IV per la decifratura
- Il fascicolo viene decifrato localmente
- I dati decifrati (manifest e hash ZIP) vengono inviati al server per la registrazione e l'archiviazione certificata per 5 anni
Questo meccanismo garantisce che il contenuto del fascicolo non possa essere alterato tra l'acquisizione e la registrazione: la chiave di decifratura è custodita dal server e rilasciata solo al momento dello sblocco formale.
Acquisisci chat WhatsApp con valore forense
Scarica C.E.R.T.O. Desktop, scansiona il QR code e ottieni un fascicolo forense completo delle tue conversazioni. 1 slot per chat.