
Canivete Suíço de Pesquisa para iOS/macOS
<p align="center">
<a href="https://github.com/blacktop/ipsw"><img alt="IPSW Logo" src="https://raw.githubusercontent.com/blacktop/ipsw/master/www/static/img/logo/ipsw.svg" height="140" /></a>
<h1 align="center">ipsw</h1>
<h4><p align="center">Canivete suíço para pesquisa em iOS/macOS</p></h4>
<p align="center">
<a href="https://github.com/blacktop/ipsw/actions" alt="Actions">
<img src="https://github.com/blacktop/ipsw/actions/workflows/go.yml/badge.svg" /></a>
<a href="https://github.com/blacktop/ipsw/releases/latest" alt="Downloads">
<img src="https://img.shields.io/github/downloads/blacktop/ipsw/total.svg" /></a>
<a href="https://github.com/blacktop/ipsw/releases" alt="GitHub Release">
<img src="https://img.shields.io/github/release/blacktop/ipsw.svg" /></a>
<a href="http://doge.mit-license.org" alt="LICENSE">
<img src="https://img.shields.io/:license-mit-blue.svg" /></a>
</p>
<br>
**ipsw** é um conjunto de ferramentas de linha de comando para pesquisa e engenharia reversa de firmware da Apple. Baixe e descompacte IPSWs e OTAs, inspecione binários Mach-O e caches compartilhados do dyld, analise kernelcaches e trabalhe com dispositivos iOS conectados.
[Agent skill](https://github.com/blacktop/ipsw-skill) · [Instalação](#install) · [Exemplos de CLI](#cli-examples) · [Documentação](https://blacktop.github.io/ipsw)
## Use o ipsw com um agente de IA
Comece com o **[ipsw-skill](https://github.com/blacktop/ipsw-skill)** se você estiver trabalhando no Claude Code, Codex, Gemini CLI ou outro agente que suporte skills. Ele fornece ao agente referências de comandos e fluxos de trabalho para extração de firmware, análise de binários e pesquisa em plataformas Apple.
[Instale a CLI ipsw](#install) e depois adicione a skill:
```sh
npx skills add https://github.com/blacktop/ipsw-skill --skill ipsw
```
Você pode então solicitar uma tarefa em linguagem natural. Por exemplo:
> Baixe o IPSW mais recente para o iPhone 15 Pro e extraia seu kernelcache.
> Faça o dump dos cabeçalhos Objective-C do SpringBoardServices a partir deste cache compartilhado do dyld.
> Compare os KEXTs nestes dois kernelcaches.
O [README da skill](https://github.com/blacktop/ipsw-skill#installation) contém instruções de configuração para agentes individuais, incluindo o plugin do Claude Code e a extensão do Gemini CLI.
## Instalação
### macOS
O tap do Homebrew do mantenedor inclui a build com extras:
```sh
brew install blacktop/tap/ipsw
```
A fórmula principal do Homebrew também está disponível: `brew install ipsw`.
### Linux
```sh
sudo snap install ipsw
```
### Windows
```powershell
scoop bucket add blacktop https://github.com/blacktop/scoop-bucket.git
scoop install blacktop/ipsw
```
Você também pode baixar binários do [GitHub Releases](https://github.com/blacktop/ipsw/releases/latest). Consulte o [guia de instalação](https://blacktop.github.io/ipsw/docs/getting-started/installation) para outros pacotes e dependências opcionais. Alguns comandos dependem do sistema operacional hospedeiro ou da variante de build; o suporte ao Frida, por exemplo, tem uma build separada.
## O que você pode fazer
| Área | Ferramentas |
| --- | --- |
| Firmware | Baixar IPSWs, OTAs, instaladores do macOS, Xcode e KDKs; extrair componentes e comparar builds |
| Mach-O | Inspecionar load commands, símbolos, assinaturas e entitlements; desmontar código ARM64 |
| Caches compartilhados do dyld | Encontrar símbolos e referências cruzadas, extrair dylibs, fazer dump de cabeçalhos Objective-C e inspecionar metadados Swift |
| Kernel | Extrair KEXTs, inspecionar syscalls e símbolos e comparar kernelcaches |
| Componentes de firmware | Analisar IMG4, descriptografar arquivos AEA e inspecionar firmware do iBoot e de coprocessadores |
| Dispositivos | Listar dispositivos e apps, transferir arquivos com AFC, capturar logs e montar imagens de desenvolvedor |
| App Store Connect | Gerenciar certificados, bundle IDs, dispositivos e perfis de provisionamento |
| Pesquisa | Simbolizar logs de crash, depurar via SSH, rastrear com Frida e descompilar com um LLM |
## Exemplos de CLI
Substitua os caminhos de arquivo de exemplo pelos seus. Execute `ipsw --help` ou adicione `--help` a qualquer subcomando para ver suas opções.
### Baixar e extrair firmware
```sh
# Download the latest IPSW for iPhone 15 Pro
ipsw download ipsw --device iPhone16,1 --latest
# Inspect a local IPSW and extract its kernelcache
ipsw info /path/to/firmware.ipsw
ipsw extract --kernel /path/to/firmware.ipsw
# Compare two firmware builds
ipsw diff /path/to/old.ipsw /path/to/new.ipsw
```
### Explorar um cache compartilhado do dyld
```sh
ipsw dyld info /path/to/dyld_shared_cache_arm64e
# Extract Foundation for use in other tools
ipsw dyld extract /path/to/dyld_shared_cache_arm64e Foundation
# Dump headers directly from the cache
ipsw class-dump /path/to/dyld_shared_cache_arm64e SpringBoardServices --headers -o headers
```
Use o cache diretamente para análise Objective-C: dylibs extraídas ainda podem referenciar metadados armazenados em outro lugar no cache.
### Inspecionar binários e kernelcaches
```sh
# Select an architecture explicitly for universal binaries
ipsw macho info /path/to/binary --arch arm64e
ipsw macho disass /path/to/binary --arch arm64e --symbol _main
# Search a directory of binaries for an imported symbol
ipsw macho search /path/to/binaries --import 'CCCrypt'
# List KEXTs, then extract one by its full bundle ID
ipsw kernel kexts /path/to/kernelcache
ipsw kernel extract /path/to/kernelcache com.apple.driver.ASIOKit -o kexts
```
### Trabalhar com um dispositivo conectado
```sh
ipsw idev list
ipsw idev apps ls
ipsw idev afc ls /
ipsw idev syslog
```
### Descompilar com um LLM
Os comandos `macho disass` e `dyld disass` podem enviar o disassembly para um provedor de LLM configurado com `--dec`. Consulte o [guia do descompilador](https://blacktop.github.io/ipsw/docs/guides/decompiler) para configuração do provedor, seleção de modelo e exemplos.
## Configuração e automação
A CLI lê a configuração YAML de `~/.config/ipsw/config.yaml`; use `--config` para selecionar outro arquivo. Consulte [config.example.yml](https://github.com/blacktop/ipsw/blob/master/config.example.yml) e o [guia de configuração](https://blacktop.github.io/ipsw/docs/getting-started/configuration) para configurações e variáveis de ambiente.
Para scripts, selecione uma arquitetura com `--arch` ao abrir binários universais e use um caminho completo de dylib quando um nome curto for ambíguo. Os comandos que suportam `--json` documentam isso em sua ajuda.
O daemon separado `ipswd` expõe uma API REST para automação. Consulte a [referência da API](https://blacktop.github.io/ipsw/api/).
## Documentação e comunidade
- [Agent skill e configuração](https://github.com/blacktop/ipsw-skill)
- [Guias e referência de comandos](https://blacktop.github.io/ipsw)
- [Diffs de firmware pré-calculados](https://github.com/blacktop/ipsw-diffs)
- [GitHub Discussions](https://github.com/blacktop/ipsw/discussions)
- [Issue tracker](https://github.com/blacktop/ipsw/issues)
- [DeepWiki](https://deepwiki.com/blacktop/ipsw), um guia gerado por IA para a base de código
Ao relatar um bug, inclua `ipsw version`, o comando executado e a build de firmware ou o tipo de arquivo relevante. Oculte informações pessoais de logs e relatórios de crash.
## Compilar e contribuir
Compilar a partir do código-fonte requer Go 1.26 ou posterior e um toolchain C para CGO:
```sh
git clone https://github.com/blacktop/ipsw.git
cd ipsw
make build
```
Consulte [CONTRIBUTING.md](https://github.com/blacktop/ipsw/blob/master/CONTRIBUTING.md) para diretrizes de desenvolvimento e contribuição.
## Créditos
Agradecimentos a Jonathan Levin por suas ferramentas e documentação sobre os internals do iOS, à comunidade de pesquisa de segurança da Apple e a todos que contribuem com código, relatórios de bugs e pesquisa.
## Licença
[MIT](https://github.com/blacktop/ipsw/blob/master/LICENSE).