Repository navigation
RepertIA 2.21.0
⚠️ Wrong GPS coordinates of photos and videos in this version: use RepertIA 3.0.0 or later.
The GPS metadata of photos and videos lost its sign: South latitudes and West longitudes came out positive, so those positions are wrong (for example a photo taken in North Carolina, longitude -78.87, is shown as +78.87). North and East positions are not affected. Chat locations and iLEAPP/ALEAPP artifacts are not affected.
The error is in lists, reports, portable reports, exports, answers of the AI agent and any use of those coordinates. The defect has been present at least since 2.19.0.
What to do: open the case with 3.0.0, which recalculates the coordinates once and records it in the case log, then redo any report with photo or video coordinates in those areas. Reports already delivered do not change: check them and correct them where necessary.
⚠️ Coordinate GPS di foto e video errate in questa versione: usare RepertIA 3.0.0 o successiva.
I metadati GPS di foto e video perdevano il segno: latitudini Sud e longitudini Ovest risultavano positive, quindi quelle posizioni sono sbagliate (per esempio una foto scattata in North Carolina, longitudine -78.87, compare come +78.87). Le posizioni a Nord e a Est non sono interessate, come non lo sono le posizioni delle chat e gli artefatti di iLEAPP/ALEAPP.
L'errore è negli elenchi, nei report, nei report portatili, nelle esportazioni, nelle risposte dell'agente IA e in ogni uso di quelle coordinate. Il difetto è presente almeno dalla 2.19.0.
Cosa fare: aprire il caso con la 3.0.0, che ricalcola le coordinate una volta sola e lo registra nel registro del caso, poi rifare i report con coordinate di foto o video di quelle zone. I report già consegnati non cambiano: vanno ricontrollati e, se serve, corretti.
🇮🇹 Testo italiano più sotto.
RepertIA works completely WITHOUT artificial intelligence. The local AI model is not included in the packages: it is an optional choice of the user (LM Studio, llama-server or Ollama), which can be used or not. Without a model all analyses, searches and reports work just the same.
Download
| System | File |
|---|---|
| Windows (installer) | RepertIA-2.21.0-Setup.exe |
| Windows (portable) | RepertIA-2.21.0-Windows.zip |
| Mac (Apple Silicon) | RepertIA-2.21.0-Mac.zip |
| Linux x86_64 (experimental) | RepertIA-2.21.0-Linux.tar.gz |
| Acceptance test (collaudo) | RepertIA-collaudo.zip |
| SHA-256 checksums | SHA256SUMS.txt |
| Illustrated guide (PDF) | English · Italiano |
Sources of the third-party disk components (GPL/LGPL, unchanged since 2.19.0): RepertIA-2.19.0-sorgenti-terze-parti.tar and poppler-26.09.0.tar.xz, among the files below; FFmpeg (LGPL, new in 2.20): ffmpeg-n9.0.2-36-g6882969ce9-sorgenti.tar.gz, the exact source of the included build. iLEAPP and ALEAPP are MIT-licensed; their two LGPL libraries (pytypedstream, simplekml) are pure Python and their source is in the package.
What's new in 2.21.0
- Bookmarks. A chat's record now has Open chat. Export files saves the whole chat (HTML, CSV, attachments, SHA-256 in the manifest), with an optional period; the report contains the chat text (first 2,000 messages, complete in the portable report).
- Bookmark timeline. All bookmarks in order of event date, with what each date refers to; also in the report and as CSV.
- Link forensic copy (Case menu). A case moved to another computer finds its copy again: the copy is accepted only with the same SHA-256 and the operation stays in the log.
- Export diagnostic logs. A new technical log with no case data and a mandatory preview, also on the start page.
- iLEAPP/ALEAPP. Limit raised from 500,000 to 2,000,000 rows and, beyond it, small tables go before huge ones: on a test iOS 17 iPhone, 20 of 21 million rows are FSEvents.
Tested: acceptance test 448/448 in Italian and English from the Mac package, 77/77 on public images; navigation 66/66 (Chromium). Acceptance test on Windows with the final package passed (reported by the author). Not tested: Linux with this version; the new row limit on a full iOS 17 case (time and database size); WebKit. Third-party components and the PDF guides are those of 2.20.3.
What's new in 2.20.3
Two fixes for WhatsApp on Android.
msgstore.dbnot read. A defect stopped the whole database being read when an attachment followed a call in a chat (error'int' object has no attribute 'find'). It affects Mac, Windows and Linux from 2.20.0. If the notices of a case showmsgstore.db: not read, re-read it with Additional analyses → Chats and address books.- crypt15 backups. They are now decrypted with
encrypted_backup.key, if it is in the extraction, or with the 64-digit key entered by the analyst, which stays in memory only. Earlier manuals said the crypt15 key is not on the phone: that was wrong. - The illustrated guides, in Italian and English, are now attached here.
Tested: acceptance test 437/437 in Italian and in English from the assembled Mac package (77/77 on public images); 437/437 on Windows 11 with the fixes, before the packages were assembled; a real public crypt15 backup from wa-crypt-tools. On the public Android 14 image the result is identical to 2.20.2, row by row: that phone does not show the defect, which was reproduced on constructed data. Not tested: a crypt15 with real messages, the final Windows package, the Linux package.
What's new in 2.20.2
Fix for smartphone cases on Windows. On Windows, iLEAPP ends the lines of its TSV files with a double line break and RepertIA imported an empty row after each real row: a table of N rows became 2N+1.
- Who is affected: only smartphone cases prepared on Windows with 2.20.1. Mac and Linux are not affected, nor are ALEAPP results (Android).
- Effects: empty rows in all iLEAPP artifacts, inflated counts, searches and reports, and non-existent calls may appear.
- What to do: redo those cases and any reports made from them. When such a case is opened, RepertIA shows a warning; it does not change the case.
- iLEAPP source paths are now always cited with
/, and the acceptance test checks that no empty rows enter a case.
Tested: acceptance test 433/433 in Italian and in English from the assembled Mac package (77/77 on public images); 433/433 on Windows 11 with the final package (77/77 on public images). Not tested: the Linux package.
What's new in 2.20.1
- AI Act (Regulation (EU) 2024/1689): findings written by the agent are marked in
findings.jsonand in every report (Markdown, Word, PDF, portable) as «Generated by AI model (name) – to be checked» until the analyst presses «I confirm, verified» (operator and date recorded, also in the hash-chained log); the report says that every finding was verified only if they all are; Word and PDF metadata declare AI-generated text. A fixed label under every agent answer, «automatic OCR text» and «automatic transcription» labels, an explicit warning before using an LLM server outside the local network (recorded in the case; the report then says «external server indicated by the analyst»). New AI_ACT.en.md: intended purpose, excluded uses, Article 6(3) assessment, Article 50, note for adopting offices (not legal advice).
2.20.1 is the first published release of the 2.20 series (2.20.0 was not released separately); everything below is also new compared with 2.19.0.
What's new in 2.20 (compared with 2.19.0)
- Smartphones (iPhone and Android). The start page now offers 💽 Mass storage (as before) and 📱 Smartphone. A smartphone case is created from a full file system extraction: zip (Cellebrite FFS, GrayKey, others), tar, tar.gz (read from a decompressed derived copy with SHA-256) or folder. Files are read from the extraction without copying them; tree, timeline, searches, document text, metadata, hashes, previews, reports and portable report work as for disks.
- Chats: RepertIA's own readers for WhatsApp (iPhone and Android), iMessage/SMS and Android SMS/MMS, with names from the address books, messages still only in the
-walfile, attachments linked to the files and the reference to database, table and row. Chat view with bubbles and filters, ⭐ bookmarks and 📌 findings on single messages, also in the portable report. In the Artifacts, conversations are split by app and show both parties (this device and the other number or contact, short codes marked as such; groups with their participants), sent/received messages, attachments and last message, with 💬 Open chat. New AI agent tools for chats. - iLEAPP 2026.4.5 and ALEAPP 2026.4.4 (Alexis Brignoni and contributors, MIT licence) included: their artifacts go into the case, split in the tree by iLEAPP/ALEAPP category and by artifact with row counts; the details show «field: value» with dates in the chosen time zone; version and fingerprint are recorded.
- Chats of the other apps and Calls: chats that RepertIA does not read itself (Telegram, Discord, Instagram, Messenger, Google Messages, Snapchat, LINE, Viber, Kik, TikTok, X, Zoom, Wire, TextNow, Burner and others; Wickr metadata only) are derived from the iLEAPP/ALEAPP rows into Chat messages and the chat view; a new Calls view has one row per call with all its sources (duplicates across sources merged, differing values flagged). Mapping in
forense_mobile_leapp_mappa.json. - Chat view: bookmark, finding and Export chat (HTML + CSV with forensic header and SHA-256 in the hash-chained log) for the whole conversation; attachment preview over the chat with ← → arrows.
- Back / Forward with breadcrumbs across the program (also browser Back, Alt+←, Cmd+[) and in the portable report; resizable columns and a more readable Details column.
- Cited files: when a row names a file (Google Photos «File Path /storage/emulated/0/…», chat attachments, LNK and jump list targets, downloads, Recycle Bin, Prefetch, Amcache, plaso rows, paths quoted by the AI agent, iLEAPP/ALEAPP «media/…»), RepertIA finds it in the extraction or image — by path with a mapping table for phone, Windows and macOS paths (
forense_percorsi.json), by hash, or by name and size — joining folder and name fields of the same row into a full path; the details panel shows one 📎 cited file box per different file («given in the fields: Media, Directory + Filename») with the result in plain words — ✅ found with certainty,⚠️ probable, to be verified (with the list of candidates), ❌ not present — a «?» explaining the three levels, a 📁 folder link, copies with the same final path under Technical details, its preview and Show in the tree / Export buttons, separate from the source database, the table shows one thumbnail per row, the Word/PDF case report states result and method for every cited file in Bookmarks, and a missing file is stated as «file not present in the extraction». WhatsApp attachments are verified with their SHA-256 (file_hash); when the file is missing the thumbnail stored in the database is shown. - iOS keychain (optional): an iPhone keychain acquired separately (e.g. GrayKey) can be given in the new case form or in the case panel. RepertIA records its SHA-256 in the hash-chained log, does not copy it into the case and passes it to iLEAPP with
--keychain: decryption and reading are done by iLEAPP. The case states which keychain was used (supplied / found in the extraction / none). Secret values (passwords, keys, tokens) are hidden by default: «Show» reveals one at a time and is logged; they are left out of the portable report unless explicitly chosen and are never given to the AI agent. Chats decrypted by iLEAPP with the keychain (Signal, Session, SimpleX) appear in the chat view marked as such. - iOS sysdiagnose (optional, one or more): given in the new smartphone case form or in the case panel; RepertIA records its SHA-256 in the hash-chained log, does not copy it into the case and runs iLEAPP a second time on the archive; the rows go to the Sysdiagnose group of the artifacts, marked «from sysdiagnose », with the creation date and the device taken from the archive name.
- Smartphone reports list only the tools actually used in that case, with versions (iLEAPP/ALEAPP with fingerprint, chat readers, exiftool, pdftotext, 7-Zip and Tesseract if used, keychain and sysdiagnoses with SHA-256), and describe the method as reading of the file system extraction (no Sleuth Kit). Disk reports are unchanged.
- Later verification of the log: every report prints the number of entries and the final hash of
audit_log.jsonl; 🔗 Verify log (home page and case) ortools/verifica_registro.pyrecomputes the chain and reports the first altered line, missing lines, and — with the final hash from the report — lines removed at the end or a rewritten log; it also re-checks the SHA-256 of the exported files. The manual explains what this proves and what it does not. - WhatsApp in depth: every message has its type from the database value (unknown values shown as «[type N not handled]», unverified meanings flagged); delivery and read status of sent messages (✓ ✓✓ blue ✓✓ ▶) with recipient, date and source — the absence of «read» does not prove a message was not read, and on iPhone the read status of sent messages cannot be read (stated), while for messages received on iPhone the time this phone read them is shown; WhatsApp system notices («group created», «added», «left»…) are «notice generated by WhatsApp», never sent or received (on Android they appeared as sent: fixed), with the code and, on Android, the meaning from public sources with its level («agreed by 2 public sources» / «probable, 1 source»); on iPhone no public source explains the codes, so only stored values and facts from the database are shown.
- WhatsApp backups decrypted (Android,
.crypt14with the key found in the extraction; option or additional analysis): read with RepertIA's reader as «WhatsApp (decrypted backup)», messages missing from the current database marked «⚠ only in the backup»; only results with a verified AES-GCM tag, SHA-256 of backup, key and decrypted copy in the log. - Calls of all apps: own readers for WhatsApp, Skype and imo, plus Signal (when ALEAPP decrypts it), Google Voice, Teams, Facebook Messenger and TeleGuard from iLEAPP/ALEAPP (start computed where the recorded time is the end), merged without duplicates; the time of a call also found in interactionC is that of the system Call History.
- Reliability of the chats from iLEAPP/ALEAPP: direction corrected for LINE, imo, Life360 and Slack with rules derived from Josh Hickman's documented activities; ALEAPP's WhatsApp messages no longer added as a duplicate app; above 500,000 iLEAPP/ALEAPP rows chats, messages and calls are imported first and omitted tables are listed (before, on iOS 17 the chats of 23 apps were left out).
- Photos and videos ↔ chats: 🎞 Videos sub-item, Photos only / Videos only filters, 💬 From chats, an Origin box (chat, sender, date, database/table/row, SHA-256 check) with Open in the chat,
origine_chatCSV column, also in the portable report. Phone databases previewed with their-wal/-shmfiles; search in the Text tab; widenable filter box; large group participant lists collapsed; import notices in a resizable window. - ⚡ Fast search in the case results: the first tab of the search panel searches as you type in artifacts, iLEAPP/ALEAPP artifacts, calls, chats, conversations, contacts and mail (answers in milliseconds even with 500,000 rows); results grouped as in the tree and opened with a click; a phone number is found in any format (+1 (919) 928-2177 = 9199282177 = …@s.whatsapp.net); groups collapsed, opened by the analyst; contact entries open in the preview with their source database. Save as search keeps them. Index built once per case (
ricerca_veloce.sqlite, rebuilt when the results change). - Smoother large cases: a progress window appears at once when a case opens, until the Results tree, the counts and the Timeline chart are ready; the opening summary is cached (reopening a 830,000-file iPhone from ~14 s to under 1 s) and the first page of every section is prepared in the background (first click on a section from up to 4.9 s to under 0.2 s). Timeline chart in local time from ~40 s to 2-7 s on a 2.5-million-event iPhone (same numbers), with a waiting message while it loads. Video thumbnails in chat attachments, also for extension-less videos (e.g. Telegram).
- Portable report for large phones: timeline in files per day (table in 0.4 s even with 1 million events in a day), ⚡ Case results fast search, iLEAPP/ALEAPP rows in files per artifact loaded on demand (before, 618 MB loaded at start on a 500,000-row iPhone), start from ~19 s to 5 s on a 830,000-file iPhone. The creation dialog stays open until the end and has a Stop button (before, a click outside hid it while the extraction went on). It shows the space the report will really take on the disk (clusters, folders, previews, data) and does not start if it is not enough; if the disk fills up anyway it stops and removes the half-written folder (before, All files could fill the disk). On a Mac the hidden «._» files that macOS writes on exFAT/FAT disks are removed.
- Results tree: Filter the entries box at the top (e.g. «whatsapp», «biome»).
- Video thumbnails: when the program cannot make one (Quick Look cannot read the file, or on Windows/Linux), the tile shows a frame taken by the browser; thumbnails that failed with an earlier version are tried again. Thumbnails are no longer removed by the cache clean-up (they were remade every time a case with many videos was opened), they load in a queue (three at a time, visible tiles only: the page no longer freezes on pages with many videos) and a frame taken by the browser is saved as the thumbnail.
- Audio transcription with Whisper (whisper.cpp 1.9.5) on the computer, offline: at case creation or later; the analyst chooses which audio (chats, all, selected), model and language. Models are not included and never downloaded automatically: consent window with source, license, size and SHA-256 (or an already downloaded file with the listed fingerprint). Text in the search, the audio preview (with times), the chat view, Export chat and the reports, always marked as automatic and to be checked. A single audio can be transcribed from its preview; models can be removed from the window.
- Photos/Videos/Audio (formerly Photos and metadata): sub-items Photos, Videos and Audio, each with «From chats» per app; audio files (opus, m4a…) included, also in cases already prepared.
- Preparation progress: a progress box below the log and before Stop with overall progress (step N of M, time running) and the current step with its numbers and estimated time left, last signal from the program and a warning after 20 minutes without messages. The steps now come from the program itself, the same in Italian and English: before, all the steps could look finished right after the file listing while the shadow copies were still being searched (a 70 GB system disk reported as «stuck for two days»). Shadow copies much faster on system disks: the current copy is read once instead of looking up every file by path. Progress bar also for the download of the transcription model (MB, speed, time left).
- Model context full: instead of a raw «Error code: 500 … no user query found in messages» (e.g. Qwen on Ollama with 16k context), a clear message with the current context and how to raise it.
- Column filters: searching in the value box and pressing OK (or Enter) now keeps only the values found and ticked, as in Excel; before, «Select all found» + OK applied no filter (also in the portable report).
- Menus below the RepertIA name in the case view: Case, Report, Checks, Additional analyses (with status and Run/Redo) instead of the Actions and Additional analyses boxes of the side panel.
- FFmpeg (LGPL build,
ffmpegonly) now included in the Windows and Linux packages for video thumbnails; on Mac Quick Look is used. - Interface: column filter box always inside the window (13" laptops); resizable panes with memory and double-click reset (also in the portable report); horizontal dividers that can be dragged up and down, with double-click reset and ▾/▸ to collapse (Timeline chart and table, header and filters above the tables, chat view; Timeline of the portable report); compact top bar on small screens («✓ 8 tools» label that opens the full list); 🔎 Search button top right with a label for each recent search.
- Navigation fixed: after a search, Back and clicks in the tree could leave on screen the content of the previous section under new breadcrumbs — with «Search», «Bookmarks» or «Open tabs» closed in the tree every change of section stopped with a JavaScript error, and a late server response could overwrite the newer one. Now only the last request counts, the table shows «Loading…» at once, every click is a Back step even during slow loads, and the breadcrumbs always match what is shown (🔎 Search › Words: …). New
tools/prova_navigazione.pychecks this automatically in a browser (Playwright, not included in the packages). - Smartphone code is in separate modules loaded only for smartphone cases: disk cases do not change (same databases, row by row, on the acceptance-test cases).
Tested (2.20.1): acceptance test 427/427 in Italian and in English (77/77 on public images or published values), run from the assembled Mac package (178 disk + 249 smartphone checks, 5 of them on the AI Act, 17 of them on the portable report, 16 of them on WhatsApp and photos/videos — fake WhatsApp backup with an invented key, system notices, reading on iPhone, Photos only/Videos only, origin from the chats —, 17 on the fast search — message found from part of its text, contact number found in another format, contact entry preview, no secret value in the index —, 33 of them on the interface buttons — Favorites, Finding, Source, Show in the tree, tree folders —, 5 on cited files, attachments and chat summary, 44 in two tests with fake keychains, 45 on the later verification of the log (modified line, line removed in the middle, lines removed at the end without and with the final hash, modified exported file), 36 on log and tools in the report, 11 on sysdiagnoses built from the public excerpts of the iLEAPP tests (333 processes of a real ps.txt counted without iLEAPP = 333 rows) and 20 on cited files in three levels (fake extraction with IMG_0059.PNG in the locations of Hickman's iOS case → a single file found with certainty; two files with the same name in different folders and only the name in the row → probable with two candidates); the expected chat values are the results published by the iLEAPP and ALEAPP projects); the previous build of these packages (192 checks) also passed on Windows; cited files on Hickman's Pixel 3: Google Photos – Local Media 108 of 108 found by path; full public images by Josh Hickman (iOS 13.4.1, Android 10): message times match the author's documentation, and on iOS the chat view matches the iLEAPP «SMS» artifact in all 17 conversations; navigation test tools/prova_navigazione.py (search from the top button, results, tree, Back/Forward, breadcrumbs) on a disk case and two smartphone cases at 1280×800: 66/66 in Chromium (Italian and English) and in WebKit, Safari's engine. Josh Hickman's complete public images (iOS 13.4.1, iOS 17.3, Android 10, Android 14) redone and compared by content with the previous build: no message, attachment, conversation or call missing; chats from iLEAPP/ALEAPP compared with the documented activities: right direction for all the messages found (iOS 17.3 766, Android 14 272; the 8 differing from the documentation are 7 errors in the documentation, which marks the same message as sent by both phones, and 1 wrong match of the comparison script); WhatsApp, Skype, imo, Signal, Messenger and TeleGuard calls equal to the documentation; the Android 14 msgstore.db.crypt14 backup decrypted (197 messages). Not tested: a real image with many shadow copies (the speed-up is estimated, not measured), crypt12/crypt15 WhatsApp backups, WhatsApp notice codes on a phone with documented group actions, real Safari (only its WebKit engine), the rebuilt Windows packages and the Linux package (built on the Mac: please run the acceptance test), complete sysdiagnoses of a real case (only public excerpts), Windows paths of cited files on a real disk image, real GrayKey or Cellebrite keychains (only fake ones were used) and the real decryption of Signal, Session or SimpleX, real GrayKey/Cellebrite extractions with their metadata. UFDR reports will come in a later version.
Documentation in English: README, manual, validation, change log.
After installing, run the acceptance test and keep its report; verify the downloads with shasum -a 256 -c SHA256SUMS.txt.
RepertIA funziona completamente SENZA intelligenza artificiale. Il modello IA locale non è incluso nei pacchetti: è una scelta facoltativa dell'utente (LM Studio, llama-server od Ollama), che si può usare o meno. Senza modello tutte le analisi, le ricerche e i report funzionano lo stesso.
Scarica
| Sistema | File |
|---|---|
| Windows (installazione) | RepertIA-2.21.0-Setup.exe |
| Windows (portatile) | RepertIA-2.21.0-Windows.zip |
| Mac (Apple Silicon) | RepertIA-2.21.0-Mac.zip |
| Linux x86_64 (sperimentale) | RepertIA-2.21.0-Linux.tar.gz |
| Collaudo | RepertIA-collaudo.zip |
| Impronte SHA-256 | SHA256SUMS.txt |
| Guida illustrata (PDF) | Italiano · English |
Sorgenti dei componenti di terze parti per i dischi (GPL/LGPL, invariati dalla 2.19.0): RepertIA-2.19.0-sorgenti-terze-parti.tar e poppler-26.09.0.tar.xz, tra i file qui sotto; FFmpeg (LGPL, nuovo nella 2.20): ffmpeg-n9.0.2-36-g6882969ce9-sorgenti.tar.gz, il sorgente esatto della build inclusa. iLEAPP e ALEAPP hanno licenza MIT; le loro due librerie LGPL (pytypedstream, simplekml) sono in puro Python e il sorgente è nel pacchetto.
Novità della 2.21.0
- Preferiti. La scheda di una chat ha Apri chat. Esporta file salva la chat intera (HTML, CSV, allegati, SHA-256 nel manifest), con periodo facoltativo; il report contiene il testo della chat (primi 2.000 messaggi, completa nel report portatile).
- Cronologia dei preferiti. Tutti i preferiti in ordine di data dell'evento, con l'indicazione di a che cosa si riferisce ogni data; anche nel report e in CSV.
- Collega copia forense (menu Caso). Un caso spostato su un altro computer ritrova la sua copia: è accettata solo con lo stesso SHA-256 e l'operazione resta nel registro.
- Esporta log diagnostici. Nuovo log tecnico senza dati dei casi, con anteprima obbligatoria, anche nella pagina iniziale.
- iLEAPP/ALEAPP. Limite da 500.000 a 2.000.000 di righe e, oltre il limite, le tabelle piccole prima di quelle enormi: su un iPhone iOS 17 di prova 20 dei 21 milioni di righe sono FSEvents.
Prove: collaudo 448/448 in italiano e in inglese dal pacchetto Mac, 77/77 su immagini pubbliche; navigazione 66/66 (Chromium). Collaudo su Windows con il pacchetto definitivo superato (dato riferito dall'autore). Non provato: Linux con questa versione; il nuovo limite su un caso iOS 17 completo (tempi e dimensione del database); WebKit. Componenti di terze parti e guide PDF sono quelli della 2.20.3.
Novità della 2.20.3
Due correzioni per WhatsApp su Android.
msgstore.dbnon letto. Un difetto fermava la lettura dell'intero database quando dopo una chiamata nella chat c'era un allegato (errore'int' object has no attribute 'find'). Riguarda Mac, Windows e Linux dalla 2.20.0. Se negli avvisi di un caso comparemsgstore.db: non letto, rileggilo con Analisi aggiuntive → Chat e rubriche.- Backup crypt15. Ora si decifrano con
encrypted_backup.key, se è nell'estrazione, o con la chiave di 64 cifre indicata dall'analista, che resta solo in memoria. I manuali precedenti dicevano che la chiave crypt15 non è nel telefono: era sbagliato. - Le guide illustrate, in italiano e in inglese, sono ora allegate qui.
Provato: collaudo 437/437 in italiano e in inglese dal pacchetto Mac assemblato (77/77 su immagini pubbliche); 437/437 su Windows 11 con le correzioni, prima dell'assemblaggio dei pacchetti; un backup crypt15 reale pubblico di wa-crypt-tools. Sull'immagine pubblica Android 14 il risultato è identico alla 2.20.2, riga per riga: quel telefono non presenta il difetto, che è stato riprodotto su dati costruiti. Non provato: un crypt15 con messaggi reali, il pacchetto Windows definitivo, il pacchetto Linux.
Novità della 2.20.2
Correzione per i casi smartphone su Windows. iLEAPP su Windows chiude le righe dei suoi file TSV con un ritorno a capo doppio e RepertIA importava una riga vuota dopo ogni riga vera: una tabella da N righe diventava 2N+1.
- Chi è interessato: solo i casi smartphone preparati su Windows con la 2.20.1. Mac e Linux non sono interessati, e neppure i risultati di ALEAPP (Android).
- Effetti: righe vuote in tutti gli artefatti di iLEAPP, conteggi, ricerche e report gonfiati, e possono comparire chiamate inesistenti.
- Cosa fare: rifare quei casi e gli eventuali report. All'apertura di uno di questi casi RepertIA mostra un avviso e non lo modifica.
- I percorsi delle fonti di iLEAPP si citano sempre con
/e il collaudo controlla che non entrino righe vuote.
Provato: collaudo 433/433 in italiano e in inglese dal pacchetto Mac assemblato (77/77 su immagini pubbliche); 433/433 su Windows 11 con il pacchetto definitivo (77/77 su immagini pubbliche). Non provato: il pacchetto Linux.
Novità della 2.20.1
- AI Act (Reg. UE 2024/1689): i reperti scritti dall'agente sono indicati in
findings.jsone in ogni report (Markdown, Word, PDF, portatile) come «Generato da modello IA (nome) – da verificare» finché l'analista non preme «Confermo, verificato» (operatore e data registrati, anche nel registro a catena); il report dice che ogni reperto è stato verificato solo se lo sono tutti; i metadati di Word e PDF dichiarano il testo generato da IA. Etichetta fissa sotto ogni risposta dell'agente, etichette «testo OCR automatico» e «trascrizione automatica», avviso esplicito prima di usare un server LLM fuori dalla rete locale (registrato nel caso; il report scrive allora «server esterno indicato dall'analista»). Nuovo AI_ACT.md: scopo previsto, usi esclusi, valutazione ai sensi dell'art. 6, par. 3, art. 50, nota per gli uffici (non è un parere legale).
La 2.20.1 è la prima release pubblicata della serie 2.20 (la 2.20.0 non è stata pubblicata a parte): tutto quello che segue è nuovo anche rispetto alla 2.19.0.
Novità della 2.20 (rispetto alla 2.19.0)
- Smartphone (iPhone e Android). La pagina iniziale propone 💽 Memorie di massa (come prima) e 📱 Smartphone. Un caso smartphone nasce da un'estrazione del file system completo: zip (Cellebrite FFS, GrayKey, altri), tar, tar.gz (letto da una copia derivata decompressa con SHA-256) o cartella. I file si leggono dall'estrazione senza copiarli; albero, timeline, ricerche, testo dei documenti, metadati, hash, anteprime, report e report portatile funzionano come per i dischi.
- Chat: lettori propri di RepertIA per WhatsApp (iPhone e Android), iMessage/SMS e SMS/MMS Android, con i nomi delle rubriche, i messaggi ancora solo nel file
-wal, gli allegati collegati ai file e il riferimento a database, tabella e riga. Vista chat a fumetti con filtri, ⭐ preferiti e 📌 reperti sul singolo messaggio, anche nel report portatile. Negli Artefatti le conversazioni sono divise per app e mostrano i due interlocutori (questo dispositivo e l'altro numero o contatto, numeri brevi indicati come tali; gruppi con i partecipanti), messaggi inviati e ricevuti, allegati e ultimo messaggio, con 💬 Apri chat. Nuovi strumenti dell'agente IA per le chat. - iLEAPP 2026.4.5 e ALEAPP 2026.4.4 (Alexis Brignoni e collaboratori, licenza MIT) inclusi: i loro artefatti entrano nel caso, divisi nell'albero per categoria di iLEAPP/ALEAPP e per artefatto con il numero di righe; i dettagli mostrano «campo: valore» con le date nel fuso scelto; versione e impronta sono registrate.
- Chat delle altre app e Chiamate: le chat che RepertIA non legge da sé (Telegram, Discord, Instagram, Messenger, Google Messages, Snapchat, LINE, Viber, Kik, TikTok, X, Zoom, Wire, TextNow, Burner e altre; Wickr solo metadati) sono ricavate dalle righe di iLEAPP/ALEAPP in Messaggi delle chat e nella vista chat; la nuova vista Chiamate ha una riga per chiamata con tutte le fonti (doppioni tra fonti uniti, valori discordanti segnalati). Corrispondenze in
forense_mobile_leapp_mappa.json. - Vista chat: preferiti, reperto ed Esporta chat (HTML + CSV con intestazione forense e SHA-256 nel registro a catena) per l'intera conversazione; anteprima degli allegati sopra la chat con le frecce ← →.
- Indietro / Avanti con briciole in tutto il programma (anche Indietro del browser, Alt+←, Cmd+[) e nel report portatile; colonne ridimensionabili e colonna Dettagli più leggibile.
- File citati: quando una riga nomina un file («File Path /storage/emulated/0/…» di Google Photos, allegati delle chat, destinazioni di LNK e jump list, download, Cestino, Prefetch, Amcache, righe di plaso, percorsi citati dall'agente IA, «media/…» di iLEAPP/ALEAPP), RepertIA lo ritrova nell'estrazione o nella copia — per percorso con una tabella di corrispondenza per i percorsi del telefono, di Windows e di macOS (
forense_percorsi.json), per hash, o per nome e dimensione — unendo i campi di cartella e nome della stessa riga in un percorso completo; il pannello dei dettagli mostra un riquadro 📎 file citato per ogni file diverso («indicato nei campi: Media, Directory + Filename») con l'esito in parole semplici — ✅ trovato con certezza,⚠️ probabile, da verificare (con l'elenco dei candidati), ❌ non presente —, un «?» che spiega i tre livelli, il collegamento 📁 cartella, le copie con lo stesso percorso finale nei Dettagli tecnici, l'anteprima e i pulsanti Mostra nell'albero / Esporta, distinto dal database della fonte, la tabella mostra una miniatura per riga, il report del caso Word/PDF scrive esito e metodo di ogni file citato nei Preferiti e un file assente è indicato come «file non presente nell'estrazione». Gli allegati WhatsApp sono verificati con lo SHA-256 (file_hash); se il file manca si vede la miniatura salvata nel database. - Portachiavi di iOS (facoltativo): il portachiavi di un iPhone acquisito a parte (es. GrayKey) si indica nel modulo del nuovo caso o nel pannello del caso. RepertIA ne registra lo SHA-256 nel registro a catena, non lo copia nel caso e lo passa a iLEAPP con
--keychain: la decifratura e la lettura sono di iLEAPP. Il caso dichiara quale portachiavi è stato usato (fornito / trovato nell'estrazione / nessuno). I valori segreti (password, chiavi, token) sono nascosti per impostazione predefinita: «Mostra» ne rivela uno alla volta ed è registrato; sono esclusi dal report portatile salvo scelta esplicita e non arrivano mai all'agente IA. Le chat che iLEAPP decifra con il portachiavi (Signal, Session, SimpleX) compaiono nella vista chat con questa indicazione. - Sysdiagnose di iOS (facoltativi, anche più di uno): si indicano nel modulo del nuovo caso smartphone o nel pannello del caso; RepertIA ne registra lo SHA-256 nel registro a catena, non li copia nel caso e fa un secondo giro di iLEAPP sull'archivio; le righe vanno nel gruppo Sysdiagnose degli artefatti, marcate «da sysdiagnose », con data di creazione e dispositivo ricavati dal nome dell'archivio.
- I report degli smartphone elencano solo gli strumenti usati in quel caso, con le versioni (iLEAPP/ALEAPP con l'impronta, lettori di chat, exiftool, pdftotext, 7-Zip e Tesseract se usati, portachiavi e sysdiagnose con lo SHA-256), e descrivono il metodo come lettura dell'estrazione del file system (niente Sleuth Kit). I report dei dischi non cambiano.
- Verifica del registro a posteriori: ogni report stampa numero di voci e hash finale di
audit_log.jsonl; 🔗 Verifica registro (pagina iniziale e caso) otools/verifica_registro.pyricalcola la catena e indica la prima riga alterata, le righe mancanti e — con l'hash finale del report — righe tolte in fondo o un registro riscritto; ricontrolla anche gli SHA-256 dei file esportati. Il manuale spiega cosa dimostra e cosa no. - WhatsApp in profondità: ogni messaggio ha il suo tipo dal valore del database (i valori sconosciuti come «[tipo N non gestito]», i significati non verificati segnalati); stato di consegna e lettura dei messaggi inviati (✓ ✓✓ ✓✓ blu ▶) con destinatario, data e fonte — l'assenza di «letto» non prova che il messaggio non sia stato letto, e su iPhone lo stato di lettura dei messaggi inviati non è leggibile (dichiarato), mentre per i messaggi ricevuti su iPhone si vede quando questo telefono li ha letti; gli avvisi di WhatsApp («gruppo creato», «aggiunto», «uscito»…) sono «avviso generato da WhatsApp», mai inviati né ricevuti (su Android risultavano inviati: corretto), con il codice e, su Android, il significato dalle fonti pubbliche con il suo livello («concorde in 2 fonti pubbliche» / «probabile, 1 fonte»); su iPhone nessuna fonte pubblica spiega i codici e si mostrano solo valori e fatti dal database.
- Backup di WhatsApp decifrati (Android,
.crypt14con la chiave trovata nell'estrazione; opzione o analisi aggiuntiva): letti con il lettore di RepertIA come «WhatsApp (backup decifrato)», con «⚠ solo nel backup» sui messaggi assenti dal database attuale; solo risultati con il tag AES-GCM verificato, SHA-256 di backup, chiave e copia decifrata nel registro. - Chiamate di tutte le app: lettori propri per WhatsApp, Skype e imo, più Signal (se ALEAPP lo decifra), Google Voice, Teams, Facebook Messenger e TeleGuard da iLEAPP/ALEAPP (inizio calcolato dove l'orario scritto è la fine), unite senza doppioni; l'orario di una chiamata trovata anche in interactionC è quello del registro di sistema Call History.
- Affidabilità delle chat da iLEAPP/ALEAPP: verso corretto per LINE, imo, Life360 e Slack con regole ricavate dalle attività documentate da Josh Hickman; i messaggi WhatsApp di ALEAPP non si aggiungono più come app doppia; oltre 500.000 righe di iLEAPP/ALEAPP si importano prima chat, messaggi e chiamate e le tabelle omesse sono elencate (prima su iOS 17 restavano fuori le chat di 23 app).
- Foto e video ↔ chat: sottovoce 🎞 Video, filtri Solo foto / Solo video, 💬 Dalle chat, riquadro Origine (chat, mittente, data, database/tabella/riga, verifica SHA-256) con Apri nella chat, colonna
origine_chatnel CSV, anche nel report portatile. Anteprima dei database dei telefoni con i file-wal/-shm; ricerca nella scheda Testo; riquadro dei filtri allargabile; partecipanti dei gruppi grandi in un elenco a scomparsa; avvisi dell'importazione in una finestra ridimensionabile. - ⚡ Ricerca veloce nei risultati del caso: la prima scheda del pannello di ricerca cerca mentre scrivi in artefatti, artefatti di iLEAPP/ALEAPP, chiamate, chat, conversazioni, rubriche e posta (risposte in millisecondi anche con 500.000 righe); risultati raggruppati come nell'albero e apribili con un clic; un numero di telefono si trova in qualunque formato (+1 (919) 928-2177 = 9199282177 = …@s.whatsapp.net); gruppi chiusi, li apre l'analista; le voci della rubrica si aprono nell'anteprima con il loro database di origine. Salva come ricerca li conserva. Indice costruito una volta per caso (
ricerca_veloce.sqlite, rifatto quando cambiano i risultati). - Casi grandi più fluidi: all'apertura di un caso una finestra di avanzamento compare subito, finché albero dei Risultati, conteggi e grafico della Timeline non sono pronti; il riepilogo di apertura resta in cache (riapertura di un iPhone con 830.000 file da ~14 s a meno di 1 s) e la prima pagina di ogni sezione si prepara in sottofondo (primo clic su una sezione da fino a 4,9 s a meno di 0,2 s). Grafico della Timeline nell'ora locale da ~40 s a 2-7 s su un iPhone con 2,5 milioni di eventi (stessi numeri), con un messaggio di attesa mentre si prepara. Miniature dei video negli allegati delle chat, anche per i video senza estensione (es. Telegram).
- Report portatile per telefoni grandi: timeline in file per giorno (tabella in 0,4 s anche con 1 milione di eventi in un giorno), ricerca veloce ⚡ Risultati del caso, righe di iLEAPP/ALEAPP in file per artefatto caricati a richiesta (prima 618 MB caricati all'avvio su un iPhone con 500.000 righe), avvio da ~19 s a 5 s su un iPhone con 830.000 file. La finestra di creazione resta aperta fino alla fine e ha il pulsante Interrompi (prima un clic fuori la nascondeva mentre l'estrazione continuava). Mostra lo spazio che il report occuperà davvero sul disco (cluster, cartelle, anteprime, dati) e non parte se non basta; se il disco si riempie comunque si ferma e toglie la cartella lasciata a metà (prima Tutti i file poteva riempire il disco). Sul Mac si tolgono i file nascosti «._» che macOS scrive sui dischi exFAT/FAT.
- Albero dei Risultati: campo Filtra le voci in cima (es. «whatsapp», «biome»).
- Miniature dei video: quando il programma non riesce a farle (Quick Look non legge il file, oppure su Windows/Linux), la casella mostra un fotogramma ricavato dal browser; le miniature non riuscite con una versione precedente si riprovano. Le miniature non vengono più tolte dalla pulizia della cache (si rifacevano a ogni apertura di un caso con molti video), si caricano in coda (tre per volta, solo le caselle visibili: la pagina non si blocca più sulle pagine con molti video) e il fotogramma ricavato dal browser viene salvato come miniatura.
- Trascrizione degli audio con Whisper (whisper.cpp 1.9.5) sul computer, senza rete: alla creazione del caso o dopo; l'analista sceglie quali audio (delle chat, tutti, selezionati), modello e lingua. I modelli non sono inclusi e non si scaricano mai da soli: finestra di consenso con provenienza, licenza, dimensione e SHA-256 (oppure un file già scaricato con l'impronta dell'elenco). Testo nella ricerca, nell'anteprima dell'audio (con gli orari), nella vista chat, in Esporta chat e nei report, sempre indicato come automatico e da verificare. Un singolo audio si trascrive dalla sua anteprima; i modelli si possono rimuovere dalla finestra.
- Foto/Video/Audio (prima Foto e metadati): sottovoci Foto, Video e Audio, ciascuna con «Dalle chat» per app; compresi gli audio (opus, m4a…), anche nei casi già preparati.
- Avanzamento della preparazione: riquadro sotto il registro e prima di Interrompi con l'avanzamento complessivo (passo N di M, da quanto è in corso) e il passo in corso con i suoi numeri e il tempo stimato che manca, ultimo segnale dal programma e un avviso dopo 20 minuti senza messaggi. I passi ora arrivano dal programma stesso, uguali in italiano e in inglese: prima potevano risultare tutti finiti già dopo l'elenco dei file mentre si stavano ancora esaminando le copie shadow (un disco di sistema da 70 GB segnalato «fermo da due giorni»). Copie shadow molto più rapide sui dischi di sistema: la copia attuale si legge una volta sola invece di cercare ogni file per percorso. Barra anche per il download del modello della trascrizione (MB, velocità, tempo che manca).
- Contesto del modello pieno: al posto di un «Error code: 500 … no user query found in messages» grezzo (per esempio Qwen su Ollama con 16k di contesto), un messaggio chiaro con il contesto attuale e come alzarlo.
- Filtri delle colonne: cercando nel riquadro dei valori e premendo OK (o Invio) restano solo i valori trovati e spuntati, come in Excel; prima «Seleziona tutti i trovati» + OK non applicava alcun filtro (anche nel report portatile).
- Menu sotto la scritta RepertIA nella vista del caso: Caso, Report, Verifiche, Analisi aggiuntive (con stato ed Esegui/Rifai) al posto dei riquadri Azioni e Analisi aggiuntive del pannello laterale.
- FFmpeg (build LGPL, solo
ffmpeg) ora incluso nei pacchetti Windows e Linux per le miniature dei video; sul Mac si usa Quick Look. - Interfaccia: riquadro dei filtri delle colonne sempre dentro la finestra (portatili da 13"); riquadri ridimensionabili con memoria e doppio clic per tornare alla larghezza predefinita (anche nel report portatile); divisori orizzontali trascinabili in su e in giù, con doppio clic per l'altezza predefinita e ▾/▸ per comprimere (grafico e tabella della Timeline, intestazione e filtri sopra le tabelle, vista chat; Timeline del report portatile); barra in alto compatta sugli schermi piccoli (etichetta «✓ 8 strumenti» che apre l'elenco completo); pulsante 🔎 Ricerca in alto a destra con un'etichetta per ogni ricerca recente.
- Navigazione corretta: dopo una ricerca, Indietro e i clic nell'albero potevano lasciare a video il contenuto della sezione di prima sotto briciole nuove — con «Ricerca», «Preferiti» o «Schede aperte» chiusi nell'albero ogni cambio di sezione si fermava con un errore JavaScript, e una risposta lenta del server poteva sovrascrivere quella più recente. Ora vale solo l'ultima richiesta, la tabella mostra subito «Carico…», ogni clic è un passo di Indietro anche durante i caricamenti lenti e le briciole corrispondono sempre a quello che si vede (🔎 Ricerca › Parole: …). Il nuovo
tools/prova_navigazione.pylo controlla da solo in un browser (Playwright, non incluso nei pacchetti). - Il codice per gli smartphone è in moduli separati, caricati solo per i casi smartphone: i casi dei dischi non cambiano (stessi database, riga per riga, sui casi del collaudo).
Prova (2.20.1): collaudo 427/427 in italiano e in inglese (77/77 su immagini pubbliche o valori pubblicati), eseguito dal pacchetto Mac assemblato (178 controlli dei dischi + 249 degli smartphone, di cui 5 sull'AI Act, di cui 17 sul report portatile, di cui 16 su WhatsApp e foto/video — backup WhatsApp finto con chiave inventata, avvisi di sistema, lettura su iPhone, Solo foto/Solo video, origine dalle chat —, 17 sulla ricerca veloce — messaggio ritrovato da una parte del testo, numero della rubrica ritrovato in un altro formato, anteprima della voce della rubrica, nessun valore segreto nell'indice —, di cui 33 sui pulsanti dell'interfaccia — Preferiti, Reperto, Fonte, Mostra nell'albero, cartelle dell'albero —, 5 su file citati, allegati e riepilogo delle chat, 44 in due prove con portachiavi finti, 45 sulla verifica del registro a posteriori (riga modificata, riga tolta in mezzo, righe tolte alla fine senza e con l'hash finale, file esportato modificato), 36 su registro e strumenti nel report, 11 sui sysdiagnose costruiti con i ritagli pubblici dei test di iLEAPP (333 processi di un ps.txt reale contati senza iLEAPP = 333 righe) e 20 sui file citati in tre livelli (estrazione finta con IMG_0059.PNG nelle posizioni del caso iOS di Hickman → un solo file trovato con certezza; due file con lo stesso nome in cartelle diverse e il solo nome nella riga → probabile con due candidati); i valori attesi delle chat sono i risultati pubblicati dai progetti iLEAPP e ALEAPP); la build precedente di questi pacchetti (192 controlli) è stata superata anche su Windows; file citati sul Pixel 3 di Hickman: Google Photos – Local Media 108 su 108 trovati per percorso; immagini pubbliche complete di Josh Hickman (iOS 13.4.1, Android 10): gli orari dei messaggi coincidono con la documentazione dell'autore e, su iOS, la vista chat coincide con l'artefatto «SMS» di iLEAPP in tutte le 17 conversazioni; prova della navigazione tools/prova_navigazione.py (ricerca dal pulsante in alto, risultati, albero, Indietro/Avanti, briciole) su un caso disco e due smartphone a 1280×800: 66/66 in Chromium (italiano e inglese) e in WebKit, il motore di Safari. Immagini pubbliche complete di Josh Hickman (iOS 13.4.1, iOS 17.3, Android 10, Android 14) rifatte e confrontate per contenuto con la build precedente: nessun messaggio, allegato, conversazione o chiamata mancante; chat da iLEAPP/ALEAPP confrontate con le attività documentate: verso giusto per tutti i messaggi ritrovati (iOS 17.3 766, Android 14 272; gli 8 diversi dalla documentazione sono 7 errori della documentazione, che segna lo stesso messaggio come inviato da entrambi i telefoni, e 1 abbinamento sbagliato dello script di confronto); chiamate WhatsApp, Skype, imo, Signal, Messenger e TeleGuard uguali alla documentazione; backup msgstore.db.crypt14 dell'Android 14 decifrato (197 messaggi). Non provato: una copia reale con molte copie shadow (la maggiore velocità è stimata, non misurata), backup WhatsApp crypt12/crypt15, codici degli avvisi WhatsApp su un telefono con azioni di gruppo documentate, Safari vero (solo il suo motore WebKit), i pacchetti Windows ricostruiti e il pacchetto Linux (costruiti sul Mac: eseguire il collaudo), sysdiagnose completi di un caso reale (solo ritagli pubblici), i percorsi di Windows dei file citati su una copia reale, portachiavi GrayKey o Cellebrite reali (usati solo portachiavi finti) e la decifratura reale di Signal, Session o SimpleX, estrazioni GrayKey/Cellebrite reali con i loro metadati. I report UFDR arriveranno in una versione successiva.
Documentazione: README, manuale, validazione, modifiche tra versioni.
Dopo l'installazione eseguire il collaudo e conservarne il rapporto; verificare i download con shasum -a 256 -c SHA256SUMS.txt.