
ipsw v3.1.716
Coltellino svizzero per la ricerca iOS/macOS
ipsw
Coltellino svizzero per la ricerca su iOS/macOS
ipsw è un toolkit da riga di comando per la ricerca e il reverse engineering del firmware Apple. Scarica e decomprimi IPSW e OTA, ispeziona binari Mach-O e dyld shared cache, analizza kernelcache e lavora con dispositivi iOS connessi.
Agent skill · Installazione · Esempi CLI · Documentazione
Usare ipsw con un agente AI
Inizia con ipsw-skill se lavori in Claude Code, Codex, Gemini CLI o un altro agente che supporta le skill. Fornisce all'agente riferimenti ai comandi e flussi di lavoro per l'estrazione del firmware, l'analisi dei binari e la ricerca sulle piattaforme Apple.
Installa la CLI ipsw, poi aggiungi la skill:
npx skills add https://github.com/blacktop/ipsw-skill --skill ipsw
Puoi quindi richiedere un'attività in linguaggio naturale. Ad esempio:
Scarica l'ultimo IPSW per iPhone 15 Pro ed estrai il suo kernelcache.
Estrai gli header Objective-C di SpringBoardServices da questa dyld shared cache.
Confronta i KEXT in questi due kernelcache.
Il README della skill contiene le istruzioni di configurazione per i singoli agenti, incluso il plugin per Claude Code e l'estensione per Gemini CLI.
Installazione
macOS
Il tap Homebrew del maintainer include la build con gli extra:
brew install blacktop/tap/ipsw
È disponibile anche la formula principale di Homebrew: brew install ipsw.
Linux
sudo snap install ipsw
Windows
scoop bucket add blacktop https://github.com/blacktop/scoop-bucket.git
scoop install blacktop/ipsw
Puoi anche scaricare i binari da GitHub Releases. Consulta la guida all'installazione per altri pacchetti e dipendenze opzionali. Alcuni comandi dipendono dal sistema operativo host o dalla variante di build; il supporto Frida, ad esempio, ha una build separata.
Cosa puoi fare
| Area | Strumenti |
|---|---|
| Firmware | Scarica IPSW, OTA, installer macOS, Xcode e KDK; estrai componenti e confronta build |
| Mach-O | Ispeziona load command, simboli, firme ed entitlement; disassembla codice ARM64 |
| dyld shared cache | Trova simboli e riferimenti incrociati, estrai dylib, esegui il dump degli header Objective-C e ispeziona i metadati Swift |
| Kernel | Estrai KEXT, ispeziona syscall e simboli e confronta kernelcache |
| Componenti firmware | Analizza IMG4, decifra archivi AEA e ispeziona iBoot e firmware dei coprocessori |
| Dispositivi | Elenca dispositivi e app, trasferisci file con AFC, cattura log e monta immagini di sviluppo |
| App Store Connect | Gestisci certificati, bundle ID, dispositivi e profili di provisioning |
| Ricerca | Simbolizza crash log, esegui il debug via SSH, traccia con Frida e decompila con un LLM |
Esempi CLI
Sostituisci i percorsi dei file di esempio con i tuoi. Esegui ipsw --help o aggiungi --help a qualsiasi sottocomando per visualizzarne le opzioni.
Scaricare ed estrarre il firmware
# 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
Esplorare una dyld shared cache
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
Usa la cache direttamente per l'analisi Objective-C: le dylib estratte possono comunque fare riferimento a metadati memorizzati altrove nella cache.
Ispezionare binari e kernelcache
# 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
Lavorare con un dispositivo connesso
ipsw idev list
ipsw idev apps ls
ipsw idev afc ls /
ipsw idev syslog
Decompilare con un LLM
I comandi macho disass e dyld disass possono inviare il disassemblato a un provider LLM configurato con --dec. Consulta la guida al decompilatore per la configurazione del provider, la selezione del modello e gli esempi.
Configurazione e automazione
La CLI legge la configurazione YAML da ~/.config/ipsw/config.yaml; usa --config per selezionare un altro file. Consulta config.example.yml e la guida alla configurazione per le impostazioni e le variabili d'ambiente.
Per gli script, seleziona un'architettura con --arch quando apri binari universali e usa un percorso dylib completo quando un nome breve è ambiguo. I comandi che supportano --json lo documentano nel loro help.
Il demone separato ipswd espone un'API REST per l'automazione. Consulta il riferimento API.
Documentazione e community
- Agent skill e configurazione
- Guide e riferimento dei comandi
- Diff di firmware precalcolati
- GitHub Discussions
- Issue tracker
- DeepWiki, una guida al codebase generata dall'AI
Quando segnali un bug, includi ipsw version, il comando eseguito e la build del firmware o il tipo di file rilevante. Oscura le informazioni personali da log e crash report.
Compilare e contribuire
Compilare dal sorgente richiede Go 1.26 o successivo e una toolchain C per CGO:
git clone https://github.com/blacktop/ipsw.git
cd ipsw
make build
Consulta CONTRIBUTING.md per le linee guida di sviluppo e contribuzione.
Crediti
Grazie a Jonathan Levin per i suoi strumenti e la documentazione sugli internals di iOS, alla community di ricerca sulla sicurezza Apple e a tutti coloro che contribuiscono con codice, bug report e ricerca.
Licenza
MIT.