
Couteau suisse de recherche pour iOS/macOS
<p align="center">
<a href="https://github.com/blacktop/ipsw"><img alt="IPSW Logo" src="https://raw.githubusercontent.com/blacktop/ipsw/master/www/static/img/logo/ipsw.svg" height="140" /></a>
<h1 align="center">ipsw</h1>
<h4><p align="center">Couteau suisse pour la recherche sur iOS/macOS</p></h4>
<p align="center">
<a href="https://github.com/blacktop/ipsw/actions" alt="Actions">
<img src="https://github.com/blacktop/ipsw/actions/workflows/go.yml/badge.svg" /></a>
<a href="https://github.com/blacktop/ipsw/releases/latest" alt="Downloads">
<img src="https://img.shields.io/github/downloads/blacktop/ipsw/total.svg" /></a>
<a href="https://github.com/blacktop/ipsw/releases" alt="GitHub Release">
<img src="https://img.shields.io/github/release/blacktop/ipsw.svg" /></a>
<a href="http://doge.mit-license.org" alt="LICENSE">
<img src="https://img.shields.io/:license-mit-blue.svg" /></a>
</p>
<br>
**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](https://github.com/blacktop/ipsw-skill) · [Installation](#install) · [Exemples CLI](#cli-examples) · [Documentation](https://blacktop.github.io/ipsw)
## Utiliser ipsw avec un agent IA
Commencez par **[ipsw-skill](https://github.com/blacktop/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](#install), puis ajoutez la compétence :
```sh
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](https://github.com/blacktop/ipsw-skill#installation) 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 :
```sh
brew install blacktop/tap/ipsw
```
La formule principale Homebrew est également disponible : `brew install ipsw`.
### Linux
```sh
sudo snap install ipsw
```
### Windows
```powershell
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](https://github.com/blacktop/ipsw/releases/latest). Consultez le [guide d'installation](https://blacktop.github.io/ipsw/docs/getting-started/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
```sh
# 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
```sh
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
```sh
# 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é
```sh
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](https://blacktop.github.io/ipsw/docs/guides/decompiler) 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](https://github.com/blacktop/ipsw/blob/master/config.example.yml) et le [guide de configuration](https://blacktop.github.io/ipsw/docs/getting-started/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](https://blacktop.github.io/ipsw/api/).
## Documentation et communauté
- [Compétence d'agent et configuration](https://github.com/blacktop/ipsw-skill)
- [Guides et référence des commandes](https://blacktop.github.io/ipsw)
- [Diffs de firmware précalculés](https://github.com/blacktop/ipsw-diffs)
- [GitHub Discussions](https://github.com/blacktop/ipsw/discussions)
- [Suivi des problèmes](https://github.com/blacktop/ipsw/issues)
- [DeepWiki](https://deepwiki.com/blacktop/ipsw), 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 :
```sh
git clone https://github.com/blacktop/ipsw.git
cd ipsw
make build
```
Consultez [CONTRIBUTING.md](https://github.com/blacktop/ipsw/blob/master/CONTRIBUTING.md) pour les directives de développement et de contribution.
## Crédits
Merci à Jonathan Levin pour ses outils et sa documentation sur les internes d'iOS, à la communauté de recherche en sécurité Apple, et à tous ceux qui contribuent du code, des rapports de bugs et de la recherche.
## Licence
[MIT](https://github.com/blacktop/ipsw/blob/master/LICENSE).