
Kit de herramientas forense experimental en .NET/WPF para autenticación de iCloud, descarga de copias de seguridad de CloudKit/MMCS y recuperación de Octagon/PCS (ADP, Recovery Key, Lockdown Mode). Software de investigación de Forensis-Lab — altamente experimental; las API privadas de Apple pueden cambiar de la noche a la mañana.
Fase experimental pública — una aplicación WPF (.NET 10) para el inicio de sesión en iCloud, el listado de copias de seguridad de dispositivos y la descarga mediante CloudKit/MMCS.

Software de investigación / laboratorio. No es un producto terminado: APIs internas de Apple no documentadas, riesgo de bloqueo de cuenta, sin garantía. Úsalo únicamente con tu propio Apple ID y bajo tu propio riesgo.
Mi nombre es Giordano Sconti. Colaboro con el laboratorio forense Forensis-Lab, y trabajo como investigador de software además de como consultor técnico (Consulente Tecnico).
Este software se publica bajo la licencia MIT, pero pertenece al laboratorio forense Forensis-Lab.
Este proyecto debe considerarse altamente experimental, porque las APIs internas de Apple pueden cambiar de la noche a la mañana.
Pongo este proyecto a disposición porque es valioso para el trabajo forense cuando debemos recuperar —en casos extremos— copias de seguridad y datos de CloudKit que no son accesibles salvo a través de los propios dispositivos.
A diferencia de las herramientas comerciales que he utilizado, logré una descarga estable y completa de mis propias copias de seguridad personales tanto con ADP habilitado como deshabilitado (por supuesto, conociendo el PIN Octagon del dispositivo o la Recovery Key cuando está activada).
También funciona cuando están habilitadas protecciones como el Modo Bloqueo y iCloud.com está desactivado.
Este proyecto supuso aproximadamente siete meses de investigación. Sin los modelos de agente de programación de Cursor habría tardado mucho más: el único tiempo que tenía era durante las horas de trabajo cuando era posible, o a altas horas de la noche. Intenté mantener una organización del código modular—espero haberlo conseguido.
Si quieres invitarme a un café, preferiría que agradecieras a Forensis-Lab o que ofrecieras alguna otra forma de reconocimiento en su lugar.
Cualquiera que quiera probar el software, sugerir mejoras o ayudar a terminar las funcionalidades restantes es bienvenido.
Puedes usar modelos de agente de programación de pago (por favor, evita los gratuitos—a menudo no son fiables para la corrección del código). Lo importante es que siempre revises el código generado y que no haya apropiación no autorizada de código de terceros sin consentimiento. Las pull requests se revisarán con mucha atención.
Contacto: [email protected]
Cada línea de código de este proyecto pertenece a Forensis-Lab, bajo mi concesión directa. Cualquier uso o modificación debe seguir siendo atribuible a Forensis-Lab.
Si quieres probar el software antes de ejecutar tu propio stack de anisette, contáctame en privado para solicitar acceso a mi Anisette Server.
https://giordanosconti.github.io/iCloudKitExtractor/

El desbloqueo mediante Recovery Key utiliza un endpoint Octagon que puede volcar el conjunto completo de TLKShares cifrados. A partir de esos shares también es posible recuperar los asociados a los peers de Recovery Key (SHA-384 de la clave pública que firma la Recovery Key). Eso permite verificar si una Recovery Key dada está entre las presentes y, si lo está, recuperar el Manatee/PCS KeySet para las zonas de CloudKit—incluidas las copias de seguridad protegidas con ADP y el Keychain.
src/iCloudKitExtractorsrc/PhotosViewer (copiado en viewer-payload cuando IKE compila)AnisetteServer (+ proyectos de puente opcionales) para OTP / ADIdocs/dotnet build src/iCloudKitExtractor/iCloudKitExtractor.csproj -c Release
dotnet run --project src/iCloudKitExtractor/iCloudKitExtractor.csproj -c Release
Un sitio del proyecto se encuentra en docs/ (index.html + site.css).
main a GitHub.main / carpeta: /docs.https://giordanosconti.github.io/iCloudKitExtractor/.Ruta preferida para una identidad iPhone/akd coherente: el OTP se genera en el dispositivo mediante Frida → AuthKit/akd, y luego lo sirve AnisetteServer.
pip install frida-tools)python (o configura FRIDA_ANISETTE_PYTHON)fetch_anisette.py (script de attach de Frida). Configura su ruta con FRIDA_ANISETTE_FETCH_PYPasos de instalación del jailbreak: consulta Preparando un iPhone con jailbreak más abajo (detalles pendientes).
| Variable | Obligatoria | Predeterminado | Significado |
|---|---|---|---|
ANISETTE_SERVER_BACKEND | sí | coreadi | Debe ser frida (alias: iphone-frida, jb-frida) |
ANISETTE_SERVER_URL / ANISETTE_SERVER_URLS | no | http://127.0.0.1:6969 | URL(s) donde escucha AnisetteServer |
ANISETTE_SERVER_PORT | no | 6969 | Puerto si las URLs no están configuradas |
ICLOUD_AUTH_MODE | recomendado | iphone (vía config) | Usa iphone para el SRP completo de AuthKit iPhone |
FRIDA_ANISETTE_HOST | no | 127.0.0.1:27042 | host:puerto de frida-server (USB a menudo vía iproxy 27042 27042) |
FRIDA_ANISETTE_PROCESS | no | akd | Proceso al que adjuntarse |
FRIDA_ANISETTE_FETCH_PY | sí* | ruta heurística | Ruta absoluta a fetch_anisette.py |
FRIDA_ANISETTE_PYTHON | no | python | Ejecutable de Python |
FRIDA_ANISETTE_LITE | no | 1 / true | Modo de attach lite |
FRIDA_ANISETTE_TIMEOUT | no | 60 | Segundos antes de abortar una generación |
*Sin FRIDA_ANISETTE_FETCH_PY, la aplicación solo busca algunas rutas hermanas heredadas; configura la variable de entorno explícitamente.
Archivo de configuración opcional de la aplicación: %AppData%\iCloudKitExtractor\anisette.json (authMode, serverUrl). Las variables de entorno tienen prioridad sobre el archivo.
$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 anulan el entorno.
Prueba de humo:
curl http://127.0.0.1:6971/health
curl http://127.0.0.1:6971/