
Toolkit forense sperimentale .NET/WPF per l'autenticazione iCloud, il download dei backup CloudKit/MMCS e il recupero Octagon/PCS (ADP, Recovery Key, Lockdown Mode). Software di ricerca di Forensis-Lab — altamente sperimentale; le API private di Apple possono cambiare da un giorno all'altro.
Fase sperimentale pubblica — un'app WPF (.NET 10) per l'accesso a iCloud, la visualizzazione dei backup dei dispositivi e il download tramite CloudKit/MMCS.

Software di ricerca / laboratorio. Non è un prodotto finito: API Apple non documentate, rischio di ban dell'account, nessuna garanzia. Usalo solo con il tuo Apple ID e a tuo rischio.
Mi chiamo Giordano Sconti. Collaboro con il laboratorio forense Forensis-Lab e lavoro come ricercatore software oltre che come consulente tecnico (Consulente Tecnico).
Questo software è rilasciato con licenza MIT, ma appartiene al laboratorio forense Forensis-Lab.
Questo progetto va considerato altamente sperimentale, perché le API interne di Apple possono cambiare da un giorno all'altro.
Rendo disponibile questo progetto perché è prezioso per il lavoro forense quando dobbiamo recuperare—in casi estremi—backup e dati CloudKit che non sono accessibili se non tramite i dispositivi stessi.
A differenza degli strumenti commerciali che ho usato, sono riuscito a ottenere un download stabile e completo dei miei backup personali sia con ADP abilitato che disabilitato (naturalmente conoscendo il PIN Octagon del dispositivo o la Recovery Key quando attivata).
Funziona anche quando sono abilitate protezioni come la Modalità Blocco e iCloud.com è disattivato.
Questo progetto ha richiesto circa sette mesi di ricerca. Senza i modelli di coding-agent di Cursor ci sarebbe voluto molto più tempo: l'unico tempo che avevo era durante l'orario di lavoro quando possibile, o a tarda notte. Ho cercato di mantenere un'organizzazione del codice modulare—spero di esserci riuscito.
Se vuoi offrirmi un caffè, preferirei che ringraziassi Forensis-Lab o offrissi qualche altra forma di riconoscimento.
Chiunque voglia provare il software, suggerire miglioramenti o aiutare a completare le funzionalità rimanenti è il benvenuto.
Puoi usare modelli di coding-agent a pagamento (evita quelli gratuiti—spesso sono inaffidabili per la correttezza del codice). Ciò che conta è che tu riveda sempre il codice generato e che non ci sia appropriazione non autorizzata di codice di terze parti senza consenso. Le pull request saranno revisionate con molta attenzione.
Contatto: [email protected]
Ogni riga di codice in questo progetto appartiene a Forensis-Lab, sotto mia diretta concessione. Qualsiasi uso o modifica deve rimanere attribuibile a Forensis-Lab.
Se vuoi provare il software prima di eseguire il tuo stack anisette, contattami privatamente per richiedere l'accesso al mio server Anisette.
https://giordanosconti.github.io/iCloudKitExtractor/

Lo sblocco tramite Recovery Key utilizza un endpoint Octagon che può estrarre l'intero insieme di TLKShares cifrati. Da quelle share è anche possibile recuperare quelle associate ai peer della Recovery Key (SHA-384 della chiave pubblica che firma la Recovery Key). Ciò consente di verificare se una determinata Recovery Key è tra quelle presenti e, in tal caso, di recuperare il Manatee/PCS KeySet per le zone CloudKit—inclusi i backup protetti da ADP e il Portachiavi.
src/iCloudKitExtractorsrc/PhotosViewer (copiato in viewer-payload durante le build di IKE)AnisetteServer (+ progetti bridge opzionali) per OTP / ADIdocs/dotnet build src/iCloudKitExtractor/iCloudKitExtractor.csproj -c Release
dotnet run --project src/iCloudKitExtractor/iCloudKitExtractor.csproj -c Release
Un sito del progetto si trova sotto docs/ (index.html + site.css).
main su GitHub.main / cartella: /docs.https://giordanosconti.github.io/iCloudKitExtractor/.Percorso preferito per un'identità iPhone/akd coerente: l'OTP viene generato sul dispositivo tramite Frida → AuthKit/akd, poi servito da AnisetteServer.
pip install frida-tools)python (oppure imposta FRIDA_ANISETTE_PYTHON)fetch_anisette.py (script di attach Frida). Imposta il suo percorso con FRIDA_ANISETTE_FETCH_PYPassaggi per l'installazione del jailbreak: vedi Preparing a jailbroken iPhone qui sotto (dettagli da definire).
| Variabile | Richiesta | Predefinito | Significato |
|---|---|---|---|
ANISETTE_SERVER_BACKEND | sì | coreadi | Deve essere frida (alias: iphone-frida, jb-frida) |
ANISETTE_SERVER_URL / ANISETTE_SERVER_URLS | no | http://127.0.0.1:6969 | URL su cui AnisetteServer è in ascolto |
ANISETTE_SERVER_PORT | no | 6969 | Porta se gli URL non sono impostati |
ICLOUD_AUTH_MODE | consigliata | iphone (tramite config) | Usa iphone per l'SRP completo di AuthKit iPhone |
FRIDA_ANISETTE_HOST | no | 127.0.0.1:27042 | host:porta di frida-server (USB spesso tramite iproxy 27042 27042) |
FRIDA_ANISETTE_PROCESS | no | akd | Processo a cui collegarsi |
FRIDA_ANISETTE_FETCH_PY | sì* | percorso euristico | Percorso assoluto di fetch_anisette.py |
FRIDA_ANISETTE_PYTHON | no | python | Eseguibile Python |
FRIDA_ANISETTE_LITE | no | 1 / true | Modalità di attach lite |
FRIDA_ANISETTE_TIMEOUT | no | 60 | Secondi prima di interrompere una generazione |
*Senza FRIDA_ANISETTE_FETCH_PY, l'app cerca solo alcuni percorsi legacy adiacenti; imposta esplicitamente la variabile d'ambiente.
File di configurazione opzionale dell'app: %AppData%\iCloudKitExtractor\anisette.json (authMode, serverUrl). Le variabili d'ambiente hanno precedenza sul file.
$env:ANISETTE_SERVER_BACKEND = "frida"
$env:ANISETTE_SERVER_PORT = "6971"
$env:FRIDA_ANISETTE_HOST = "127.0.0.1:27042"
$env:FRIDA_ANISETTE_PROCESS = "akd"
$env:FRIDA_ANISETTE_FETCH_PY = "C:\path\to\fetch_anisette.py"
$env:FRIDA_ANISETTE_PYTHON = "python"
$env:FRIDA_ANISETTE_LITE = "1"
$env:FRIDA_ANISETTE_TIMEOUT = "60"
dotnet run --project src/AnisetteServer/AnisetteServer.csproj -c Release -- --backend frida --port 6971
CLI --backend / --port sovrascrivono l'ambiente.
Smoke test:
curl http://127.0.0.1:6971/health
curl http://127.0.0.1:6971/
Attende JSON con dati macchina (X-Apple-I-MD-M, X-MMe-Client-Info contenente com.apple.akd).