
ipsw v3.1.716
Couteau suisse de recherche pour iOS/macOS
ipsw
Couteau suisse pour la recherche sur iOS/macOS
ipsw est une boîte à outils en ligne de commande pour la recherche et l'ingénierie inverse sur les firmwares Apple. Téléchargez et décompressez des IPSW et des OTA, inspectez les binaires Mach-O et les caches partagés dyld, analysez les kernelcaches et travaillez avec les appareils iOS connectés.
Compétence d'agent · Installation · Exemples CLI · Documentation
Utiliser ipsw avec un agent IA
Commencez par ipsw-skill si vous travaillez dans Claude Code, Codex, Gemini CLI ou un autre agent prenant en charge les compétences. Cela fournit à l'agent des références de commandes et des workflows pour l'extraction de firmware, l'analyse de binaires et la recherche sur les plateformes Apple.
Installez la CLI ipsw, puis ajoutez la compétence :
npx skills add https://github.com/blacktop/ipsw-skill --skill ipsw
Vous pouvez ensuite demander une tâche en langage naturel. Par exemple :
Télécharge le dernier IPSW pour iPhone 15 Pro et extrais son kernelcache.
Extrais les en-têtes Objective-C de SpringBoardServices depuis ce cache partagé dyld.
Compare les KEXT de ces deux kernelcaches.
Le README de la compétence contient les instructions de configuration pour chaque agent, y compris le plugin Claude Code et l'extension Gemini CLI.
Installation
macOS
Le tap Homebrew du mainteneur inclut la version extras :
brew install blacktop/tap/ipsw
La formule principale Homebrew est également 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
Vous pouvez également télécharger les binaires depuis GitHub Releases. Consultez le guide d'installation pour les autres paquets et les dépendances optionnelles. Certaines commandes dépendent du système d'exploitation hôte ou de la variante de compilation ; la prise en charge de Frida, par exemple, dispose d'une compilation distincte.
Ce que vous pouvez faire
| Domaine | Outils |
|---|---|
| Firmware | Télécharger des IPSW, OTA, installateurs macOS, Xcode et KDK ; extraire des composants et comparer des builds |
| Mach-O | Inspecter les load commands, symboles, signatures et entitlements ; désassembler du code ARM64 |
| Caches partagés dyld | Trouver des symboles et des références croisées, extraire des dylibs, extraire les en-têtes Objective-C et inspecter les métadonnées Swift |
| Noyau | Extraire les KEXT, inspecter les appels système et les symboles, et comparer les kernelcaches |
| Composants de firmware | Analyser IMG4, déchiffrer les archives AEA et inspecter iBoot et le firmware des coprocesseurs |
| Appareils | Lister les appareils et les applications, transférer des fichiers avec AFC, capturer les logs et monter les images de développement |
| App Store Connect | Gérer les certificats, les bundle IDs, les appareils et les profils de provisionnement |
| Recherche | Symboliser les journaux de crash, déboguer via SSH, tracer avec Frida et décompiler avec un LLM |
Exemples CLI
Remplacez les chemins de fichiers d'exemple par les vôtres. Exécutez ipsw --help ou ajoutez --help à n'importe quelle sous-commande pour voir ses options.
Télécharger et extraire un 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
Explorer un cache partagé 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
Utilisez le cache directement pour l'analyse Objective-C : les dylibs extraites peuvent toujours référencer des métadonnées stockées ailleurs dans le cache.
Inspecter les binaires et les 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
Travailler avec un appareil connecté
ipsw idev list
ipsw idev apps ls
ipsw idev afc ls /
ipsw idev syslog
Décompiler avec un LLM
Les commandes macho disass et dyld disass peuvent envoyer le désassemblage à un fournisseur LLM configuré avec --dec. Consultez le guide du décompilateur pour la configuration du fournisseur, la sélection du modèle et des exemples.
Configuration et automatisation
La CLI lit la configuration YAML depuis ~/.config/ipsw/config.yaml ; utilisez --config pour sélectionner un autre fichier. Consultez config.example.yml et le guide de configuration pour les paramètres et les variables d'environnement.
Pour les scripts, sélectionnez une architecture avec --arch lors de l'ouverture de binaires universels et utilisez un chemin complet de dylib lorsqu'un nom court est ambigu. Les commandes prenant en charge --json le documentent dans leur aide.
Le démon distinct ipswd expose une API REST pour l'automatisation. Consultez la référence de l'API.
Documentation et communauté
- Compétence d'agent et configuration
- Guides et référence des commandes
- Diffs de firmware précalculés
- GitHub Discussions
- Suivi des problèmes
- DeepWiki, un guide du code généré par IA
Lorsque vous signalez un bug, incluez ipsw version, la commande que vous avez exécutée et la build de firmware ou le type de fichier concerné. Masquez les informations personnelles dans les logs et les rapports de crash.
Compiler et contribuer
Compiler depuis les sources nécessite Go 1.26 ou une version ultérieure et une chaîne d'outils C pour CGO :