ipsw
Navaja suiza de investigación para iOS/macOS
Qué es ipsw 🤔
ipsw es un completo framework de investigación de línea de comandos para iOS y macOS. Proporciona un amplio conjunto de herramientas para investigadores de seguridad, ingenieros inversos, desarrolladores de jailbreak y entusiastas de iOS para descargar, analizar y estudiar el firmware de Apple e interactuar con dispositivos iOS.
Capacidades principales
- 📱 Análisis de IPSW/OTA - Descarga, extrae y analiza archivos de firmware de iOS
- 🔍 Análisis de binarios - Análisis avanzado de Mach-O con desensamblador ARM y asistencia de IA
- 🧠 dyld_shared_cache - Análisis completo de la caché compartida con volcado de clases ObjC/Swift
- 🔧 Análisis del kernel - Análisis de kernelcache, extracción de syscalls y simbolización
- 📲 Interacción con dispositivos - Gestión y depuración completas de dispositivos iOS
- 🔐 Investigación de firmware - Análisis de firmware IMG4, iBoot, SEP y coprocesadores
- 🏪 App Store Connect - Integración completa con la API para la gestión de apps y certificados
- 🛠️ Herramientas de desarrollo - Utilidades de SSH, Frida, depuración e ingeniería inversa
Inicio rápido
Instalación
macOS
Usando el tap de blacktop (incluye extras)
brew install blacktop/tap/ipsw
Usando la fórmula oficial de Homebrew
Linux
Windows
scoop bucket add blacktop https://github.com/blacktop/scoop-bucket.git
scoop install blacktop/ipsw
Uso básico
# Download latest iOS IPSW
ipsw download ipsw --device iPhone16,1 --latest
# Extract kernelcache
ipsw extract --kernel iPhone16,1_18.2_22C150_Restore.ipsw
# Analyze dyld_shared_cache
ipsw dyld info /path/to/dyld_shared_cache_arm64
# Get device information
ipsw idev list
Características principales
📱 Gestión de IPSW y OTA
- Fuentes de descarga: Apple, AppleDB, Portal de desarrolladores, fuentes RSS, GitHub, iTunes, Wikipedia
- Tipos de archivo: IPSW, OTA, instaladores de macOS, Xcode, KDKs, archivos PCC
- Operaciones: Extraer, diff, montar, analizar metadatos
ipsw download ipsw --device iPhone16,1 --latest
ipsw extract --kernel iPhone16,1_18.2_22C150_Restore.ipsw
ipsw diff iPhone16,1_18.1_22B83_Restore.ipsw iPhone16,1_18.2_22C150_Restore.ipsw
🔍 Análisis de binarios e ingeniería inversa
- Análisis de Mach-O: Análisis completo de binarios con extracción de símbolos
- Desensamblado ARM: Desensamblador ARM v9-a con análisis impulsado por IA
- Firma de código: Verificar firmas, analizar entitlements
- Parcheo de binarios: Añadir, modificar o eliminar parches
ipsw macho info /path/to/binary
ipsw macho disass /path/to/binary --symbol _main
ipsw macho search /path/to/binary --string "password"
🧠 Análisis de dyld_shared_cache
- Análisis de caché: Extrae y analiza la estructura completa de la caché compartida
- Análisis de ObjC: Volcados de clases, análisis de métodos, análisis de protocolos
- Soporte Swift: Volcado y análisis de clases Swift (experimental)
- Gestión de símbolos: Extracción de símbolos y resolución de direcciones
ipsw dyld info /path/to/dyld_shared_cache
ipsw dyld extract /path/to/dyld_shared_cache --dylib Foundation
ipsw dyld objc class /path/to/dyld_shared_cache --class NSString
📲 Interacción con dispositivos iOS (idev)
- Sistema de archivos: Navegar y transferir archivos mediante AFC
- Gestión de apps: Instalar, desinstalar y analizar aplicaciones
- Copia de seguridad y restauración: Operaciones completas de copia de seguridad del dispositivo
- Desarrollo: Montar imágenes de desarrollador, capturar registros, captura de paquetes
- Diagnósticos: Información de la batería, registros de fallos, diagnósticos del sistema
ipsw idev list
ipsw idev afc ls /
ipsw idev apps ls
ipsw idev backup create
ipsw idev syslog
🔐 Análisis de firmware y seguridad
- IMG4: Analizar y descifrar archivos en formato Image4
- iBoot: Análisis e investigación del bootloader
- SEP: Análisis del firmware del Secure Enclave Processor
- AEA: Descifrado de Apple Encrypted Archives
- Coprocesadores: Análisis del firmware de AOP, DCP, GPU y cámara
ipsw img4 dec iBoot.img4
ipsw fw sep iPhone16,1_18.2_22C150_Restore.ipsw
ipsw fw iboot iPhone16,1_18.2_22C150_Restore.ipsw
🏪 Integración con App Store Connect
- Gestión de certificados: Certificados y perfiles de iOS/macOS
- Registro de dispositivos: Gestionar dispositivos de desarrollo
- Gestión de apps: Bundle IDs, capacidades y reseñas
- Aprovisionamiento: Ciclo de vida completo del perfil de aprovisionamiento
ipsw appstore cert ls
ipsw appstore device reg --name "My Device" --udid 1234567890
ipsw appstore profile create --name "Development Profile"
🛠️ Herramientas avanzadas de investigación
- Simbolización: Análisis de registros de fallos y resolución de símbolos
- Volcado de clases: Extracción de clases ObjC y Swift
- Acceso SSH: SSH a dispositivos con jailbreak con debugserver
- Integración con Frida: Capacidades de instrumentación dinámica
- Descompilador impulsado por IA: Integración con Claude, OpenAI, Gemini, Ollama y OpenRouter
ipsw symbolicate crash.ips --dsym /path/to/symbols
ipsw class-dump /path/to/binary
ipsw ssh debugserver
Arquitectura
ipsw se compone de dos componentes principales:
ipsw - Herramienta CLI principal con capacidades completas de análisis
ipswd - Demonio de API REST para operaciones remotas y automatización
Configuración
ipsw admite archivos de configuración YAML y variables de entorno:
# Create config directory
mkdir -p ~/.config/ipsw
# Copy example config
cp config.example.yml ~/.config/ipsw/config.yaml
Soporte de bases de datos
- SQLite (predeterminado) - Almacenamiento local
- PostgreSQL - Implementaciones de producción
Descompilador de IA
https://blacktop.github.io/ipsw/docs/guides/decompiler
❱ ipsw macho disass /System/Library/PrivateFrameworks/ApplePushService.framework/apsd --entry \
--dec --dec-model "Claude 3.7 Sonnet"
• Loading symbol cache file...
• Decompiling... 🕒
int main(int argc, char *argv[]) {
@autoreleasepool {
__set_user_dir_suffix(@"com.apple.apsd");
@autoreleasepool {
APSDaemon *daemon = [[APSDaemon alloc] init];
if (daemon) {
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop run];
[runLoop release];
}
[daemon release];
}
return 0;
}
@catch (NSException *exception) {
if ([exception reason] == 1) {
id exceptionObj = [exception retain];
id logger = [APSLog daemon];
if (_os_log_type_enabled(logger, 0x11)) {
[exceptionObj logWithLogger:logger];
}
[logger release];
[exceptionObj release];
}
}
}
Casos de uso
Investigación de seguridad
- Análisis de vulnerabilidades y desarrollo de exploits
- Evaluación de la seguridad del firmware
- Ingeniería inversa de binarios
Desarrollo de jailbreak
- Análisis y explotación de la cadena de arranque (bootchain)
- Investigación de extensiones del kernel
- Modificación y parcheo del sistema
Desarrollo de iOS
- Depuración y análisis de apps
- Gestión de certificados y aprovisionamiento
- Pruebas y automatización de dispositivos
Forensia digital
- Extracción y análisis de datos del dispositivo
- Reconstrucción de líneas de tiempo
- Análisis de artefactos
Requisitos
- Go: 1.24+ (para compilar desde el código fuente)
- Plataforma: macOS, Linux, Windows
- USB: libusb para la interacción con dispositivos
- Opcional: Claves de API de IA para un análisis mejorado
Documentación
- Sitio web: https://blacktop.github.io/ipsw
- Documentación de la API: Documentación de la API REST disponible en
/docs al ejecutar ipswd
- Ejemplos: Ejemplos completos de uso en la documentación
SKILL.md
Potencia tus agentes de IA con los superpoderes de ipsw
npx skills add https://github.com/blacktop/ipsw-skill --skill ipsw
🆕 Wiki impulsada por IA
Haz preguntas sobre el repositorio usando IA:
[!WARNING]
Las respuestas de la IA pueden contener alucinaciones: verifica la información importante.
Recursos de la comunidad
📊 Diferencias de IPSW
Diferencias de firmware precalculadas: ipsw-diffs
💬 Comunidad

Contribuciones
¡Agradecemos las contribuciones! Consulta CONTRIBUTING.md para conocer las directrices.
Desarrollo
git clone https://github.com/blacktop/ipsw.git
cd ipsw
make build
Problemas conocidos
- Soporte de IPSW de macOS: Algunas operaciones con firmware de macOS pueden tener problemas de compatibilidad
- Pruebas: Las pruebas exhaustivas son difíciles debido a la variedad de versiones de firmware y tipos de dispositivo
- Uso intensivo de recursos: Algunas operaciones requieren una cantidad significativa de memoria y potencia de procesamiento
Crea un issue si encuentras problemas: ¡las correcciones tienen prioridad! Se planea una suite de pruebas exhaustiva para futuras versiones.
Créditos
Un enorme agradecimiento a:
- Jonathan Levin por sus legendarias herramientas y su exhaustiva documentación de los internals de iOS
- La comunidad de investigación de iOS por la innovación continua y el intercambio de conocimientos
- A todos los contribuyentes que ayudan a mejorar este proyecto
Licencia
Licencia MIT: consulta LICENSE para más detalles.