/ Annuaire / Playground / ipsw-skill
● Communauté blacktop 🔑 Nécessite votre clé

ipsw-skill

par blacktop · blacktop/ipsw-skill

Pilotez la CLI ipsw à partir de votre agent : téléchargement/extraction IPSW, différences du cache du noyau, triage Mach-O, en-têtes ObjC du framework privé.

ipsw-skill enseigne à Claude (et aux agents compatibles comme Codex CLI / Gemini CLI) comment piloter « ipsw » de blacktop — la CLI de l'armée suisse pour le micrologiciel Apple et l'analyse binaire. Il connaît les sous-commandes permettant de télécharger/extraire les IPSW et les caches de noyau, de vider les en-têtes Objective-C des frameworks privés, de différencier les noyaux d'une version à l'autre, d'auditer les droits et d'inspecter les binaires Mach-O. Destiné aux chercheurs en sécurité de la plate-forme Apple, aux ingénieurs inverseurs et aux ingénieurs déboguant le comportement au niveau du framework.

Pourquoi l'utiliser

Fonctionnalités clés

Démo en direct

Aperçu en pratique

ipsw-skill.replay ▶ prêt
0/0

Installer

Choisissez votre client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "ipsw-skill": {
      "command": "claude",
      "args": [
        "plugin",
        "marketplace",
        "add",
        "blacktop/ipsw-skill"
      ],
      "_inferred": false
    }
  }
}

Ouvrez Claude Desktop → Settings → Developer → Edit Config. Redémarrez après avoir enregistré.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "ipsw-skill": {
      "command": "claude",
      "args": [
        "plugin",
        "marketplace",
        "add",
        "blacktop/ipsw-skill"
      ],
      "_inferred": false
    }
  }
}

Cursor utilise le même schéma mcpServers que Claude Desktop. La config projet l'emporte sur la globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "ipsw-skill": {
      "command": "claude",
      "args": [
        "plugin",
        "marketplace",
        "add",
        "blacktop/ipsw-skill"
      ],
      "_inferred": false
    }
  }
}

Cliquez sur l'icône MCP Servers dans la barre latérale Cline, puis "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "ipsw-skill": {
      "command": "claude",
      "args": [
        "plugin",
        "marketplace",
        "add",
        "blacktop/ipsw-skill"
      ],
      "_inferred": false
    }
  }
}

Même format que Claude Desktop. Redémarrez Windsurf pour appliquer.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "ipsw-skill",
      "command": "claude",
      "args": [
        "plugin",
        "marketplace",
        "add",
        "blacktop/ipsw-skill"
      ]
    }
  ]
}

Continue utilise un tableau d'objets serveur plutôt qu'une map.

~/.config/zed/settings.json
{
  "context_servers": {
    "ipsw-skill": {
      "command": {
        "path": "claude",
        "args": [
          "plugin",
          "marketplace",
          "add",
          "blacktop/ipsw-skill"
        ]
      }
    }
  }
}

Ajoutez dans context_servers. Zed recharge à chaud à la sauvegarde.

claude mcp add ipsw-skill -- claude plugin marketplace add blacktop/ipsw-skill

Une seule ligne. Vérifiez avec claude mcp list. Supprimez avec claude mcp remove.

Cas d'usage

Usages concrets : ipsw-skill

Vider les en-têtes Obj-C d'un framework privé pour la découverte d'API

👤 Chercheurs en sécurité et responsables du SDK travaillant contre les internes d'Apple ⏱ ~30 min advanced

Quand l'utiliser : Vous avez besoin de la surface publique (classe + noms de sélecteurs) d'un framework privé pour étudier les changements de comportement.

Prérequis
  • ipsw CLI installé — Brew installer blacktop/tap/ipsw
  • Un dyld_shared_cache extrait d'un IPSW — Utilisez l'extrait ipsw sur l'IPSW que vous avez téléchargé
Déroulement
  1. Téléchargez l'IPSW
    Utilisez le téléchargement ipsw pour la version iOS que je spécifie.✓ Copié
    → IPSW enregistré localement
  2. Extraire le cache partagé
    Extrayez dyld_shared_cache de l'IPSW.✓ Copié
    → Fichier de cache partagé extrait
  3. En-têtes de vidage pour le framework cible
    Videz les en-têtes Obj-C pour <FrameworkName>.✓ Copié
    → Dump d'en-tête avec classes et sélecteurs

Résultat : Vous disposez d’en-têtes lisibles pour différencier les versions.

Pièges
  • Confondre les binaires du simulateur avec les binaires de l'appareil — Précisez toujours l'appareil/l'arcade que vous étudiez ; les tranches du simulateur diffèrent
Combiner avec : ghidrassistmcp

Différer les kernelcaches sur deux versions iOS

