iOS / Android Dev Tools

Lire un profil d’approvisionnementExaminer son XML

Choisissez un fichier local ou chargez l’exemple synthétique. Après décodage, passez du résumé aux droits, à l’arbre ou au XML.

Lire un profil d’approvisionnement

Fichier du profil

Déposez un fichier .mobileprovision ou .provisionprofile. Maximum 5 MiB.

Aucun fichier choisi

Résultat

La lecture reste dans cet onglet. L’outil ne téléverse ni ne conserve le fichier.

Options

Remplace les chaînes des appareils connus et vide les données binaires. Équipe, app et autres métadonnées restent visibles. Relancez après modification.

Choisissez un fichier puis décodez.

Le décodage ne vérifie ni signatures, ni certificats, ni révocation, ni possibilité d’installation.

L’export est une copie XML non signée, pas un profil installable.

Lire un profil d’approvisionnement aide à comprendre pourquoi une archive utilise la mauvaise équipe ou pourquoi un appareil de test refuse l’installation. Comparez le fichier réellement intégré à l’app avec votre copie téléchargée, surtout lorsque leurs noms se ressemblent.

Le lecteur suit la structure CMS du fichier mobileprovision jusqu’au XML encapsulé. Il ne cherche pas simplement un fragment XML dans des octets quelconques. Les systèmes récents peuvent utiliser DER-Encoded-Profile comme référence ; cette page présente la vue lisible destinée au diagnostic.

Pourquoi lire un profil d’approvisionnement ?

Relier le résumé aux champs précis

Lire un profil d’approvisionnement permet de rapprocher l’équipe, l’identifiant de l’app et la date d’expiration des chemins de champs correspondants. Les tableaux et booléens des Entitlements gardent leur type, ce qui évite de confondre une autorisation avec une simple chaîne de texte.

Une enveloppe de profil s’ouvre sur un arbre avec des branches pour l’identité, les dates et les droits.

Masquer aussi les copies exportées

Les UDID des appareils sont remplacés par défaut, y compris leurs répétitions dans d’autres chaînes. Les données binaires sont vidées car elles peuvent contenir une autre copie des identifiants. L’équipe et les métadonnées de l’app restent visibles : il ne s’agit pas d’une anonymisation.

Les lignes des appareils sont masquées sur l’écran et le document exporté, tandis que les autres champs restent visibles.

Partir du fichier réellement intégré

01

Distinguer exemple et fichier signé

Récupérez embedded.mobileprovision dans votre propre paquet d’app. L’exemple est un CMS synthétique sans signataire, conçu pour découvrir les vues. Ce n’est pas un profil émis par Apple et il ne peut pas être installé.

02

Relancer après un changement d’option

Changer le masquage supprime le résultat précédent et bloque l’export. Relancez avec le bouton ou Ctrl/Cmd + Enter. Changer uniquement de vue entre résumé, arbre et XML ne modifie pas les données décodées.

03

Déplier les branches utiles

Cliquez sur le chemin d’un dictionnaire ou tableau pour replier ses descendants. L’arbre ajoute 50 lignes à la fois ; l’export conserve la copie XML entière. L’effacement et le remplacement du fichier passent par un aperçu et peuvent être annulés une fois.

Retrouver le champ qui explique l’écart

Équipe et identité de l’app

Le résumé réunit Name, UUID, TeamName et TeamIdentifier. Le Bundle ID est déduit en retirant le premier segment de préfixe d’application-identifier, avec le nom de clé macOS en secours. Les jokers sont conservés et les valeurs absentes ne sont pas inventées.

Droits avec leurs types

Une vue dédiée affiche Entitlements en distinguant dictionnaires, tableaux, booléens, entiers, dates et données. Ces droits définissent ce que le profil autorise, pas forcément ce que la signature de l’app réclame effectivement. L’outil ne compare pas ces deux ensembles.

Expiration et instant de comparaison

