
Kit de ferramentas forense experimental em .NET/WPF para autenticação iCloud, download de backup CloudKit/MMCS e recuperação Octagon/PCS (ADP, Recovery Key, Lockdown Mode). Software de pesquisa do Forensis-Lab — altamente experimental; as APIs privadas da Apple podem mudar da noite para o dia.
Fase experimental pública — um aplicativo WPF (.NET 10) para login no iCloud, listagem de backups de dispositivos e download via CloudKit/MMCS.

Software de pesquisa / laboratório. Não é um produto finalizado: APIs internas da Apple não documentadas, risco de banimento de conta, sem garantias. Use apenas com seu próprio Apple ID e por sua conta e risco.
Meu nome é Giordano Sconti. Colaboro com o laboratório forense Forensis-Lab e atuo como pesquisador de software, bem como consultor técnico (Consulente Tecnico).
Este software é distribuído sob a licença MIT, mas pertence ao laboratório forense Forensis-Lab.
Este projeto deve ser considerado altamente experimental, pois as APIs internas da Apple podem mudar da noite para o dia.
Estou disponibilizando este projeto porque ele é valioso para o trabalho forense quando precisamos recuperar — em casos extremos — backups e dados do CloudKit que não são acessíveis exceto pelos próprios dispositivos.
Diferentemente de ferramentas comerciais que usei, consegui um download estável e completo dos meus próprios backups pessoais tanto com ADP habilitado quanto desabilitado (naturalmente, conhecendo o PIN Octagon do dispositivo ou a Recovery Key quando ativada).
Também funciona quando proteções como o Lockdown Mode estão habilitadas e o iCloud.com está desativado.
Este projeto levou cerca de sete meses de pesquisa. Sem os modelos de agente de codificação do Cursor, teria levado muito mais tempo: o único tempo que eu tinha era durante o horário de trabalho, quando possível, ou tarde da noite. Tentei manter uma organização de código modular — espero ter conseguido.
Se você quiser me pagar um café, prefiro que você agradeça ao Forensis-Lab ou ofereça alguma outra forma de reconhecimento.
Qualquer pessoa que queira testar o software, sugerir melhorias ou ajudar a concluir os recursos restantes é bem-vinda.
Você pode usar modelos de agente de codificação pagos (por favor, evite os gratuitos — eles costumam ser pouco confiáveis quanto à correção do código). O que importa é que você sempre revise o código gerado e que não haja apropriação não autorizada de código de terceiros sem consentimento. Pull requests serão revisados com muito cuidado.
Contato: [email protected]
Cada linha de código deste projeto pertence ao Forensis-Lab, sob minha concessão direta. Qualquer uso ou modificação deve permanecer atribuível ao Forensis-Lab.
Se você quiser testar o software antes de executar sua própria infraestrutura anisette, entre em contato comigo privadamente para solicitar acesso ao meu Anisette Server.
https://giordanosconti.github.io/iCloudKitExtractor/

O desbloqueio por Recovery Key usa um endpoint Octagon que pode extrair o conjunto completo de TLKShares criptografados. A partir desses shares também é possível recuperar os associados aos peers de Recovery Key (SHA-384 da chave pública que assina a Recovery Key). Isso permite verificar se uma determinada Recovery Key está entre as presentes e, caso esteja, recuperar o Manatee/PCS KeySet para zonas do CloudKit — incluindo backups protegidos por ADP e Keychain.
src/iCloudKitExtractorsrc/PhotosViewer (copiado para viewer-payload quando o IKE é compilado)AnisetteServer (+ projetos de bridge opcionais) para OTP / ADIdocs/dotnet build src/iCloudKitExtractor/iCloudKitExtractor.csproj -c Release
dotnet run --project src/iCloudKitExtractor/iCloudKitExtractor.csproj -c Release
Um site de projeto fica em docs/ (index.html + site.css).
main para o GitHub.main / pasta: /docs.https://giordanosconti.github.io/iCloudKitExtractor/.Caminho preferencial para uma identidade iPhone/akd coerente: o OTP é gerado no dispositivo via Frida → AuthKit/akd e depois servido pelo AnisetteServer.
pip install frida-tools)python (ou defina FRIDA_ANISETTE_PYTHON)fetch_anisette.py (script de attach do Frida). Defina o caminho com FRIDA_ANISETTE_FETCH_PYPassos de instalação do jailbreak: consulte Preparing a jailbroken iPhone abaixo (detalhes a definir).
| Variável | Obrigatória | Padrão | Significado |
|---|---|---|---|
ANISETTE_SERVER_BACKEND | sim | coreadi | Deve ser frida (aliases: iphone-frida, jb-frida) |
ANISETTE_SERVER_URL / ANISETTE_SERVER_URLS | não | http://127.0.0.1:6969 | URL(s) onde o AnisetteServer escuta |
ANISETTE_SERVER_PORT | não | 6969 | Porta caso as URLs não sejam definidas |
ICLOUD_AUTH_MODE | recomendado | iphone (via config) | Use iphone para SRP completo do AuthKit iPhone |
FRIDA_ANISETTE_HOST | não | 127.0.0.1:27042 | host:porta do frida-server (USB geralmente via iproxy 27042 27042) |
FRIDA_ANISETTE_PROCESS | não | akd | Processo ao qual se anexar |
FRIDA_ANISETTE_FETCH_PY | sim* | caminho heurístico | Caminho absoluto para fetch_anisette.py |
FRIDA_ANISETTE_PYTHON | não | python | Executável Python |
FRIDA_ANISETTE_LITE | não | 1 / true | Modo de attach lite |
FRIDA_ANISETTE_TIMEOUT | não | 60 | Segundos antes de abortar uma geração |
*Sem FRIDA_ANISETTE_FETCH_PY, o aplicativo procura apenas alguns caminhos irmãos legados; defina a variável de ambiente explicitamente.
Arquivo de configuração opcional do aplicativo: %AppData%\iCloudKitExtractor\anisette.json (authMode, serverUrl). As variáveis de ambiente têm precedência sobre o arquivo.
$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 substituem o ambiente.
Teste rápido:
curl http://127.0.0.1:6971/health
curl http://127.0.0.1:6971/
Espere JSON com dados de máquina (X-Apple-I-MD-M, X-MMe-Client-Info contendo com.apple.akd).