👤 Chercheurs du noyau et de XNU ⏱ ~60 min advanced

Quand l'utiliser : Une nouvelle version iOS abandonnée ; vous voulez voir ce qui a changé dans le noyau.

Déroulement
  1. Extraire les deux kernelcaches
    Extrayez le cache du noyau d'IPSW A et d'IPSW B.✓ Copié
    → Deux fichiers kernelcache sur le disque
  2. Différence
    Différez les deux kernelcaches ; liste les symboles ajoutés/supprimés/modifiés.✓ Copié
    → Changer la liste avec les catégories de symboles

Résultat : Un journal des modifications ciblé des modifications au niveau du noyau.

Pièges
  • Traiter la réorganisation des symboles comme un changement significatif — Laissez le groupe d'outils réorganiser par rapport aux ajouts/suppressions réels

Auditer un Mach-O pour les droits et les caractéristiques suspectes

👤 Réviseurs AppSec, développeurs auditant les dépendances tierces ⏱ ~20 min intermediate

Quand l'utiliser : Vous souhaitez vérifier les droits et les importations d'un binaire avant de l'envoyer avec votre application.

Déroulement
  1. Inspectez le Mach-O
    Afficher les commandes de chargement, LC_CODE_SIGNATURE et les droits pour <chemin>.✓ Copié
    → Plist de droits + informations de signature
  2. Liste des importations
    Répertoriez les symboles importés regroupés par framework.✓ Copié
    → Effacer le tableau d'importation

Résultat : Un rapport d'audit concis que vous pouvez enregistrer dans le fil de discussion.

Combiner avec : xcodebuild

Combinaisons

Associez-le à d'autres MCPs pour un effet X10

ipsw-skill + ghidrassistmcp

Transférez les fonctions intéressantes à Ghidra pour une analyse plus approfondie

Dans les importations Mach-O, choisissez la fonction suspecte et ouvrez-la dans Ghidra.✓ Copié

Utilisez le playbook RE plus large avec les outils spécifiques à Apple d'ipsw

Combinez le workflow RE générique avec ipsw pour le travail de cache dyld.✓ Copié
ipsw-skill + xcodebuild

Créez des applications locales et vérifiez qu'elles correspondent au profil de droits que vous attendez

Après xcodebuild, exécutez les droits ipsw sur l'archive pour auditer ce qui a fini par être connecté.✓ Copié

Outils

Ce que ce MCP expose

OutilEntréesQuand appelerCoût
ipsw download version/device selector Obtenez le firmware à analyser bandwidth only
ipsw extract IPSW + target (dsc / kernelcache / ramdisk) Extraire un artefact spécifique de l'IPSW 0
ipsw dyld class-dump dyld_shared_cache + framework Étudier les API de framework privé 0
ipsw kernel diff two kernelcaches Analyse du noyau version à version 0
ipsw macho info/ent Mach-O path Triage binaire 0

Coût et limites

Coût d'exécution

Quota d'API
Aucune
Tokens par appel
La sortie varie en fonction de la taille de l'artefact ; portée des commandes étroitement
Monétaire
Gratuit; les téléchargements coûtent uniquement de la bande passante
Astuce
Utilisez les indicateurs de filtrage d'ipsw afin que l'agent ne colle pas 50 Mo de symboles dans le contexte.

Sécurité

Permissions, secrets, portée

Stockage des identifiants : Aucun requis pour le fonctionnement de base
Sortie de données : ipsw download extrait les IPSW des serveurs publics d'Apple. Aucune télémétrie supplémentaire de la compétence elle-même.

Dépannage

Erreurs courantes et correctifs

ipsw : commande introuvable

Installez la CLI via Homebrew tap : Brew install blacktop/tap/ipsw.

Vérifier : which ipsw
Le téléchargement expire

Les serveurs d'Apple peuvent limiter leur débit ; réessayez avec --resume. Assurez-vous que votre réseau autorise les téléchargements volumineux.

Vérifier : curl -I https://appldnld.apple.com/...
Le dump de classe revient vide

Confirmez que vous avez pointé vers le cache partagé pour le bon périphérique/arche. Les caches du simulateur sont distincts de ceux des appareils.

Vérifier : ipsw dyld info <cache>

Alternatives

ipsw-skill vs autres

AlternativeQuand l'utiliserCompromis
ghidrassistmcpVous voulez un démontage et un script complets via GhidraBeaucoup plus lourd ; démarrage plus lent
ida-pro-mcpVous avez déjà une licence IDA Pro et souhaitez l'intégration MCPOutil commercial
reverse-engineering-assistantVous souhaitez un assistant de workflow RE plus largePas spécifique à Apple

Plus

Ressources

📖 Lire le README officiel sur GitHub

🐙 Voir les issues ouvertes

🔍 Parcourir les 400+ serveurs MCP et Skills