
ipsw v3.1.716
Navaja suiza para investigación en iOS/macOS
ipsw
Navaja suiza para la investigación de iOS/macOS
ipsw es un conjunto de herramientas de línea de comandos para la investigación de firmware de Apple y la ingeniería inversa. Descarga y descomprime IPSWs y OTAs, inspecciona binarios Mach-O y cachés compartidas de dyld, analiza kernelcaches y trabaja con dispositivos iOS conectados.
Agent skill · Instalación · Ejemplos de CLI · Documentación
Usar ipsw con un agente de IA
Comienza con ipsw-skill si trabajas en Claude Code, Codex, Gemini CLI u otro agente que admita skills. Proporciona al agente referencias de comandos y flujos de trabajo para la extracción de firmware, el análisis de binarios y la investigación de plataformas Apple.
Instala la CLI de ipsw y luego añade la skill:
npx skills add https://github.com/blacktop/ipsw-skill --skill ipsw
Después puedes pedir una tarea en lenguaje natural. Por ejemplo:
Descarga el último IPSW para iPhone 15 Pro y extrae su kernelcache.
Vuelca las cabeceras de Objective-C de SpringBoardServices desde esta caché compartida de dyld.
Compara los KEXTs de estos dos kernelcaches.
El README de la skill contiene instrucciones de configuración para agentes individuales, incluido el plugin de Claude Code y la extensión de Gemini CLI.
Instalación
macOS
El tap de Homebrew del mantenedor incluye la compilación con extras:
brew install blacktop/tap/ipsw
La fórmula principal de Homebrew también está disponible: brew install ipsw.
Linux
sudo snap install ipsw
Windows
scoop bucket add blacktop https://github.com/blacktop/scoop-bucket.git
scoop install blacktop/ipsw
También puedes descargar los binarios desde GitHub Releases. Consulta la guía de instalación para otros paquetes y dependencias opcionales. Algunos comandos dependen del sistema operativo anfitrión o de la variante de compilación; el soporte de Frida, por ejemplo, tiene una compilación aparte.
Qué puedes hacer
| Área | Herramientas |
|---|---|
| Firmware | Descargar IPSWs, OTAs, instaladores de macOS, Xcode y KDKs; extraer componentes y comparar compilaciones |
| Mach-O | Inspeccionar load commands, símbolos, firmas y entitlements; desensamblar código ARM64 |
| Cachés compartidas de dyld | Buscar símbolos y referencias cruzadas, extraer dylibs, volcar cabeceras de Objective-C e inspeccionar metadatos de Swift |
| Kernel | Extraer KEXTs, inspeccionar llamadas al sistema y símbolos, y comparar kernelcaches |
| Componentes de firmware | Analizar IMG4, descifrar archivos AEA e inspeccionar firmware de iBoot y coprocesadores |
| Dispositivos | Listar dispositivos y apps, transferir archivos con AFC, capturar logs y montar imágenes de desarrollador |
| App Store Connect | Gestionar certificados, bundle IDs, dispositivos y perfiles de aprovisionamiento |
| Investigación | Simbolizar registros de fallos, depurar por SSH, trazar con Frida y descompilar con un LLM |
Ejemplos de CLI
Sustituye las rutas de archivo de los ejemplos por las tuyas. Ejecuta ipsw --help o añade --help a cualquier subcomando para ver sus opciones.
Descargar y extraer 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
Explorar una caché compartida de dyld
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 caché directamente para el análisis de Objective-C: las dylibs extraídas aún pueden hacer referencia a metadatos almacenados en otras partes de la caché.
Inspeccionar binarios y kernelcaches
# 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
Trabajar con un dispositivo conectado
ipsw idev list
ipsw idev apps ls
ipsw idev afc ls /
ipsw idev syslog
Descompilar con un LLM
Los comandos macho disass y dyld disass pueden enviar el desensamblado a un proveedor de LLM configurado con --dec. Consulta la guía del descompilador para la configuración del proveedor, la selección de modelo y ejemplos.
Configuración y automatización
La CLI lee la configuración YAML desde ~/.config/ipsw/config.yaml; usa --config para seleccionar otro archivo. Consulta config.example.yml y la guía de configuración para ajustes y variables de entorno.
Para scripts, selecciona una arquitectura con --arch al abrir binarios universales y usa una ruta completa de dylib cuando un nombre corto sea ambiguo. Los comandos que admiten --json lo documentan en su ayuda.
El daemon independiente ipswd expone una API REST para automatización. Consulta la referencia de la API.
Documentación y comunidad
- Agent skill y configuración
- Guías y referencia de comandos
- Diffs de firmware precalculados
- GitHub Discussions
- Issue tracker
- DeepWiki, una guía del código generada por IA
Al informar de un bug, incluye ipsw version, el comando que ejecutaste y la compilación de firmware o el tipo de archivo relevante. Elimina la información personal de los logs y los informes de fallos.
Compilar y contribuir
Compilar desde el código fuente requiere Go 1.26 o posterior y una cadena de herramientas de C para CGO:
git clone https://github.com/blacktop/ipsw.git
cd ipsw
make build
Consulta CONTRIBUTING.md para las directrices de desarrollo y contribución.