ipsw
Couteau suisse de recherche iOS/macOS
Qu'est-ce que ipsw 🤔
ipsw est un framework d'analyse en ligne de commande complet pour iOS et macOS. Il fournit une boîte à outils étendue permettant aux chercheurs en sécurité, aux rétro-ingénieurs, aux développeurs de jailbreak et aux passionnés d'iOS de télécharger, d'analyser et d'inspecter les firmwares Apple et d'interagir avec les appareils iOS.
Capacités principales
- 📱 Analyse IPSW/OTA - Téléchargement, extraction et analyse des fichiers de firmware iOS
- 🔍 Analyse binaire - Analyse avancée Mach-O avec désassemblage ARM et assistance IA
- 🧠 dyld_shared_cache - Analyse complète du cache partagé avec extraction des classes ObjC/Swift
- 🔧 Analyse du noyau - Analyse du kernelcache, extraction des appels système et symbolisation
- 📲 Interaction avec les appareils - Gestion et débogage complets des appareils iOS
- 🔐 Recherche sur les firmwares - Analyse des firmwares IMG4, iBoot, SEP et des coprocesseurs
- 🏪 App Store Connect - Intégration complète de l'API pour la gestion des apps et des certificats
- 🛠️ Outils de développement - Utilitaires SSH, Frida, débogage et rétro-ingénierie
Démarrage rapide
Installation
macOS
En utilisant le tap blacktop (inclut les extras)
brew install blacktop/tap/ipsw
En utilisant la formule Homebrew officielle
Linux
Windows
scoop bucket add blacktop https://github.com/blacktop/scoop-bucket.git
scoop install blacktop/ipsw
Utilisation de base
# Télécharger le dernier IPSW iOS
ipsw download ipsw --device iPhone16,1 --latest
# Extraire le kernelcache
ipsw extract --kernel iPhone16,1_18.2_22C150_Restore.ipsw
# Analyser dyld_shared_cache
ipsw dyld info /path/to/dyld_shared_cache_arm64
# Obtenir les informations de l'appareil
ipsw idev list
Fonctionnalités principales
📱 Gestion IPSW et OTA
- Sources de téléchargement : Apple, AppleDB, portail développeur, flux RSS, GitHub, iTunes, Wikipedia
- Types de fichiers : IPSW, OTA, installateurs macOS, Xcode, KDK, fichiers PCC
- Opérations : Extraction, diff, montage, analyse des métadonnées
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
🔍 Analyse binaire et rétro-ingénierie
- Analyse Mach-O : Analyse binaire complète avec extraction des symboles
- Désassemblage ARM : Désassembleur ARM v9-a avec analyse assistée par IA
- Signature de code : Vérification des signatures, analyse des entitlements
- Correction binaire (patching) : Ajout, modification ou suppression de patches
ipsw macho info /path/to/binary
ipsw macho disass /path/to/binary --symbol _main
ipsw macho search /path/to/binary --string "password"
🧠 Analyse de dyld_shared_cache
- Analyse du cache : Extraction et analyse de la structure complète du cache partagé
- Analyse ObjC : Dumps de classes, analyse des méthodes, analyse des protocoles
- Support Swift : Extraction et analyse des classes Swift (expérimental)
- Gestion des symboles : Extraction des symboles et résolution d'adresses
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
📲 Interaction avec les appareils iOS (idev)
- Système de fichiers : Parcourir et transférer des fichiers via AFC
- Gestion des applications : Installation, désinstallation et analyse des applications
- Sauvegarde et restauration : Opérations complètes de sauvegarde des appareils
- Développement : Montage d'images développeur, capture de journaux, capture de paquets
- Diagnostics : Informations sur la batterie, journaux de crash, diagnostics système
ipsw idev list
ipsw idev afc ls /
ipsw idev apps ls
ipsw idev backup create
ipsw idev syslog
🔐 Analyse des firmwares et de la sécurité
- IMG4 : Analyse et déchiffrement des fichiers au format Image4
- iBoot : Analyse et recherche sur le bootloader
- SEP : Analyse du firmware du Secure Enclave Processor
- AEA : Déchiffrement des archives chiffrées Apple (Apple Encrypted Archives)
- Coprocesseurs : Analyse des firmwares AOP, DCP, GPU, Camera
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
🏪 Intégration App Store Connect
- Gestion des certificats : Certificats et profils iOS/macOS
- Enregistrement des appareils : Gestion des appareils de développement
- Gestion des applications : Bundle IDs, capacités et avis
- Provisioning : Cycle de vie complet des profils de provisionnement
ipsw appstore cert ls
ipsw appstore device reg --name "My Device" --udid 1234567890
ipsw appstore profile create --name "Development Profile"
🛠️ Outils de recherche avancés
- Symbolisation : Analyse des journaux de crash et résolution des symboles
- Extraction de classes : Extraction des classes ObjC et Swift
- Accès SSH : SSH sur appareil jailbreaké avec debugserver
- Intégration Frida : Capacités d'instrumentation dynamique
- Décompilateur propulsé par IA : Intégration avec Claude, OpenAI, Gemini, Ollama et OpenRouter
ipsw symbolicate crash.ips --dsym /path/to/symbols
ipsw class-dump /path/to/binary
ipsw ssh debugserver
Architecture
ipsw se compose de deux composants principaux :
ipsw - Outil CLI principal avec des capacités d'analyse complètes
ipswd - Démon API REST pour les opérations à distance et l'automatisation
Configuration
ipsw prend en charge les fichiers de configuration YAML et les variables d'environnement :
# Créer le répertoire de configuration
mkdir -p ~/.config/ipsw
# Copier l'exemple de configuration
cp config.example.yml ~/.config/ipsw/config.yaml
Support de bases de données
- SQLite (par défaut) - Stockage local
- PostgreSQL - Déploiements en production
Décompilateur 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];
}
}
}
Cas d'utilisation
Recherche en sécurité
- Analyse de vulnérabilités et développement d'exploits
- Évaluation de la sécurité des firmwares
- Rétro-ingénierie de binaires
Développement de jailbreak
- Analyse et exploitation de la chaîne de boot
- Recherche sur les extensions du noyau
- Modification et correction du système
Développement iOS
- Débogage et analyse d'applications
- Gestion des certificats et du provisionnement
- Tests et automatisation des appareils
Forensique numérique
- Extraction et analyse des données des appareils
- Reconstruction de la chronologie
- Analyse des artefacts
Prérequis
- Go : 1.24+ (pour la compilation depuis les sources)
- Plateforme : macOS, Linux, Windows
- USB : libusb pour l'interaction avec les appareils
- Optionnel : Clés API IA pour une analyse améliorée
Documentation
- Site web : https://blacktop.github.io/ipsw
- Documentation API : Documentation de l'API REST disponible à l'adresse
/docs lors de l'exécution d'ipswd
- Exemples : Exemples d'utilisation complets dans la documentation
SKILL.md
Donnez des super-pouvoirs à vos agents IA avec ipsw
npx skills add https://github.com/blacktop/ipsw-skill --skill ipsw
🆕 Wiki propulsé par IA
Posez des questions sur le dépôt en utilisant l'IA :
[!WARNING]
Les réponses de l'IA peuvent contenir des hallucinations - vérifiez les informations importantes.
Ressources communautaires
📊 Diffs IPSW
Différences de firmwares précalculées : ipsw-diffs
💬 Communauté

Contribuer
Les contributions sont les bienvenues ! Veuillez consulter CONTRIBUTING.md pour les directives.
Développement
git clone https://github.com/blacktop/ipsw.git
cd ipsw
make build
Problèmes connus
- Prise en charge des IPSW macOS : Certaines opérations sur les firmwares macOS peuvent présenter des problèmes de compatibilité
- Tests : Les tests complets sont difficiles en raison de la variété des versions de firmwares et des types d'appareils
- Intensif en ressources : Certaines opérations nécessitent une mémoire et une puissance de traitement importantes
Créez une issue si vous rencontrez des problèmes - les correctifs sont priorisés ! Une suite de tests complète est prévue pour les prochaines versions.
Crédits
Un immense merci à :
- Jonathan Levin pour ses outils légendaires et sa documentation complète sur les entrailles d'iOS
- La communauté de recherche iOS pour son innovation continue et le partage des connaissances
- Tous les contributeurs qui contribuent à améliorer ce projet
Licence
Licence MIT - voir LICENSE pour plus de détails.