{"id":11020,"date":"2016-08-04T19:19:26","date_gmt":"2016-08-04T17:19:26","guid":{"rendered":"https:\/\/www.customprotocol.com\/?p=11020"},"modified":"2016-08-04T19:19:26","modified_gmt":"2016-08-04T17:19:26","slug":"vita-henkaku-partiellement-decrypte","status":"publish","type":"post","link":"https:\/\/www.customprotocol.com\/vita-henkaku-partiellement-decrypte\/","title":{"rendered":"[VITA] HENkaku partiellement d\u00e9crypt\u00e9&#8239;!"},"content":{"rendered":"<p style=\"text-align: justify;\">Un utilisateur des forums de Wololo nomm\u00e9 dans un tr\u00e8s grand \u00e9lan d'originalit\u00e9 \"<em>H<\/em>\" a post\u00e9 une commentaire dans un article du site (ne cherchez pas, le commentaire a disparu) avec un lien menant \u00e0 ses explication \u00e0 propos de l'exploit <strong>HENkaku<\/strong>.<\/p>\n<p style=\"text-align: justify;\">Ces explications, les voici, comme d'habitude traduites en fran\u00e7ais (\u00e0 mon plus grand malheur xD)&#8239;! Attention, c'est technique.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.customprotocol.com\/medias\/2016\/08\/henkaku-molecule-imgwind-modifiee.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-11023\" src=\"https:\/\/www.customprotocol.com\/medias\/2016\/08\/henkaku-molecule-imgwind-modifiee-500x281.png\" alt=\"henkaku-molecule-imgWind-modifi\u00e9e\" width=\"500\" height=\"281\" \/><\/a><\/p>\n<hr \/>\n<h4 style=\"text-align: justify;\">Premi\u00e8re \u00e9tape&nbsp;: l'exploit du navigateur<\/h4>\n<p>Appuyer sur le bouton \"<em>Install<\/em>\" du site d'<strong>HENkaku<\/strong> r\u00e9sulte en un simple check de l'<em>user agent<\/em>. Si l'<em>user agent<\/em> d\u00e9tect\u00e9 correspond avec celui d'une PS Vita ou d'un PS TV en 3.60, l'utilisateur est automatiquement redirig\u00e9 vers <strong>http:\/\/go.henkaku.me<\/strong> o\u00f9 l'exploit est d\u00e9ploy\u00e9.<\/p>\n<p>L'exploit r\u00e9utilise des \u00e9l\u00e9ments de plusieurs anciens exploits publics (<em>heap spraying method, sort() bug, scrollLeft attribute manipulation<\/em>) et les combine avec une nouvelle technique de corruption de tas (NDA&nbsp;: <em>heap corruption<\/em> en anglais, je savais pas trop comment le traduire ^^).<\/p>\n<p>La <em>Team Molecule<\/em> a renomm\u00e9 les variables et les m\u00e9thodes pour fournir une simple couche d'<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Code_imp\u00e9n\u00e9trable\"><em>obfuscation<\/em><\/a> sur le code <em>HTML<\/em>.<\/p>\n<p>Vous pouvez trouver le code partiellement revers\u00e9 (concentr\u00e9 sur les parties cruciales) ici&nbsp;: <a href=\"http:\/\/pastebin.com\/bYA4xGaQ\">http:\/\/pastebin.com\/bYA4xGaQ<\/a><\/p>\n<p>Comme d'autres anciens exploits, <strong>HENkaku<\/strong> permet de corrompre la <em>vtable<\/em> d'un objet et de faire un <a href=\"https:\/\/en.wikipedia.org\/wiki\/Return-oriented_programming\"><em>ROP<\/em><\/a> dans le module <em>SceWebkit<\/em>. Les offset pour les librairies et les gadgets <em>ROP<\/em> sont r\u00e9cup\u00e9r\u00e9s depuis un fichier <em>javascript<\/em> (<a href=\"http:\/\/go.henkaku.xyz\/payload.js\">http:\/\/go.henkaku.xyz\/payload.js<\/a>) pendant la derni\u00e8re \u00e9tape de l'exploit.<\/p>\n<figure id=\"attachment_3972\" aria-describedby=\"caption-attachment-3972\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-3972\" src=\"https:\/\/www.customprotocol.com\/medias\/2015\/04\/PS-Vita-faille-webkit-300x143.png\" alt=\"Webkit, toute une histoire...\" width=\"300\" height=\"143\" srcset=\"https:\/\/www.customprotocol.com\/medias\/2015\/04\/PS-Vita-faille-webkit-300x143.png 300w, https:\/\/www.customprotocol.com\/medias\/2015\/04\/PS-Vita-faille-webkit-768x366.png 768w, https:\/\/www.customprotocol.com\/medias\/2015\/04\/PS-Vita-faille-webkit-1024x488.png 1024w, https:\/\/www.customprotocol.com\/medias\/2015\/04\/PS-Vita-faille-webkit-370x176.png 370w, https:\/\/www.customprotocol.com\/medias\/2015\/04\/PS-Vita-faille-webkit-270x129.png 270w, https:\/\/www.customprotocol.com\/medias\/2015\/04\/PS-Vita-faille-webkit-570x272.png 570w, https:\/\/www.customprotocol.com\/medias\/2015\/04\/PS-Vita-faille-webkit-740x353.png 740w, https:\/\/www.customprotocol.com\/medias\/2015\/04\/PS-Vita-faille-webkit.png 1280w, https:\/\/www.customprotocol.com\/medias\/2015\/04\/PS-Vita-faille-webkit-300x143@2x.png 600w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-3972\" class=\"wp-caption-text\">Webkit, toute une histoire...<\/figcaption><\/figure>\n<p>La <em>Team Molecule<\/em> a impl\u00e9ment\u00e9 une m\u00e9thode dynamique pour transf\u00e9rer les gadgets et les fonctions des offset pour chaque module une fois leur adresse de base trouv\u00e9e (en regardant dans <em>SceWebkit<\/em>).<\/p>\n<h4>Seconde \u00e9tape&nbsp;: ROP payload 1<\/h4>\n<p>\u00c0 ce moment, l'exploit du navigateur a arrang\u00e9 l'espace de la m\u00e9moire pour lancer le premier <em>ROP payload<\/em> qui est reconstruit \u00e0 partir du fichier <em>payload.js<\/em>.<\/p>\n<p style=\"text-align: justify;\">Le fichier <em>payload.js<\/em> contient deux <em>arrays<\/em>, une contenant les donn\u00e9es du <em>payload<\/em> et l'autre le type de relocation pour chaque mot.<\/p>\n<p style=\"text-align: justify;\">En croisant ces informations, l'exploit lit le <em>payload<\/em> et relocalise tous les offset du code vers l'adresse de module cible en ajoutant l'adresse de base du module&nbsp;:<\/p>\n<pre class=\"lang:default decode:true\">        Relocation type 0 -&gt; Plain data stored inside the ROP space itself. No relocation needed.\n\tRelocation type 1 -&gt; Offset inside the ROP payload's stack.\n\tRelocation type 2 -&gt; Offset inside the SceWebkit module.\n\tRelocation type 3 -&gt; Offset inside the SceLibKernel module.\n\tRelocation type 4 -&gt; Offset inside the SceLibc module.\n\tRelocation type 5 -&gt; Offset inside the SceLibHttp module.\n\tRelocation type 6 -&gt; Offset inside the SceNet(?) module.\n\tRelocation type 7 -&gt; Offset inside the SceDriverUser(?) module.<\/pre>\n<p style=\"text-align: justify;\">Le <em>payload<\/em> reconstruit peut \u00eatre trouv\u00e9 ici&nbsp;: <a href=\"https:\/\/www.sendspace.com\/file\/mwpeut\">https:\/\/www.sendspace.com\/file\/mwpeut<\/a><\/p>\n<p style=\"text-align: justify;\">Et une analyse de ce fameux <em>payload<\/em> ici&nbsp;: <a href=\"http:\/\/pastebin.com\/gxc0cX1i\">http:\/\/pastebin.com\/gxc0cX1i<\/a><\/p>\n<p style=\"text-align: justify;\">Le <em>payload<\/em> s'occupe de diff\u00e9rentes choses, comme par exemple&nbsp;:<\/p>\n<pre class=\"lang:default decode:true \">\t\/\/ Do stuff\t\n\t...\n\n\t\/\/ Create a new thread for the second payload\n\tint thread_id&nbsp;=&nbsp;sceKernelCreateThread(\"st2\", SceWebkit_base&nbsp;+&nbsp;0x000054C8, 0x10000100, 0x00600000, 0x00000000, 0x00000000, 0x00000000);\n\t\n\t\/\/ Do stuff\n\t...\n\n\t\/\/ Construct the arguments for fetching the second payload\n\tstrcpy(stack_base&nbsp;+&nbsp;0x000000BC, \"http:\/\/go.henkaku.me\/x\");\n\tsnprintf(stack_base&nbsp;+&nbsp;0x000002C4, 0x00000100, \"?a1=%x\", stack_base);\n\tstrcpy(stack_base&nbsp;+&nbsp;0x000000BC, stack_base&nbsp;+&nbsp;0x000002C4);\n\tsnprintf(stack_base&nbsp;+&nbsp;0x000002C4, 0x00000100, \"&amp;a2=%x&amp;a3=%x&amp;a4=%x&amp;\", SceWebkit_base, SceLibKernel_base, SceLibc_base);\n\tstrcpy(stack_base&nbsp;+&nbsp;0x000000BC, stack_base&nbsp;+&nbsp;0x000002C4);\n\tsnprintf(stack_base&nbsp;+&nbsp;0x000002C4, 0x00000100, \"&amp;a5=%x&amp;a6=%x&amp;a7=%x&amp;\", SceLibHttp_base, SceNet_base, SceDriverUser_base);\n\tstrcpy(stack_base&nbsp;+&nbsp;0x000000BC, stack_base&nbsp;+&nbsp;0x000002C4);\n\n\t\/\/ Do stuff\n\t...\n\n\t\/\/ Send HTTP requests to fetch the second payload\n\tSceLibHttp_92fd(0x00010000);\n\tint http_buf&nbsp;=&nbsp;SceLibHttp_947b(\"ldr\", 0x00000002, 0x00000001);\n\tSceLibHttp_950b(http_buf, stack_base&nbsp;+&nbsp;0x000000BC, 0x00000000);\n\tint http_req&nbsp;=&nbsp;SceLibHttp_95ff(http_buf, 0x00000000, stack_base&nbsp;+&nbsp;0x000000BC);\n\tSceLibHttp_9935(http_req, 0x00000000, 0x00000000);\n\tSceLibHttp_9983(http_req);\n\n\t\/\/ Do stuff\n\t...<\/pre>\n<p style=\"text-align: justify;\">Apr\u00e8s le premier <em>payload<\/em> fini, un requ\u00eate HTTP est envoy\u00e9e au serveur en utilisant le <em>template<\/em> suivant&nbsp;: <em>http:\/\/go.henkaku.me\/x?a1=stack_base&amp;a2=webkit_base&amp;a3=libkernel_base&amp;a4=libc_base&amp;&amp;a5=libhttp_base&amp;a6=net_base&amp;a7=driveruser_base&amp;<\/em><br \/>Par exemple&nbsp;: <em>http:\/\/go.henkaku.me\/x?a1=89f02000&amp;a2=81b009a0&amp;a3=e000dd00&amp;a4=811c0cc0&amp;&amp;a5=e0607c80&amp;a6=e01302b0&amp;a7=e0047bf0&amp;<\/em><\/p>\n<p style=\"text-align: justify;\">Le script \"x\" c\u00f4t\u00e9 serveur collecte l'adresse de base de chaque module et g\u00e9n\u00e8re un second payload qui sera lanc\u00e9 sur Vita.<\/p>\n<h4 style=\"text-align: justify;\">Troisi\u00e8me \u00e9tape&nbsp;: ROP payload 2<\/h4>\n<p>Le second <em>payload<\/em> est compos\u00e9 d'une autre cha\u00eene ROP et de code ARM obfusqu\u00e9.<br \/>Une analyse pr\u00e9liminaire de ce payload r\u00e9v\u00e8le des choses int\u00e9ressantes&nbsp;:<\/p>\n<pre class=\"lang:default decode:true \">\tstrcpy(stack_base&nbsp;+&nbsp;0x000086B4, \"sdstor0:\");\n\tstrcpy(stack_base&nbsp;+&nbsp;0x000086CC, \"xmc-lp-ign-userext\");\n\n\t\/\/ Do stuff\n\t...\n\n\tstrcpy(stack_base&nbsp;+&nbsp;0x000086E4, \"molecule0:\");\n\n\tSceLibKernel_a4ad(\"molecule0:\");\n\tSceLibKernel_a55d(\"sdstor0:\", 0x00000005, \"xmc-lp-ign-userext\", 0x00000014);\n\t\n\t\/\/ Do stuff\n\t...\n\n\tint thread1_id&nbsp;=&nbsp;sceKernelCreateThread(\"pln\", SceWebkit_base&nbsp;+&nbsp;0x000054C8, 0x10000100, 0x00002000, 0x00000000, 0x000003FF, 0x00000000);\t\n\n\tSceLibKernel_a791(thread1_id, 0x7C);\n\t\n\t\/\/ Do stuff\t\n\t...\n\t\n\tint thread2_id&nbsp;=&nbsp;sceKernelCreateThread(\"mhm\", SceWebkit_base&nbsp;+&nbsp;0x000054C8, 0x10000100, 0x00002000, 0x00000000, 0x00000000, 0x00000000);\n\n\t\/\/ Do stuff\n\t...\n\n\tSceNet_27E1(\"x\", 0x00000002, 0x00000001);\n\tSceNet_27E1(\"x\", 0x00000002, 0x00000001);\n\tSceNet_27E1(\"x\", 0x00000002, 0x00000001);\n\tSceNet_27E1(\"x\", 0x00000002, 0x00000001);\n\tSceNet_27E1(\"x\", 0x00000002, 0x00000001);\n\t\n\t\/\/ Do stuff\n\t...\n\t\n\tSceNet_27E1(\"sss\", 0x00000002, 0x00000001);\t\n\tSceNet_27E1(\"tst\", 0x00000002, 0x00000007);\t\n\tSceNet_27E1(\"tmp\", 0x00000002, 0x00000001);\n\n\t\/\/ Do stuff\n\t...<\/pre>\n<p style=\"text-align: justify;\">\u00c0 suivre...<\/p>\n<p style=\"text-align: justify;\">~ H.<\/p>\n<hr \/>\n<p style=\"text-align: justify;\">Si vous n'avez rien compris, sachez que c'est normal, nous non plus. \u00c7a prouve que c'est bien assez complexe et s\u00e9curis\u00e9 xD<\/p>\n<p style=\"text-align: justify;\">Mais quel est l'int\u00e9r\u00eat de <em>reverse enginerer<\/em> (oui, c'est fran\u00e7ais&#8239;! Enfin...) <strong>HENkaku<\/strong>&#8239;? Et bien il pourrait en ressortir un portage sur d'autres versions du firmware, mais aussi pouvoir h\u00e9berger <strong>HENkaku<\/strong> n'importe o\u00f9&nbsp;: en local bien s\u00fbr, mais aussi sur d'autres sites internet <a href=\"https:\/\/www.customprotocol.com\/underground\/vita-site-henkaku-indisponible-hier\/\" target=\"_blank\" rel=\"noopener noreferrer\">au cas o\u00f9 un incident surviendrait<\/a>.<\/p>\n<p style=\"text-align: justify;\">Que des bonnes choses, non&#8239;? Et bien en fait pas tout \u00e0 fait... En effet, au moment o\u00f9 nous \u00e9crivons ces lignes, les ing\u00e9nieurs en s\u00e9curit\u00e9 de <em>Sony<\/em> (mais si, vous savez, les seuls personnes de la bo\u00eete a avoir fait leur taf sur la Vita&#8239;!) sont s\u00fbrement en train de chercher \u00e0 comprendre comment <strong>HENkaku<\/strong> fonctionne, et surtout comment le patcher. Si quelqu'un arrivait \u00e0 le <em>reverse enginerer, Sony<\/em> en profiterait&#8239;!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Essayez de comprendre comment l'exploit HENKaku fonctionne.<\/p>\n","protected":false},"author":460,"featured_media":11023,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,29,30],"tags":[930,2564],"plateformes":[917,854],"genres":[2541,2540],"developpeurs":[],"editeurs":[],"types":[914,859,864],"sources":[2563],"class_list":["post-11020","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","category-news-underground","category-underground","tag-henkaku","tag-reverse-enginerer","plateformes-ps-tv","plateformes-ps-vita","genres-homebrew-enabler-hen","genres-hen-ps-vita","types-hack-ps-tv","types-hack-vita","types-news","sources-httpwololo-net20160804henkaku-exploit-partially-reverse-engineered-explained"],"yoast_head":"\n<title>[VITA] HENkaku partiellement d\u00e9crypt\u00e9 ! - Custom Protocol<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.customprotocol.com\/vita-henkaku-partiellement-decrypte\/\" \/>\n<meta property=\"og:locale\" content=\"fr_CA\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[VITA] HENkaku partiellement d\u00e9crypt\u00e9 ! - Custom Protocol\" \/>\n<meta property=\"og:description\" content=\"Essayez de comprendre comment l&#039;exploit HENKaku fonctionne.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.customprotocol.com\/vita-henkaku-partiellement-decrypte\/\" \/>\n<meta property=\"og:site_name\" content=\"Custom Protocol\" \/>\n<meta property=\"article:published_time\" content=\"2016-08-04T17:19:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.customprotocol.com\/medias\/2016\/08\/henkaku-molecule-imgwind-modifiee.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Tuxbot123\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tuxbot123\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimation du temps de lecture\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.customprotocol.com\/vita-henkaku-partiellement-decrypte\/\",\"url\":\"https:\/\/www.customprotocol.com\/vita-henkaku-partiellement-decrypte\/\",\"name\":\"[VITA] HENkaku partiellement d\u00e9crypt\u00e9 ! - Custom Protocol\",\"isPartOf\":{\"@id\":\"https:\/\/www.customprotocol.com\/#website\"},\"datePublished\":\"2016-08-04T17:19:26+00:00\",\"dateModified\":\"2016-08-04T17:19:26+00:00\",\"author\":{\"@id\":\"https:\/\/www.customprotocol.com\/#\/schema\/person\/6f47d32e6bd88c0b40d46fc97e35cc8d\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.customprotocol.com\/vita-henkaku-partiellement-decrypte\/#breadcrumb\"},\"inLanguage\":\"fr-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.customprotocol.com\/vita-henkaku-partiellement-decrypte\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.customprotocol.com\/vita-henkaku-partiellement-decrypte\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.customprotocol.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[VITA] HENkaku partiellement d\u00e9crypt\u00e9&#8239;!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.customprotocol.com\/#website\",\"url\":\"https:\/\/www.customprotocol.com\/\",\"name\":\"Custom Protocol\",\"description\":\"Site d&#039;hack-tualit\u00e9 et de tutoriels sur la customisation de consoles et appareils (homebrews, plugins, \u00e9mulation...)\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.customprotocol.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-CA\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.customprotocol.com\/#\/schema\/person\/6f47d32e6bd88c0b40d46fc97e35cc8d\",\"name\":\"Tuxbot123\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-CA\",\"@id\":\"https:\/\/www.customprotocol.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9544663d7b3040cdcd4b6131f5e72fbefce551d539f835ee99dd927095353420?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9544663d7b3040cdcd4b6131f5e72fbefce551d539f835ee99dd927095353420?s=96&d=mm&r=g\",\"caption\":\"Tuxbot123\"},\"url\":\"https:\/\/www.customprotocol.com\/auteur\/tuxbot123\/\"}]}<\/script>\n","yoast_head_json":{"title":"[VITA] HENkaku partiellement d\u00e9crypt\u00e9 ! - Custom Protocol","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.customprotocol.com\/vita-henkaku-partiellement-decrypte\/","og_locale":"fr_CA","og_type":"article","og_title":"[VITA] HENkaku partiellement d\u00e9crypt\u00e9 ! - Custom Protocol","og_description":"Essayez de comprendre comment l'exploit HENKaku fonctionne.","og_url":"https:\/\/www.customprotocol.com\/vita-henkaku-partiellement-decrypte\/","og_site_name":"Custom Protocol","article_published_time":"2016-08-04T17:19:26+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.customprotocol.com\/medias\/2016\/08\/henkaku-molecule-imgwind-modifiee.png","type":"image\/png"}],"author":"Tuxbot123","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Tuxbot123","Estimation du temps de lecture":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.customprotocol.com\/vita-henkaku-partiellement-decrypte\/","url":"https:\/\/www.customprotocol.com\/vita-henkaku-partiellement-decrypte\/","name":"[VITA] HENkaku partiellement d\u00e9crypt\u00e9 ! - Custom Protocol","isPartOf":{"@id":"https:\/\/www.customprotocol.com\/#website"},"datePublished":"2016-08-04T17:19:26+00:00","dateModified":"2016-08-04T17:19:26+00:00","author":{"@id":"https:\/\/www.customprotocol.com\/#\/schema\/person\/6f47d32e6bd88c0b40d46fc97e35cc8d"},"breadcrumb":{"@id":"https:\/\/www.customprotocol.com\/vita-henkaku-partiellement-decrypte\/#breadcrumb"},"inLanguage":"fr-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.customprotocol.com\/vita-henkaku-partiellement-decrypte\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.customprotocol.com\/vita-henkaku-partiellement-decrypte\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.customprotocol.com\/"},{"@type":"ListItem","position":2,"name":"[VITA] HENkaku partiellement d\u00e9crypt\u00e9&#8239;!"}]},{"@type":"WebSite","@id":"https:\/\/www.customprotocol.com\/#website","url":"https:\/\/www.customprotocol.com\/","name":"Custom Protocol","description":"Site d&#039;hack-tualit\u00e9 et de tutoriels sur la customisation de consoles et appareils (homebrews, plugins, \u00e9mulation...)","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.customprotocol.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-CA"},{"@type":"Person","@id":"https:\/\/www.customprotocol.com\/#\/schema\/person\/6f47d32e6bd88c0b40d46fc97e35cc8d","name":"Tuxbot123","image":{"@type":"ImageObject","inLanguage":"fr-CA","@id":"https:\/\/www.customprotocol.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9544663d7b3040cdcd4b6131f5e72fbefce551d539f835ee99dd927095353420?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9544663d7b3040cdcd4b6131f5e72fbefce551d539f835ee99dd927095353420?s=96&d=mm&r=g","caption":"Tuxbot123"},"url":"https:\/\/www.customprotocol.com\/auteur\/tuxbot123\/"}]}},"_links":{"self":[{"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/posts\/11020","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/users\/460"}],"replies":[{"embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/comments?post=11020"}],"version-history":[{"count":0,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/posts\/11020\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/media\/11023"}],"wp:attachment":[{"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/media?parent=11020"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/categories?post=11020"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/tags?post=11020"},{"taxonomy":"plateformes","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/plateformes?post=11020"},{"taxonomy":"genres","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/genres?post=11020"},{"taxonomy":"developpeurs","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/developpeurs?post=11020"},{"taxonomy":"editeurs","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/editeurs?post=11020"},{"taxonomy":"types","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/types?post=11020"},{"taxonomy":"sources","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/sources?post=11020"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}