CreationDate et ExpirationDate restent des valeurs UTC. L’expiration est comparée à l’horloge du navigateur au moment du décodage. Le résultat indique expiré, non expiré ou inconnu. Une horloge incorrecte change la comparaison ; une date future ne prouve jamais la validité de la signature.

Extraction structurée en plist

Le XML est extrait du contenu SignedData en conservant l’ordre des clés et les types de valeurs. Lorsque le masquage est actif, les identifiants connus sont remplacés et tous les éléments data sont vidés. Désactivez l’option puis décodez à nouveau pour retrouver les valeurs complètes.

Ce que la lecture ne vérifie pas

Aucun verdict de confiance ou d’installation
Le lecteur ne vérifie ni signature CMS, ni chaîne de certificats, ni révocation, ni confiance Apple. Il ne prédit pas l’installation sur un appareil. Un conteneur sans signataire est signalé. Un décodage réussi établit seulement que la structure prise en charge est lisible.
Le DER interne reste opaque
Les systèmes récents peuvent se fonder sur DER-Encoded-Profile. Son contenu interne n’est ni interprété ni comparé au XML. Les champs inconnus sont conservés sans leur attribuer une signification inventée ni en déduire automatiquement un type de distribution.
Un format d’entrée précis
Un seul CMS SignedData binaire contenant un plist XML UTF-8 est accepté. Le BER à longueur définie ou indéfinie et les chaînes d’octets construites sont pris en charge. XML seul, plist binaire, CMS détaché ou chiffré, IPA, P12 et URL sont exclus.
Masquage partiel, pas anonymisation
Les identifiants de ProvisionedDevices sont remplacés dans les chaînes et les clés, et les données binaires sont vidées. Noms, équipes, Bundle ID et autres métadonnées restent présents. Relisez le document avant de le partager ; les valeurs intégrales exigent un nouveau décodage sans masquage.
Des limites et une sortie non signée
Le fichier est limité à 5 MiB, chaque analyseur à 10000 nœuds et 64 niveaux, et le XML produit à 10 MiB. Les clés en double et les valeurs mal formées sont rejetées. L’export retire l’enveloppe CMS : il ne renouvelle, ne signe et n’installe aucun profil.

Lire un profil d’approvisionnement : questions

Comment ouvrir un fichier mobileprovision ?

Choisissez le fichier local puis lancez le décodage. Le lecteur contrôle la structure CMS avant de lire le plist XML encapsulé. Un fragment lisible dans un éditeur de texte ne suffit pas à établir que le fichier entier possède la structure attendue.

Comment voir les UDID des appareils inclus dans une version ?

Dépliez ProvisionedDevices dans l’arbre. Par défaut, le nombre d’appareils reste visible et leurs identifiants sont remplacés. Désactivez le masquage et relancez pour consulter les valeurs réelles. L’absence de liste ne signifie pas une autorisation pour tous les appareils.

Comment vérifier la date d’expiration d’un profil ?

Consultez ExpirationDate et l’heure de comparaison du résumé. Cela montre si la date enregistrée est passée selon votre horloge. L’acceptation actuelle du certificat, de la signature et du profil par Apple nécessite une vérification avec les outils de la plateforme.

Quel profil a servi à créer le fichier IPA ?

Décompressez vous-même l’IPA de développement ou Ad Hoc, puis trouvez embedded.mobileprovision dans le paquet d’app sous Payload. Cette page ne décompresse pas les IPA. Une app distribuée par l’App Store peut ne pas contenir de profil intégré.

Peut-on modifier la date d’expiration d’un profil ?

Modifier la date dans la copie XML ne prolonge pas un profil signé par Apple. Cette copie n’a plus de signature CMS. Mettez à jour ou générez le profil dans le compte développeur ou Xcode, puis reconstruisez l’app avec le fichier approprié.

Un détail manque sur la lecture du profil ?

Comprendre le prochain écart de signature

Lire un profil d’approvisionnement permet de confronter équipe, appareils et droits du build réellement utilisé. Gardez le XML comme pièce de diagnostic et utilisez les outils Apple pour les décisions de confiance ou de signature.