
Experimentelles .NET/WPF-Forensik-Toolkit für iCloud-Authentifizierung, CloudKit/MMCS-Backup-Download und Octagon/PCS-Wiederherstellung (ADP, Recovery Key, Lockdown Mode). Forschungssoftware von Forensis-Lab — hochgradig experimentell; Apples private APIs können sich über Nacht ändern.
Öffentliche experimentelle Phase — eine WPF-App (.NET 10) für die iCloud-Anmeldung, die Auflistung von Geräte-Backups und den Download über CloudKit/MMCS.

Forschungs-/Labor-Software. Kein fertiges Produkt: undokumentierte Apple-APIs, Risiko einer Kontosperrung, keine Gewährleistung. Nur mit deiner eigenen Apple ID und auf eigenes Risiko verwenden.
Mein Name ist Giordano Sconti. Ich arbeite mit dem forensischen Labor Forensis-Lab zusammen und bin als Software-Forscher sowie als technischer Berater (Consulente Tecnico) tätig.
Diese Software wird unter der MIT-Lizenz veröffentlicht, gehört aber dem forensischen Labor Forensis-Lab.
Dieses Projekt ist als höchst experimentell anzusehen, da Apples interne APIs sich über Nacht ändern können.
Ich stelle dieses Projekt zur Verfügung, weil es für die forensische Arbeit wertvoll ist, wenn wir – in Extremfällen – Backups und CloudKit-Daten wiederherstellen müssen, die außer über die Geräte selbst nicht zugänglich sind.
Anders als bei kommerziellen Tools, die ich verwendet habe, ist mir ein stabiler und vollständiger Download meiner eigenen persönlichen Backups gelungen, sowohl mit aktiviertem als auch deaktiviertem ADP (natürlich unter Kenntnis der Octagon-PIN des Geräts oder des Recovery Key, wenn aktiviert).
Es funktioniert auch, wenn Schutzmaßnahmen wie der Lockdown-Modus aktiviert und iCloud.com deaktiviert ist.
Dieses Projekt hat etwa sieben Monate Forschung erfordert. Ohne die Coding-Agent-Modelle von Cursor hätte es weit länger gedauert: Die einzige Zeit, die ich hatte, war während der Arbeitszeit, wenn möglich, oder spät in der Nacht. Ich habe versucht, eine modulare Code-Organisation beizubehalten – ich hoffe, es ist mir gelungen.
Wenn du mir einen Kaffee spendieren möchtest, würde ich es vorziehen, dass du stattdessen Forensis-Lab dankst oder eine andere Form der Anerkennung anbietest.
Jeder, der die Software ausprobieren, Verbesserungen vorschlagen oder helfen möchte, die verbleibenden Funktionen fertigzustellen, ist willkommen.
Du darfst kostenpflichtige Coding-Agent-Modelle verwenden (bitte vermeide kostenlose – sie sind oft unzuverlässig, was die Korrektheit des Codes betrifft). Entscheidend ist, dass du den generierten Code immer überprüfst und dass es keine unbefugte Aneignung von Code Dritter ohne Zustimmung gibt. Pull Requests werden sehr sorgfältig geprüft.
Kontakt: [email protected]
Jede Codezeile in diesem Projekt gehört Forensis-Lab, unter meiner direkten Gewährung. Jede Nutzung oder Änderung muss Forensis-Lab zurechenbar bleiben.
Wenn du die Software ausprobieren möchtest, bevor du deinen eigenen Anisette-Stack betreibst, kontaktiere mich privat, um Zugang zu meinem Anisette Server zu beantragen.
https://giordanosconti.github.io/iCloudKitExtractor/

Die Entsperrung per Recovery Key nutzt einen Octagon-Endpunkt, der die vollständige Menge der verschlüsselten TLKShares ausgeben kann. Aus diesen Shares ist es auch möglich, diejenigen wiederherzustellen, die mit Recovery-Key-Peers verknüpft sind (SHA-384 des öffentlichen Schlüssels, der den Recovery Key signiert). Das ermöglicht die Überprüfung, ob ein bestimmter Recovery Key unter den vorhandenen ist, und, falls ja, die Wiederherstellung des Manatee/PCS KeySet für CloudKit-Zonen – einschließlich ADP-geschützter Backups und Keychain.
src/iCloudKitExtractorsrc/PhotosViewer (wird beim IKE-Build nach viewer-payload kopiert)AnisetteServer (+ optionale Bridge-Projekte) für OTP / ADIdocs/dotnet build src/iCloudKitExtractor/iCloudKitExtractor.csproj -c Release
dotnet run --project src/iCloudKitExtractor/iCloudKitExtractor.csproj -c Release
Eine Projektseite liegt unter docs/ (index.html + site.css).
main zu GitHub pushen.main / Ordner: /docs.https://giordanosconti.github.io/iCloudKitExtractor/.Bevorzugter Weg für eine kohärente iPhone/akd-Identität: Das OTP wird auf dem Gerät über Frida → AuthKit/akd erzeugt und dann von AnisetteServer bereitgestellt.
pip install frida-tools)python (oder FRIDA_ANISETTE_PYTHON setzen)fetch_anisette.py (Frida-Attach-Skript). Pfad mit FRIDA_ANISETTE_FETCH_PY setzenJailbreak-Installationsschritte: siehe Preparing a jailbroken iPhone unten (Details folgen).
| Variable | Erforderlich | Standard | Bedeutung |
|---|---|---|---|
ANISETTE_SERVER_BACKEND | ja | coreadi | Muss frida sein (Aliase: iphone-frida, jb-frida) |
ANISETTE_SERVER_URL / ANISETTE_SERVER_URLS | nein | http://127.0.0.1:6969 | URL(s), auf denen AnisetteServer lauscht |
ANISETTE_SERVER_PORT | nein | 6969 | Port, falls URLs nicht gesetzt |
ICLOUD_AUTH_MODE | empfohlen | iphone (via config) | iphone für vollständiges AuthKit iPhone SRP verwenden |
FRIDA_ANISETTE_HOST | nein | 127.0.0.1:27042 | frida-server host:port (USB oft über iproxy 27042 27042) |
FRIDA_ANISETTE_PROCESS | nein | akd | Prozess zum Anhängen |
FRIDA_ANISETTE_FETCH_PY | ja* | heuristischer Pfad | Absoluter Pfad zu fetch_anisette.py |
FRIDA_ANISETTE_PYTHON | nein | python | Python-Executable |
FRIDA_ANISETTE_LITE | nein | 1 / true | Lite-Attach-Modus |
FRIDA_ANISETTE_TIMEOUT | nein | 60 | Sekunden bis zum Abbruch einer Mint-Operation |
*Ohne FRIDA_ANISETTE_FETCH_PY durchsucht die App nur einige wenige Legacy-Pfade im selben Verzeichnis; setzen Sie die Umgebungsvariable explizit.
Optionale App-Konfigurationsdatei: %AppData%\iCloudKitExtractor\anisette.json (authMode, serverUrl). Umgebungsvariablen überschreiben die Datei.
$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 überschreiben die Umgebungsvariablen.
Smoke-Test:
curl http://127.0.0.1:6971/health
curl http://127.0.0.1:6971/