{"version":"1.1","schema_version":"1.1.0","plugin_version":"1.1.2","url":"https://ipom.fr/2019/06/12/comment-decrypter-une-sauvegarde-iphone-itunes-apple-itunes-cryptee/","llm_html_url":"https://ipom.fr/2019/06/12/comment-decrypter-une-sauvegarde-iphone-itunes-apple-itunes-cryptee/llm","llm_json_url":"https://ipom.fr/2019/06/12/comment-decrypter-une-sauvegarde-iphone-itunes-apple-itunes-cryptee/llm.json","manifest_url":"https://ipom.fr/llm-endpoints-manifest.json","language":"fr-FR","locale":"fr_FR","title":"Comment décrypter une sauvegarde iPhone iTunes Apple iTunes cryptée?","site":{"name":"iPom","url":"https://ipom.fr/"},"author":{"id":1,"name":"Maximus63","url":"https://ipom.fr/author/maximus/"},"published_at":"2019-06-12T01:09:07+00:00","modified_at":"2019-06-12T01:09:07+00:00","word_count":1194,"reading_time_seconds":359,"summary":"Les chercheurs en sécurité Jean-Baptiste Bédrune et Jean Sigwald présenté comment pour faire ça à Hack-in-the-Box Amsterdam 2011. Depuis lors, Apple a publié un livre blanc sur la sécurité iOS avec plus de détails sur les clés et les algorithmes, et Charlie Miller et al. avoir publié le manuel iOS Hacker’s Handbook, qui couvre certaines [&hellip;]","summary_points":["Les chercheurs en sécurité Jean-Baptiste Bédrune et Jean Sigwald présenté comment\npour faire ça à Hack-in-the-Box Amsterdam 2011.","Depuis lors, Apple a publié un livre blanc sur la sécurité iOS\navec plus de détails sur les clés et les algorithmes, et Charlie Miller et al.","avoir\npublié le manuel iOS Hacker’s Handbook, qui couvre certaines des mêmes\nsol dans une mode-comment.","Quand iOS 10 est sorti pour la première fois, des changements se sont produits\nau format de sauvegarde qu&#39;Apple n&#39;a pas annoncé au début, mais divers\nles gens ont inversé les modifications de format."],"topics":["Apple"],"entities":[],"entities_metadata":[{"id":9,"name":"Apple","slug":"apple","taxonomy":"category","count":6020,"url":"https://ipom.fr/category/apple/"}],"tags":["Apple"],"content_hash":"a1a521d202151c3c1b8a52af99343b79","plain_text":"Les chercheurs en sécurité Jean-Baptiste Bédrune et Jean Sigwald présenté comment\npour faire ça à Hack-in-the-Box Amsterdam 2011.\nDepuis lors, Apple a publié un livre blanc sur la sécurité iOS\navec plus de détails sur les clés et les algorithmes, et Charlie Miller et al. avoir\npublié le manuel iOS Hacker’s Handbook, qui couvre certaines des mêmes\nsol dans une mode-comment. Quand iOS 10 est sorti pour la première fois, des changements se sont produits\nau format de sauvegarde qu&#39;Apple n&#39;a pas annoncé au début, mais divers\nles gens ont inversé les modifications de format.\n\nContenus\nToggleLes sauvegardes cryptées sont excellentesComment décrypter les sauvegardes: en théorieComment décrypter des sauvegardes: en pratiqueCrédit supplémentaire\nLes sauvegardes cryptées sont excellentes\nL’atout majeur des sauvegardes iPhone cryptées est qu’elles contiennent des éléments\ncomme les mots de passe WiFi qui ne figurent pas dans les sauvegardes régulières non chiffrées. Comme\ndiscuté dans le livre blanc sur la sécurité iOS, les sauvegardes cryptées\nsont considérés comme plus &quot;sûrs&quot;, donc Apple considère qu&#39;il est correct d&#39;inclure plus\ninformations sensibles en eux.\nUn avertissement important: évidemment, déchiffrer la sauvegarde de votre appareil iOS\nsupprime son cryptage. Pour protéger votre vie privée et votre sécurité, vous devriez\nN&#39;exécutez ces scripts que sur une machine dotée d&#39;un chiffrement intégral du disque. Pendant que\nest possible pour un expert en sécurité d&#39;écrire un logiciel qui protège les clés\nmémoire, par exemple en utilisant des fonctions comme VirtualLock () et\nSecureZeroMemory () parmi beaucoup d&#39;autres choses, ces\nLes scripts Python stockent vos clés de cryptage et vos mots de passe dans des chaînes pour\nêtre ramassé par Python. Cela signifie vos clés secrètes et mots de passe\nvivra dans la RAM pendant un certain temps, d&#39;où ils fuiront dans votre échange\nfichier et sur votre disque, où un adversaire peut les récupérer. Ce\ndéfait complètement le point d&#39;avoir une sauvegarde cryptée.\nComment décrypter les sauvegardes: en théorie\nLe livre blanc sur la sécurité iOS explique les concepts fondamentaux\ndes clés par fichier, des classes de protection, des clés de classe de protection et des keybags\nmieux que je peux. Si vous ne les connaissez pas déjà, prenez quelques instants.\nminutes pour lire les parties pertinentes.\nMaintenant, vous savez que chaque fichier sur iOS est chiffré avec sa propre mémoire aléatoire\nclé de chiffrement par fichier, appartient à une classe de protection, et la clé par fichier\nLes clés de cryptage sont stockées dans les métadonnées du système de fichiers,\nclé de classe de protection.\nDécrypter:\n\n\nDécoder le sac à clé stocké dans le BackupKeyBag entrée de\nManifest.plist. Un aperçu de haut niveau de cette structure est donné dans\nle livre blanc. Le wiki de l&#39;iPhone\ndécrit le format binaire: un champ de type chaîne de 4 octets, un champ de 4 octets\nchamp de longueur big-endian, puis la valeur elle-même.\nLes valeurs importantes sont le PBKDF2 ITERations et SEL, le double\nsel de protection DPSL et le nombre d&#39;itérations DPIC, puis pour chacun\nprotection CLS, la WPKY clé enveloppée.\n\n\nEn utilisant le mot de passe de sauvegarde, dérivez une clé de 32 octets en utilisant le PBKDF2 approprié.\nsel et nombre d&#39;itérations. Commencez par utiliser une cartouche SHA256 avec DPSL et\nDPIC, puis un tour SHA1 avec ITER et SEL.\nDéballer chaque clé emballée selon\nRFC 3394.\n\n\nDécryptez la base de données de manifestes en extrayant la classe de protection de 4 octets et la clé plus longue ManifestKey dans Manifest.plistet le déballer. Vous avez maintenant un\nBase de données SQLite avec toutes les métadonnées du fichier.\n\n\nPour chaque fichier d’intérêt, obtenez le chiffrement par fichier chiffré par classe.\ncode de classe de clé et de protection en regardant dans le Files.file base de données\ncolonne pour un plist binaire contenant Clé de cryptage et\nClasse de protection les entrées. Dénudez la balise initiale de longueur sur quatre octets de\nClé de cryptage avant d&#39;utiliser.\nEnsuite, dérivez la clé de déchiffrement finale en la dépliant avec la classe.\nclé qui a été déballée avec le mot de passe de sauvegarde. Puis déchiffrer le fichier\nutiliser AES en mode CBC avec un IV nul.\n\n\nComment décrypter des sauvegardes: en pratique\nVous aurez d’abord besoin de dépendances de la bibliothèque. Si vous utilisez un Mac utilisant une version 2.7 ou 3.7 de Python installée chez Homebrew, vous pouvez installer les dépendances avec:\nCFLAGS = &quot;- I $ (infusion - préfixe) / opt / openssl / include&quot; \nLDFLAGS = &quot;- L $ (infusion - préfixe) / opt / openssl / lib&quot; \n    pip installer biplist fastpbkdf2 pycrypto\n\nSous forme de code source exécutable, voici comment décrypter un seul\nFichier de préférences d’une sauvegarde cryptée de l’iPhone:\n#! / usr / bin / env python3.7\n# codage: UTF-8\n\ndepuis __future__ import print_function\nde __future__ division d&#39;importation\n\nimporter argparse\nimport getpass\nimporter os.path\nimporter pprint\nimporter au hasard\nimportation\nimporter sqlite3\nchaîne d&#39;importation\nstructure d&#39;importation\nfichier temporaire d&#39;importation\nde binascii import hexlify\n\nimporter Crypto.Cipher.AES # https://www.dlitz.net/software/pycrypto/\nimporter biplist\nimporter fastpbkdf2\ndepuis import biplist InvalidPlistException\n\n\ndef main ():\n    ## Options d&#39;analyse\n    analyseur = argparse.ArgumentParser ()\n    parser.add_argument (&#39;- répertoire-sauvegarde&#39;, dest = &#39;répertoire_sauvegarde&#39;,\n                    default = &#39;testdata / encrypted&#39;)\n    parser.add_argument (&#39;- password-pipe&#39;, dest = &#39;password_pipe&#39;,\n                        help = &quot;&quot; &quot;\nEmpêche le mot de passe d&#39;être visible dans la liste de processus du système.\nUtilisation typique: --password-pipe = &lt;(echo -n foo)\n&quot;&quot; &quot;)\n    parser.add_argument (&#39;- no-anonymize-output&#39;, dest = &#39;anonymize&#39;,\n                        action = &#39;store_false&#39;)\n    args = parser.parse_args ()\n    ANONYMIZE_OUTPUT global\n    ANONYMIZE_OUTPUT = args.anonymize\n    si ANONYMIZE_OUTPUT:\n        print (&#39;Avertissement: toutes les clés de sortie sont fausses pour protéger votre vie privée&#39;)\n\n    manifeste_fichier = os.path.join (args.backup_directory, &#39;Manifest.plist&#39;)\n    avec open (manifest_file, &#39;rb&#39;) comme infile:\n        manifest_plist = biplist.readPlist (infile)\n    keybag = Keybag (manifest_plist['BackupKeyBag'])\n    # les clés réelles sont inconnues, mais les clés enveloppées sont connues\n    keybag.printClassKeys ()\n\n    si args.password_pipe:\n        password = readpipe (args.password_pipe)\n        si password.endswith (b &#39; n&#39;):\n            mot de passe = mot de passe[:-1]\n    autre:\n        password = getpass.getpass (&#39;Mot de passe de sauvegarde:&#39;) .encode (&#39;utf-8&#39;)\n\n    ## Déverrouiller le sac avec mot de passe\n    sinon keybag.unlockWithPasscode (mot de passe):\n        raise Exception (&#39;Impossible de déverrouiller le sac à clé; mot de passe incorrect?&#39;)\n    # maintenant les clés sont connues aussi\n    keybag.printClassKeys ()\n\n    ## Déchiffrer la base de données de métadonnées\n    manifest_key = manifest_plist['ManifestKey'][4:]\n    \n    \n    \n    avec open (os.path.join (args.backup_directory, &#39;Manifest.db&#39;), &#39;rb&#39;) en tant que db:\n        encrypted_db = db.read ()\n\n    manifest_class = struct.unpack (&#39;","paragraphs":["Les chercheurs en sécurité Jean-Baptiste Bédrune et Jean Sigwald présenté comment\npour faire ça à Hack-in-the-Box Amsterdam 2011.\nDepuis lors, Apple a publié un livre blanc sur la sécurité iOS\navec plus de détails sur les clés et les algorithmes, et Charlie Miller et al. avoir\npublié le manuel iOS Hacker’s Handbook, qui couvre certaines des mêmes\nsol dans une mode-comment. Quand iOS 10 est sorti pour la première fois, des changements se sont produits\nau format de sauvegarde qu&#39;Apple n&#39;a pas annoncé au début, mais divers\nles gens ont inversé les modifications de format.","Contenus\nToggleLes sauvegardes cryptées sont excellentesComment décrypter les sauvegardes: en théorieComment décrypter des sauvegardes: en pratiqueCrédit supplémentaire\nLes sauvegardes cryptées sont excellentes\nL’atout majeur des sauvegardes iPhone cryptées est qu’elles contiennent des éléments\ncomme les mots de passe WiFi qui ne figurent pas dans les sauvegardes régulières non chiffrées. Comme\ndiscuté dans le livre blanc sur la sécurité iOS, les sauvegardes cryptées\nsont considérés comme plus &quot;sûrs&quot;, donc Apple considère qu&#39;il est correct d&#39;inclure plus\ninformations sensibles en eux.\nUn avertissement important: évidemment, déchiffrer la sauvegarde de votre appareil iOS\nsupprime son cryptage. Pour protéger votre vie privée et votre sécurité, vous devriez\nN&#39;exécutez ces scripts que sur une machine dotée d&#39;un chiffrement intégral du disque. Pendant que\nest possible pour un expert en sécurité d&#39;écrire un logiciel qui protège les clés\nmémoire, par exemple en utilisant des fonctions comme VirtualLock () et\nSecureZeroMemory () parmi beaucoup d&#39;autres choses, ces\nLes scripts Python stockent vos clés de cryptage et vos mots de passe dans des chaînes pour\nêtre ramassé par Python. Cela signifie vos clés secrètes et mots de passe\nvivra dans la RAM pendant un certain temps, d&#39;où ils fuiront dans votre échange\nfichier et sur votre disque, où un adversaire peut les récupérer. Ce\ndéfait complètement le point d&#39;avoir une sauvegarde cryptée.\nComment décrypter les sauvegardes: en théorie\nLe livre blanc sur la sécurité iOS explique les concepts fondamentaux\ndes clés par fichier, des classes de protection, des clés de classe de protection et des keybags\nmieux que je peux. Si vous ne les connaissez pas déjà, prenez quelques instants.\nminutes pour lire les parties pertinentes.\nMaintenant, vous savez que chaque fichier sur iOS est chiffré avec sa propre mémoire aléatoire\nclé de chiffrement par fichier, appartient à une classe de protection, et la clé par fichier\nLes clés de cryptage sont stockées dans les métadonnées du système de fichiers,\nclé de classe de protection.\nDécrypter:","Décoder le sac à clé stocké dans le BackupKeyBag entrée de\nManifest.plist. Un aperçu de haut niveau de cette structure est donné dans\nle livre blanc. Le wiki de l&#39;iPhone\ndécrit le format binaire: un champ de type chaîne de 4 octets, un champ de 4 octets\nchamp de longueur big-endian, puis la valeur elle-même.\nLes valeurs importantes sont le PBKDF2 ITERations et SEL, le double\nsel de protection DPSL et le nombre d&#39;itérations DPIC, puis pour chacun\nprotection CLS, la WPKY clé enveloppée.","En utilisant le mot de passe de sauvegarde, dérivez une clé de 32 octets en utilisant le PBKDF2 approprié.\nsel et nombre d&#39;itérations. Commencez par utiliser une cartouche SHA256 avec DPSL et\nDPIC, puis un tour SHA1 avec ITER et SEL.\nDéballer chaque clé emballée selon\nRFC 3394.","Décryptez la base de données de manifestes en extrayant la classe de protection de 4 octets et la clé plus longue ManifestKey dans Manifest.plistet le déballer. Vous avez maintenant un\nBase de données SQLite avec toutes les métadonnées du fichier.","Pour chaque fichier d’intérêt, obtenez le chiffrement par fichier chiffré par classe.\ncode de classe de clé et de protection en regardant dans le Files.file base de données\ncolonne pour un plist binaire contenant Clé de cryptage et\nClasse de protection les entrées. Dénudez la balise initiale de longueur sur quatre octets de\nClé de cryptage avant d&#39;utiliser.\nEnsuite, dérivez la clé de déchiffrement finale en la dépliant avec la classe.\nclé qui a été déballée avec le mot de passe de sauvegarde. Puis déchiffrer le fichier\nutiliser AES en mode CBC avec un IV nul.","Comment décrypter des sauvegardes: en pratique\nVous aurez d’abord besoin de dépendances de la bibliothèque. Si vous utilisez un Mac utilisant une version 2.7 ou 3.7 de Python installée chez Homebrew, vous pouvez installer les dépendances avec:\nCFLAGS = &quot;- I $ (infusion - préfixe) / opt / openssl / include&quot; \nLDFLAGS = &quot;- L $ (infusion - préfixe) / opt / openssl / lib&quot; \n    pip installer biplist fastpbkdf2 pycrypto","Sous forme de code source exécutable, voici comment décrypter un seul\nFichier de préférences d’une sauvegarde cryptée de l’iPhone:\n#! / usr / bin / env python3.7\n# codage: UTF-8","depuis __future__ import print_function\nde __future__ division d&#39;importation","importer argparse\nimport getpass\nimporter os.path\nimporter pprint\nimporter au hasard\nimportation\nimporter sqlite3\nchaîne d&#39;importation\nstructure d&#39;importation\nfichier temporaire d&#39;importation\nde binascii import hexlify","importer Crypto.Cipher.AES # https://www.dlitz.net/software/pycrypto/\nimporter biplist\nimporter fastpbkdf2\ndepuis import biplist InvalidPlistException","def main ():\n    ## Options d&#39;analyse\n    analyseur = argparse.ArgumentParser ()\n    parser.add_argument (&#39;- répertoire-sauvegarde&#39;, dest = &#39;répertoire_sauvegarde&#39;,\n                    default = &#39;testdata / encrypted&#39;)\n    parser.add_argument (&#39;- password-pipe&#39;, dest = &#39;password_pipe&#39;,\n                        help = &quot;&quot; &quot;\nEmpêche le mot de passe d&#39;être visible dans la liste de processus du système.\nUtilisation typique: --password-pipe = &lt;(echo -n foo)\n&quot;&quot; &quot;)\n    parser.add_argument (&#39;- no-anonymize-output&#39;, dest = &#39;anonymize&#39;,\n                        action = &#39;store_false&#39;)\n    args = parser.parse_args ()\n    ANONYMIZE_OUTPUT global\n    ANONYMIZE_OUTPUT = args.anonymize\n    si ANONYMIZE_OUTPUT:\n        print (&#39;Avertissement: toutes les clés de sortie sont fausses pour protéger votre vie privée&#39;)","    manifeste_fichier = os.path.join (args.backup_directory, &#39;Manifest.plist&#39;)\n    avec open (manifest_file, &#39;rb&#39;) comme infile:\n        manifest_plist = biplist.readPlist (infile)\n    keybag = Keybag (manifest_plist['BackupKeyBag'])\n    # les clés réelles sont inconnues, mais les clés enveloppées sont connues\n    keybag.printClassKeys ()","    si args.password_pipe:\n        password = readpipe (args.password_pipe)\n        si password.endswith (b &#39; n&#39;):\n            mot de passe = mot de passe[:-1]\n    autre:\n        password = getpass.getpass (&#39;Mot de passe de sauvegarde:&#39;) .encode (&#39;utf-8&#39;)","    ## Déverrouiller le sac avec mot de passe\n    sinon keybag.unlockWithPasscode (mot de passe):\n        raise Exception (&#39;Impossible de déverrouiller le sac à clé; mot de passe incorrect?&#39;)\n    # maintenant les clés sont connues aussi\n    keybag.printClassKeys ()","    ## Déchiffrer la base de données de métadonnées\n    manifest_key = manifest_plist['ManifestKey'][4:]\n    \n    \n    \n    avec open (os.path.join (args.backup_directory, &#39;Manifest.db&#39;), &#39;rb&#39;) en tant que db:\n        encrypted_db = db.read ()","    manifest_class = struct.unpack (&#39;"],"content_blocks":[{"id":"text-1","type":"text","heading":"","plain_text":"Les chercheurs en sécurité Jean-Baptiste Bédrune et Jean Sigwald présenté comment\npour faire ça à Hack-in-the-Box Amsterdam 2011.\nDepuis lors, Apple a publié un livre blanc sur la sécurité iOS\navec plus de détails sur les clés et les algorithmes, et Charlie Miller et al. avoir\npublié le manuel iOS Hacker’s Handbook, qui couvre certaines des mêmes\nsol dans une mode-comment. Quand iOS 10 est sorti pour la première fois, des changements se sont produits\nau format de sauvegarde qu&#39;Apple n&#39;a pas annoncé au début, mais divers\nles gens ont inversé les modifications de format.","html":"<p>Les chercheurs en sécurité Jean-Baptiste Bédrune et Jean Sigwald présenté comment\npour faire ça à Hack-in-the-Box Amsterdam 2011.\nDepuis lors, Apple a publié un livre blanc sur la sécurité iOS\navec plus de détails sur les clés et les algorithmes, et Charlie Miller et al. avoir\npublié le manuel iOS Hacker’s Handbook, qui couvre certaines des mêmes\nsol dans une mode-comment. Quand iOS 10 est sorti pour la première fois, des changements se sont produits\nau format de sauvegarde qu&#039;Apple n&#039;a pas annoncé au début, mais divers\nles gens ont inversé les modifications de format.</p>"},{"id":"text-2","type":"text","heading":"","plain_text":"Contenus\nToggleLes sauvegardes cryptées sont excellentesComment décrypter les sauvegardes: en théorieComment décrypter des sauvegardes: en pratiqueCrédit supplémentaire\nLes sauvegardes cryptées sont excellentes\nL’atout majeur des sauvegardes iPhone cryptées est qu’elles contiennent des éléments\ncomme les mots de passe WiFi qui ne figurent pas dans les sauvegardes régulières non chiffrées. Comme\ndiscuté dans le livre blanc sur la sécurité iOS, les sauvegardes cryptées\nsont considérés comme plus &quot;sûrs&quot;, donc Apple considère qu&#39;il est correct d&#39;inclure plus\ninformations sensibles en eux.\nUn avertissement important: évidemment, déchiffrer la sauvegarde de votre appareil iOS\nsupprime son cryptage. Pour protéger votre vie privée et votre sécurité, vous devriez\nN&#39;exécutez ces scripts que sur une machine dotée d&#39;un chiffrement intégral du disque. Pendant que\nest possible pour un expert en sécurité d&#39;écrire un logiciel qui protège les clés\nmémoire, par exemple en utilisant des fonctions comme VirtualLock () et\nSecureZeroMemory () parmi beaucoup d&#39;autres choses, ces\nLes scripts Python stockent vos clés de cryptage et vos mots de passe dans des chaînes pour\nêtre ramassé par Python. Cela signifie vos clés secrètes et mots de passe\nvivra dans la RAM pendant un certain temps, d&#39;où ils fuiront dans votre échange\nfichier et sur votre disque, où un adversaire peut les récupérer. Ce\ndéfait complètement le point d&#39;avoir une sauvegarde cryptée.\nComment décrypter les sauvegardes: en théorie\nLe livre blanc sur la sécurité iOS explique les concepts fondamentaux\ndes clés par fichier, des classes de protection, des clés de classe de protection et des keybags\nmieux que je peux. Si vous ne les connaissez pas déjà, prenez quelques instants.\nminutes pour lire les parties pertinentes.\nMaintenant, vous savez que chaque fichier sur iOS est chiffré avec sa propre mémoire aléatoire\nclé de chiffrement par fichier, appartient à une classe de protection, et la clé par fichier\nLes clés de cryptage sont stockées dans les métadonnées du système de fichiers,\nclé de classe de protection.\nDécrypter:","html":"<p>Contenus\nToggleLes sauvegardes cryptées sont excellentesComment décrypter les sauvegardes: en théorieComment décrypter des sauvegardes: en pratiqueCrédit supplémentaire\nLes sauvegardes cryptées sont excellentes\nL’atout majeur des sauvegardes iPhone cryptées est qu’elles contiennent des éléments\ncomme les mots de passe WiFi qui ne figurent pas dans les sauvegardes régulières non chiffrées. Comme\ndiscuté dans le livre blanc sur la sécurité iOS, les sauvegardes cryptées\nsont considérés comme plus &quot;sûrs&quot;, donc Apple considère qu&#039;il est correct d&#039;inclure plus\ninformations sensibles en eux.\nUn avertissement important: évidemment, déchiffrer la sauvegarde de votre appareil iOS\nsupprime son cryptage. Pour protéger votre vie privée et votre sécurité, vous devriez\nN&#039;exécutez ces scripts que sur une machine dotée d&#039;un chiffrement intégral du disque. Pendant que\nest possible pour un expert en sécurité d&#039;écrire un logiciel qui protège les clés\nmémoire, par exemple en utilisant des fonctions comme VirtualLock () et\nSecureZeroMemory () parmi beaucoup d&#039;autres choses, ces\nLes scripts Python stockent vos clés de cryptage et vos mots de passe dans des chaînes pour\nêtre ramassé par Python. Cela signifie vos clés secrètes et mots de passe\nvivra dans la RAM pendant un certain temps, d&#039;où ils fuiront dans votre échange\nfichier et sur votre disque, où un adversaire peut les récupérer. Ce\ndéfait complètement le point d&#039;avoir une sauvegarde cryptée.\nComment décrypter les sauvegardes: en théorie\nLe livre blanc sur la sécurité iOS explique les concepts fondamentaux\ndes clés par fichier, des classes de protection, des clés de classe de protection et des keybags\nmieux que je peux. Si vous ne les connaissez pas déjà, prenez quelques instants.\nminutes pour lire les parties pertinentes.\nMaintenant, vous savez que chaque fichier sur iOS est chiffré avec sa propre mémoire aléatoire\nclé de chiffrement par fichier, appartient à une classe de protection, et la clé par fichier\nLes clés de cryptage sont stockées dans les métadonnées du système de fichiers,\nclé de classe de protection.\nDécrypter:</p>"},{"id":"text-3","type":"text","heading":"","plain_text":"Décoder le sac à clé stocké dans le BackupKeyBag entrée de\nManifest.plist. Un aperçu de haut niveau de cette structure est donné dans\nle livre blanc. Le wiki de l&#39;iPhone\ndécrit le format binaire: un champ de type chaîne de 4 octets, un champ de 4 octets\nchamp de longueur big-endian, puis la valeur elle-même.\nLes valeurs importantes sont le PBKDF2 ITERations et SEL, le double\nsel de protection DPSL et le nombre d&#39;itérations DPIC, puis pour chacun\nprotection CLS, la WPKY clé enveloppée.","html":"<p>Décoder le sac à clé stocké dans le BackupKeyBag entrée de\nManifest.plist. Un aperçu de haut niveau de cette structure est donné dans\nle livre blanc. Le wiki de l&#039;iPhone\ndécrit le format binaire: un champ de type chaîne de 4 octets, un champ de 4 octets\nchamp de longueur big-endian, puis la valeur elle-même.\nLes valeurs importantes sont le PBKDF2 ITERations et SEL, le double\nsel de protection DPSL et le nombre d&#039;itérations DPIC, puis pour chacun\nprotection CLS, la WPKY clé enveloppée.</p>"},{"id":"text-4","type":"text","heading":"","plain_text":"En utilisant le mot de passe de sauvegarde, dérivez une clé de 32 octets en utilisant le PBKDF2 approprié.\nsel et nombre d&#39;itérations. Commencez par utiliser une cartouche SHA256 avec DPSL et\nDPIC, puis un tour SHA1 avec ITER et SEL.\nDéballer chaque clé emballée selon\nRFC 3394.","html":"<p>En utilisant le mot de passe de sauvegarde, dérivez une clé de 32 octets en utilisant le PBKDF2 approprié.\nsel et nombre d&#039;itérations. Commencez par utiliser une cartouche SHA256 avec DPSL et\nDPIC, puis un tour SHA1 avec ITER et SEL.\nDéballer chaque clé emballée selon\nRFC 3394.</p>"},{"id":"text-5","type":"text","heading":"","plain_text":"Décryptez la base de données de manifestes en extrayant la classe de protection de 4 octets et la clé plus longue ManifestKey dans Manifest.plistet le déballer. Vous avez maintenant un\nBase de données SQLite avec toutes les métadonnées du fichier.","html":"<p>Décryptez la base de données de manifestes en extrayant la classe de protection de 4 octets et la clé plus longue ManifestKey dans Manifest.plistet le déballer. Vous avez maintenant un\nBase de données SQLite avec toutes les métadonnées du fichier.</p>"},{"id":"text-6","type":"text","heading":"","plain_text":"Pour chaque fichier d’intérêt, obtenez le chiffrement par fichier chiffré par classe.\ncode de classe de clé et de protection en regardant dans le Files.file base de données\ncolonne pour un plist binaire contenant Clé de cryptage et\nClasse de protection les entrées. Dénudez la balise initiale de longueur sur quatre octets de\nClé de cryptage avant d&#39;utiliser.\nEnsuite, dérivez la clé de déchiffrement finale en la dépliant avec la classe.\nclé qui a été déballée avec le mot de passe de sauvegarde. Puis déchiffrer le fichier\nutiliser AES en mode CBC avec un IV nul.","html":"<p>Pour chaque fichier d’intérêt, obtenez le chiffrement par fichier chiffré par classe.\ncode de classe de clé et de protection en regardant dans le Files.file base de données\ncolonne pour un plist binaire contenant Clé de cryptage et\nClasse de protection les entrées. Dénudez la balise initiale de longueur sur quatre octets de\nClé de cryptage avant d&#039;utiliser.\nEnsuite, dérivez la clé de déchiffrement finale en la dépliant avec la classe.\nclé qui a été déballée avec le mot de passe de sauvegarde. Puis déchiffrer le fichier\nutiliser AES en mode CBC avec un IV nul.</p>"},{"id":"text-7","type":"text","heading":"","plain_text":"Comment décrypter des sauvegardes: en pratique\nVous aurez d’abord besoin de dépendances de la bibliothèque. Si vous utilisez un Mac utilisant une version 2.7 ou 3.7 de Python installée chez Homebrew, vous pouvez installer les dépendances avec:\nCFLAGS = &quot;- I $ (infusion - préfixe) / opt / openssl / include&quot; \nLDFLAGS = &quot;- L $ (infusion - préfixe) / opt / openssl / lib&quot; \n    pip installer biplist fastpbkdf2 pycrypto","html":"<p>Comment décrypter des sauvegardes: en pratique\nVous aurez d’abord besoin de dépendances de la bibliothèque. Si vous utilisez un Mac utilisant une version 2.7 ou 3.7 de Python installée chez Homebrew, vous pouvez installer les dépendances avec:\nCFLAGS = &quot;- I $ (infusion - préfixe) / opt / openssl / include&quot; \nLDFLAGS = &quot;- L $ (infusion - préfixe) / opt / openssl / lib&quot; \n    pip installer biplist fastpbkdf2 pycrypto</p>"},{"id":"text-8","type":"text","heading":"","plain_text":"Sous forme de code source exécutable, voici comment décrypter un seul\nFichier de préférences d’une sauvegarde cryptée de l’iPhone:\n#! / usr / bin / env python3.7\n# codage: UTF-8","html":"<p>Sous forme de code source exécutable, voici comment décrypter un seul\nFichier de préférences d’une sauvegarde cryptée de l’iPhone:\n#! / usr / bin / env python3.7\n# codage: UTF-8</p>"},{"id":"text-9","type":"text","heading":"","plain_text":"depuis __future__ import print_function\nde __future__ division d&#39;importation","html":"<p>depuis __future__ import print_function\nde __future__ division d&#039;importation</p>"},{"id":"text-10","type":"text","heading":"","plain_text":"importer argparse\nimport getpass\nimporter os.path\nimporter pprint\nimporter au hasard\nimportation\nimporter sqlite3\nchaîne d&#39;importation\nstructure d&#39;importation\nfichier temporaire d&#39;importation\nde binascii import hexlify","html":"<p>importer argparse\nimport getpass\nimporter os.path\nimporter pprint\nimporter au hasard\nimportation\nimporter sqlite3\nchaîne d&#039;importation\nstructure d&#039;importation\nfichier temporaire d&#039;importation\nde binascii import hexlify</p>"},{"id":"text-11","type":"text","heading":"","plain_text":"importer Crypto.Cipher.AES # https://www.dlitz.net/software/pycrypto/\nimporter biplist\nimporter fastpbkdf2\ndepuis import biplist InvalidPlistException","html":"<p>importer Crypto.Cipher.AES # https://www.dlitz.net/software/pycrypto/\nimporter biplist\nimporter fastpbkdf2\ndepuis import biplist InvalidPlistException</p>"},{"id":"text-12","type":"text","heading":"","plain_text":"def main ():\n    ## Options d&#39;analyse\n    analyseur = argparse.ArgumentParser ()\n    parser.add_argument (&#39;- répertoire-sauvegarde&#39;, dest = &#39;répertoire_sauvegarde&#39;,\n                    default = &#39;testdata / encrypted&#39;)\n    parser.add_argument (&#39;- password-pipe&#39;, dest = &#39;password_pipe&#39;,\n                        help = &quot;&quot; &quot;\nEmpêche le mot de passe d&#39;être visible dans la liste de processus du système.\nUtilisation typique: --password-pipe = &lt;(echo -n foo)\n&quot;&quot; &quot;)\n    parser.add_argument (&#39;- no-anonymize-output&#39;, dest = &#39;anonymize&#39;,\n                        action = &#39;store_false&#39;)\n    args = parser.parse_args ()\n    ANONYMIZE_OUTPUT global\n    ANONYMIZE_OUTPUT = args.anonymize\n    si ANONYMIZE_OUTPUT:\n        print (&#39;Avertissement: toutes les clés de sortie sont fausses pour protéger votre vie privée&#39;)","html":"<p>def main ():\n    ## Options d&#039;analyse\n    analyseur = argparse.ArgumentParser ()\n    parser.add_argument (&#039;- répertoire-sauvegarde&#039;, dest = &#039;répertoire_sauvegarde&#039;,\n                    default = &#039;testdata / encrypted&#039;)\n    parser.add_argument (&#039;- password-pipe&#039;, dest = &#039;password_pipe&#039;,\n                        help = &quot;&quot; &quot;\nEmpêche le mot de passe d&#039;être visible dans la liste de processus du système.\nUtilisation typique: --password-pipe = &lt;(echo -n foo)\n&quot;&quot; &quot;)\n    parser.add_argument (&#039;- no-anonymize-output&#039;, dest = &#039;anonymize&#039;,\n                        action = &#039;store_false&#039;)\n    args = parser.parse_args ()\n    ANONYMIZE_OUTPUT global\n    ANONYMIZE_OUTPUT = args.anonymize\n    si ANONYMIZE_OUTPUT:\n        print (&#039;Avertissement: toutes les clés de sortie sont fausses pour protéger votre vie privée&#039;)</p>"},{"id":"text-13","type":"text","heading":"","plain_text":"    manifeste_fichier = os.path.join (args.backup_directory, &#39;Manifest.plist&#39;)\n    avec open (manifest_file, &#39;rb&#39;) comme infile:\n        manifest_plist = biplist.readPlist (infile)\n    keybag = Keybag (manifest_plist['BackupKeyBag'])\n    # les clés réelles sont inconnues, mais les clés enveloppées sont connues\n    keybag.printClassKeys ()","html":"<p>    manifeste_fichier = os.path.join (args.backup_directory, &#039;Manifest.plist&#039;)\n    avec open (manifest_file, &#039;rb&#039;) comme infile:\n        manifest_plist = biplist.readPlist (infile)\n    keybag = Keybag (manifest_plist[&#039;BackupKeyBag&#039;])\n    # les clés réelles sont inconnues, mais les clés enveloppées sont connues\n    keybag.printClassKeys ()</p>"},{"id":"text-14","type":"text","heading":"","plain_text":"    si args.password_pipe:\n        password = readpipe (args.password_pipe)\n        si password.endswith (b &#39; n&#39;):\n            mot de passe = mot de passe[:-1]\n    autre:\n        password = getpass.getpass (&#39;Mot de passe de sauvegarde:&#39;) .encode (&#39;utf-8&#39;)","html":"<p>    si args.password_pipe:\n        password = readpipe (args.password_pipe)\n        si password.endswith (b &#039; n&#039;):\n            mot de passe = mot de passe[:-1]\n    autre:\n        password = getpass.getpass (&#039;Mot de passe de sauvegarde:&#039;) .encode (&#039;utf-8&#039;)</p>"},{"id":"text-15","type":"text","heading":"","plain_text":"    ## Déverrouiller le sac avec mot de passe\n    sinon keybag.unlockWithPasscode (mot de passe):\n        raise Exception (&#39;Impossible de déverrouiller le sac à clé; mot de passe incorrect?&#39;)\n    # maintenant les clés sont connues aussi\n    keybag.printClassKeys ()","html":"<p>    ## Déverrouiller le sac avec mot de passe\n    sinon keybag.unlockWithPasscode (mot de passe):\n        raise Exception (&#039;Impossible de déverrouiller le sac à clé; mot de passe incorrect?&#039;)\n    # maintenant les clés sont connues aussi\n    keybag.printClassKeys ()</p>"},{"id":"text-16","type":"text","heading":"","plain_text":"    ## Déchiffrer la base de données de métadonnées\n    manifest_key = manifest_plist['ManifestKey'][4:]\n    \n    \n    \n    avec open (os.path.join (args.backup_directory, &#39;Manifest.db&#39;), &#39;rb&#39;) en tant que db:\n        encrypted_db = db.read ()","html":"<p>    ## Déchiffrer la base de données de métadonnées\n    manifest_key = manifest_plist[&#039;ManifestKey&#039;][4:]\n    \n    \n    \n    avec open (os.path.join (args.backup_directory, &#039;Manifest.db&#039;), &#039;rb&#039;) en tant que db:\n        encrypted_db = db.read ()</p>"},{"id":"text-17","type":"text","heading":"","plain_text":"    manifest_class = struct.unpack (&#39;","html":"<p>    manifest_class = struct.unpack (&#039;</p>"}],"sections":[{"id":"text-1","heading":"Text","content":"Les chercheurs en sécurité Jean-Baptiste Bédrune et Jean Sigwald présenté comment\npour faire ça à Hack-in-the-Box Amsterdam 2011.\nDepuis lors, Apple a publié un livre blanc sur la sécurité iOS\navec plus de détails sur les clés et les algorithmes, et Charlie Miller et al. avoir\npublié le manuel iOS Hacker’s Handbook, qui couvre certaines des mêmes\nsol dans une mode-comment. Quand iOS 10 est sorti pour la première fois, des changements se sont produits\nau format de sauvegarde qu&#39;Apple n&#39;a pas annoncé au début, mais divers\nles gens ont inversé les modifications de format."},{"id":"text-2","heading":"Text","content":"Contenus\nToggleLes sauvegardes cryptées sont excellentesComment décrypter les sauvegardes: en théorieComment décrypter des sauvegardes: en pratiqueCrédit supplémentaire\nLes sauvegardes cryptées sont excellentes\nL’atout majeur des sauvegardes iPhone cryptées est qu’elles contiennent des éléments\ncomme les mots de passe WiFi qui ne figurent pas dans les sauvegardes régulières non chiffrées. Comme\ndiscuté dans le livre blanc sur la sécurité iOS, les sauvegardes cryptées\nsont considérés comme plus &quot;sûrs&quot;, donc Apple considère qu&#39;il est correct d&#39;inclure plus\ninformations sensibles en eux.\nUn avertissement important: évidemment, déchiffrer la sauvegarde de votre appareil iOS\nsupprime son cryptage. Pour protéger votre vie privée et votre sécurité, vous devriez\nN&#39;exécutez ces scripts que sur une machine dotée d&#39;un chiffrement intégral du disque. Pendant que\nest possible pour un expert en sécurité d&#39;écrire un logiciel qui protège les clés\nmémoire, par exemple en utilisant des fonctions comme VirtualLock () et\nSecureZeroMemory () parmi beaucoup d&#39;autres choses, ces\nLes scripts Python stockent vos clés de cryptage et vos mots de passe dans des chaînes pour\nêtre ramassé par Python. Cela signifie vos clés secrètes et mots de passe\nvivra dans la RAM pendant un certain temps, d&#39;où ils fuiront dans votre échange\nfichier et sur votre disque, où un adversaire peut les récupérer. Ce\ndéfait complètement le point d&#39;avoir une sauvegarde cryptée.\nComment décrypter les sauvegardes: en théorie\nLe livre blanc sur la sécurité iOS explique les concepts fondamentaux\ndes clés par fichier, des classes de protection, des clés de classe de protection et des keybags\nmieux que je peux. Si vous ne les connaissez pas déjà, prenez quelques instants.\nminutes pour lire les parties pertinentes.\nMaintenant, vous savez que chaque fichier sur iOS est chiffré avec sa propre mémoire aléatoire\nclé de chiffrement par fichier, appartient à une classe de protection, et la clé par fichier\nLes clés de cryptage sont stockées dans les métadonnées du système de fichiers,\nclé de classe de protection.\nDécrypter:"},{"id":"text-3","heading":"Text","content":"Décoder le sac à clé stocké dans le BackupKeyBag entrée de\nManifest.plist. Un aperçu de haut niveau de cette structure est donné dans\nle livre blanc. Le wiki de l&#39;iPhone\ndécrit le format binaire: un champ de type chaîne de 4 octets, un champ de 4 octets\nchamp de longueur big-endian, puis la valeur elle-même.\nLes valeurs importantes sont le PBKDF2 ITERations et SEL, le double\nsel de protection DPSL et le nombre d&#39;itérations DPIC, puis pour chacun\nprotection CLS, la WPKY clé enveloppée."},{"id":"text-4","heading":"Text","content":"En utilisant le mot de passe de sauvegarde, dérivez une clé de 32 octets en utilisant le PBKDF2 approprié.\nsel et nombre d&#39;itérations. Commencez par utiliser une cartouche SHA256 avec DPSL et\nDPIC, puis un tour SHA1 avec ITER et SEL.\nDéballer chaque clé emballée selon\nRFC 3394."},{"id":"text-5","heading":"Text","content":"Décryptez la base de données de manifestes en extrayant la classe de protection de 4 octets et la clé plus longue ManifestKey dans Manifest.plistet le déballer. Vous avez maintenant un\nBase de données SQLite avec toutes les métadonnées du fichier."},{"id":"text-6","heading":"Text","content":"Pour chaque fichier d’intérêt, obtenez le chiffrement par fichier chiffré par classe.\ncode de classe de clé et de protection en regardant dans le Files.file base de données\ncolonne pour un plist binaire contenant Clé de cryptage et\nClasse de protection les entrées. Dénudez la balise initiale de longueur sur quatre octets de\nClé de cryptage avant d&#39;utiliser.\nEnsuite, dérivez la clé de déchiffrement finale en la dépliant avec la classe.\nclé qui a été déballée avec le mot de passe de sauvegarde. Puis déchiffrer le fichier\nutiliser AES en mode CBC avec un IV nul."},{"id":"text-7","heading":"Text","content":"Comment décrypter des sauvegardes: en pratique\nVous aurez d’abord besoin de dépendances de la bibliothèque. Si vous utilisez un Mac utilisant une version 2.7 ou 3.7 de Python installée chez Homebrew, vous pouvez installer les dépendances avec:\nCFLAGS = &quot;- I $ (infusion - préfixe) / opt / openssl / include&quot; \nLDFLAGS = &quot;- L $ (infusion - préfixe) / opt / openssl / lib&quot; \n    pip installer biplist fastpbkdf2 pycrypto"},{"id":"text-8","heading":"Text","content":"Sous forme de code source exécutable, voici comment décrypter un seul\nFichier de préférences d’une sauvegarde cryptée de l’iPhone:\n#! / usr / bin / env python3.7\n# codage: UTF-8"},{"id":"text-9","heading":"Text","content":"depuis __future__ import print_function\nde __future__ division d&#39;importation"},{"id":"text-10","heading":"Text","content":"importer argparse\nimport getpass\nimporter os.path\nimporter pprint\nimporter au hasard\nimportation\nimporter sqlite3\nchaîne d&#39;importation\nstructure d&#39;importation\nfichier temporaire d&#39;importation\nde binascii import hexlify"},{"id":"text-11","heading":"Text","content":"importer Crypto.Cipher.AES # https://www.dlitz.net/software/pycrypto/\nimporter biplist\nimporter fastpbkdf2\ndepuis import biplist InvalidPlistException"},{"id":"text-12","heading":"Text","content":"def main ():\n    ## Options d&#39;analyse\n    analyseur = argparse.ArgumentParser ()\n    parser.add_argument (&#39;- répertoire-sauvegarde&#39;, dest = &#39;répertoire_sauvegarde&#39;,\n                    default = &#39;testdata / encrypted&#39;)\n    parser.add_argument (&#39;- password-pipe&#39;, dest = &#39;password_pipe&#39;,\n                        help = &quot;&quot; &quot;\nEmpêche le mot de passe d&#39;être visible dans la liste de processus du système.\nUtilisation typique: --password-pipe = &lt;(echo -n foo)\n&quot;&quot; &quot;)\n    parser.add_argument (&#39;- no-anonymize-output&#39;, dest = &#39;anonymize&#39;,\n                        action = &#39;store_false&#39;)\n    args = parser.parse_args ()\n    ANONYMIZE_OUTPUT global\n    ANONYMIZE_OUTPUT = args.anonymize\n    si ANONYMIZE_OUTPUT:\n        print (&#39;Avertissement: toutes les clés de sortie sont fausses pour protéger votre vie privée&#39;)"},{"id":"text-13","heading":"Text","content":"    manifeste_fichier = os.path.join (args.backup_directory, &#39;Manifest.plist&#39;)\n    avec open (manifest_file, &#39;rb&#39;) comme infile:\n        manifest_plist = biplist.readPlist (infile)\n    keybag = Keybag (manifest_plist['BackupKeyBag'])\n    # les clés réelles sont inconnues, mais les clés enveloppées sont connues\n    keybag.printClassKeys ()"},{"id":"text-14","heading":"Text","content":"    si args.password_pipe:\n        password = readpipe (args.password_pipe)\n        si password.endswith (b &#39; n&#39;):\n            mot de passe = mot de passe[:-1]\n    autre:\n        password = getpass.getpass (&#39;Mot de passe de sauvegarde:&#39;) .encode (&#39;utf-8&#39;)"},{"id":"text-15","heading":"Text","content":"    ## Déverrouiller le sac avec mot de passe\n    sinon keybag.unlockWithPasscode (mot de passe):\n        raise Exception (&#39;Impossible de déverrouiller le sac à clé; mot de passe incorrect?&#39;)\n    # maintenant les clés sont connues aussi\n    keybag.printClassKeys ()"},{"id":"text-16","heading":"Text","content":"    ## Déchiffrer la base de données de métadonnées\n    manifest_key = manifest_plist['ManifestKey'][4:]\n    \n    \n    \n    avec open (os.path.join (args.backup_directory, &#39;Manifest.db&#39;), &#39;rb&#39;) en tant que db:\n        encrypted_db = db.read ()"},{"id":"text-17","heading":"Text","content":"    manifest_class = struct.unpack (&#39;"}],"media":{"primary_image":"https://ipom.fr/wp-content/uploads/2019/06/1560301748_apple-touch-icon@2.png"},"relations":[{"rel":"canonical","href":"https://ipom.fr/2019/06/12/comment-decrypter-une-sauvegarde-iphone-itunes-apple-itunes-cryptee/"},{"rel":"alternate","href":"https://ipom.fr/2019/06/12/comment-decrypter-une-sauvegarde-iphone-itunes-apple-itunes-cryptee/llm","type":"text/html"},{"rel":"alternate","href":"https://ipom.fr/2019/06/12/comment-decrypter-une-sauvegarde-iphone-itunes-apple-itunes-cryptee/llm.json","type":"application/json"},{"rel":"llm-manifest","href":"https://ipom.fr/llm-endpoints-manifest.json","type":"application/json"}],"http_headers":{"X-LLM-Friendly":"1","X-LLM-Schema":"1.1.0","Content-Security-Policy":"default-src 'none'; img-src * data:; style-src 'unsafe-inline'"},"license":"CC BY-ND 4.0","attribution_required":true,"allow_cors":false}