{"id":12756,"date":"2017-03-16T13:33:19","date_gmt":"2017-03-16T12:33:19","guid":{"rendered":"https:\/\/www.customprotocol.com\/?p=12756"},"modified":"2017-03-16T13:33:19","modified_gmt":"2017-03-16T12:33:19","slug":"switch-pegaswitch-toolkit-exploit-webkit-developpeurs","status":"publish","type":"post","link":"https:\/\/www.customprotocol.com\/switch-pegaswitch-toolkit-exploit-webkit-developpeurs\/","title":{"rendered":"[Switch] PegaSwitch&nbsp;: un toolkit d&#8217;exploit WebKit pour les d\u00e9veloppeurs"},"content":{"rendered":"<p style=\"text-align: justify;\">Les <em>hackers<\/em> sont toujours pr\u00eats, d\u00e8s la sortie d'une nouvelle console, \u00e0 trifouiller et bidouiller jusqu'aux moindres recoins afin de trouver et exploiter des failles. Le b\u00e9b\u00e9 de <em>Nintendo<\/em>, la Switch, ne d\u00e9roge pas \u00e0 la r\u00e8gle&nbsp;: alors qu'une <a href=\"https:\/\/www.customprotocol.com\/underground\/switch-nintendo-switch-deja-hackee-huit-jours-apres-sortie\/\" target=\"_blank\" rel=\"noopener noreferrer\">faille <em>WebKit<\/em> vient d'\u00eatre trouv\u00e9e<\/a>, voil\u00e0 que la <em>Team ReSwitched<\/em> publie d\u00e9j\u00e0 son <em>toolkit<\/em> (bo\u00eete \u00e0 outils), destin\u00e9s aux d\u00e9veloppeurs exp\u00e9riment\u00e9s souhaitant profiter et utiliser l'<em>exploit WebKit<\/em>.<\/p>\n<figure id=\"attachment_12757\" aria-describedby=\"caption-attachment-12757\" style=\"width: 764px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.customprotocol.com\/medias\/2017\/03\/pegaswitch-exploit-webkit-toolkit-developpeurs-hackers-logo-vignette.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-12757\" src=\"https:\/\/www.customprotocol.com\/medias\/2017\/03\/pegaswitch-exploit-webkit-toolkit-developpeurs-hackers-logo-vignette-764x490.png\" alt=\"\" width=\"764\" height=\"490\" \/><\/a><figcaption id=\"caption-attachment-12757\" class=\"wp-caption-text\">Logo de <b>PegaSwitch<\/b><\/p>\n<p><em><a href=\"https:\/\/pegaswitch.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Cr\u00e9dit image&nbsp;: Team ReSwitched<\/a><\/em><\/figcaption><\/figure>\n<hr \/>\n<p style=\"text-align: justify;\">Comme expliqu\u00e9 plus haut, <strong>PegaSwitch<\/strong> est un <em>toolkit <\/em>(bo\u00eete \u00e0 outils en fran\u00e7ais) pour les d\u00e9veloppeurs. Il permet d'ores et d\u00e9j\u00e0 de lire\/\u00e9crire dans la m\u00e9moire, appeler des fonctions natives et explorer les fonctionnalit\u00e9s de la Switch \u00e0 partir du processus <em>WebKit<\/em>. Il ne permet pas encore de coder des <em>homebrews<\/em>, mais a surtout \u00e9t\u00e9 con\u00e7u pour permettre \u00e0 d'autres <em>hackers<\/em> de travailler ensemble vers cet objectif.<\/p>\n<h4 style=\"text-align: justify;\"><strong><span style=\"text-decoration: underline;\">Installation<\/span><\/strong><\/h4>\n<p style=\"text-align: justify;\">Installez <em>Node<\/em>, <em>Python 2.7<\/em> et <em>Ruby<\/em>.<\/p>\n<p style=\"text-align: justify;\">Ouvrez les ports <em>UDP 53<\/em> ainsi que <em>TCP 80<\/em> et <em>8100<\/em> dans le pare-feu.<\/p>\n<p style=\"text-align: justify;\">Lancez <em>npm install<\/em>, <em>pip2 install flask<\/em>, <em>gem install rubydns<\/em>.<\/p>\n<p style=\"text-align: justify;\">D\u00e9marrez le serveur DNS avec la commande suivante&nbsp;: (<em>drop sudo<\/em> pour Windows)&nbsp;:<\/p>\n<pre class=\"lang:sh decode:true\">sudo ruby rdns.rb&nbsp;$yourlocalIP<\/pre>\n<p style=\"text-align: justify;\">Lancez le serveur <em>web<\/em>&nbsp;:<\/p>\n<pre class=\"lang:sh decode:true\">sudo python serve.py<\/pre>\n<p style=\"text-align: justify;\">Lancez <em>watchify\u00a0<\/em>:<\/p>\n<pre class=\"lang:sh decode:true\">npm start<\/pre>\n<p style=\"text-align: justify;\">D\u00e9marrez le <em>shell<\/em> avec&nbsp;:<\/p>\n<pre class=\"lang:sh decode:true\">node debug.js<\/pre>\n<p style=\"text-align: justify;\">Pointez votre Switch vers le serveur DNS.<\/p>\n<p style=\"text-align: justify;\">Acc\u00e9dez \u00e0 l'<em>eShop<\/em> pour d\u00e9clencher le portail captif.<\/p>\n<p style=\"text-align: justify;\">Regardez la connexion au <em>shell<\/em>.<\/p>\n<h4 style=\"text-align: justify;\"><strong><span style=\"text-decoration: underline;\">Utilisation<\/span><\/strong><\/h4>\n<p style=\"text-align: justify;\">La mani\u00e8re par d\u00e9faut de travailler avec <strong>PegaSwitch<\/strong> se fait via le <em>shell<\/em>. Tapez <em>help<\/em> une fois que la Switch sera connect\u00e9e pour obtenir une liste des commandes disponibles.<\/p>\n<figure id=\"attachment_12760\" aria-describedby=\"caption-attachment-12760\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.customprotocol.com\/medias\/2017\/03\/pegaswitch-shell-help-commande.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-12760\" src=\"https:\/\/www.customprotocol.com\/medias\/2017\/03\/pegaswitch-shell-help-commande-500x263.png\" alt=\"\" width=\"500\" height=\"263\" \/><\/a><figcaption id=\"caption-attachment-12760\" class=\"wp-caption-text\">Voil\u00e0 ce que vous devriez voir en lan\u00e7ant la commande <em>help<\/em> dans le <em>shell<\/em> de <b>PegaSwitch<\/b><\/figcaption><\/figure>\n<p style=\"text-align: justify;\">Pour d\u00e9sactiver le <em>shell<\/em> (et travailler simplement avec l'<em>API<\/em>), commentez la ligne suivante dans le fichier \"exploit\/main.js\"&nbsp;:<\/p>\n<pre class=\"lang:sh decode:true\">setupListener(sc);<\/pre>\n<h4 style=\"text-align: justify;\"><strong><span style=\"text-decoration: underline;\">API<\/span><\/strong><\/h4>\n<h5 style=\"text-align: justify;\"><a id=\"user-content-conventions\" class=\"anchor\" href=\"https:\/\/github.com\/reswitched\/PegaSwitch#conventions\"><\/a><strong><span style=\"text-decoration: underline;\">Conventions<\/span><\/strong><\/h5>\n<p style=\"text-align: justify;\">Les valeurs de <em>64 bits<\/em> (les pointeurs, principalement) sont repr\u00e9sent\u00e9es par un tableau <em>JavaScript<\/em> contenant <em>[lo, hi]<\/em>, o\u00f9 chacun fait 32 <em>bits<\/em>.<\/p>\n<h5 style=\"text-align: justify;\"><strong><span style=\"text-decoration: underline;\">Fonctions utilitaires<\/span><\/strong><\/h5>\n<ul style=\"text-align: justify;\">\n<li><code>paddr(address)<\/code> -- Convertit une valeur de <em>64 bits<\/em> en hexad\u00e9cimal<\/li>\n<li><code>add2(a, b)<\/code> -- Ajoute deux valeurs de <em>64 bits<\/em> ou ajoute une valeur de <em>64 bits<\/em> plus\u00a0 un nombre<\/li>\n<li><code>nullptr(address)<\/code> -- Retourne\u00a0<em>true<\/em> si le valeur de <em>64 bits<\/em> donn\u00e9e vaut 0<\/li>\n<li><code>eq(a, b)<\/code> -- Retourne <em>true<\/em> si les deux valeurs de <em>64 bits<\/em> sont \u00e9gales<\/li>\n<li><code>parseAddr(address)<\/code> -- Prend une cha\u00eene de caract\u00e8res hexad\u00e9cimale et le\u00a0<em>parse<\/em> en une valeur de <em>64 bits'<\/em><\/li>\n<\/ul>\n<h5 style=\"text-align: justify;\"><a id=\"user-content-sploitcore\" class=\"anchor\" href=\"https:\/\/github.com\/reswitched\/PegaSwitch#sploitcore\"><\/a><strong><span style=\"text-decoration: underline;\">SploitCore<\/span><\/strong><\/h5>\n<p style=\"text-align: justify;\"><em>SploitCore<\/em> est le point central de <strong>PegaSwitch<\/strong>, fournissant toutes les fonctionnalit\u00e9s de base et la partie la plus importante de l'<em>API<\/em>.<\/p>\n<ul>\n<li><code>dumpaddr(address, count)<\/code> -- Prend une adresse et un nombre de <em>32 bits<\/em> pour se connecter<\/li>\n<li><code>read4(address, offset)<\/code> -- Lit une valeur de <em>32 bits<\/em> depuis <code>address&nbsp;+&nbsp;offset * 4<\/code><\/li>\n<li><code>read8(address, offset)<\/code> -- Lit une valeur de <em>64 bits<\/em> depuis <code>address&nbsp;+&nbsp;offset * 4<\/code><\/li>\n<li><code>write4(value, address, offset)<\/code> -- \u00c9crit une valeur de\u00a0<em>32 bits<\/em> vers <code>address&nbsp;+&nbsp;offset * 4<\/code><\/li>\n<li><code>write8(value, address, offset)<\/code> -- \u00c9crit une valeur de <em>64 bits<\/em> vers <code>address&nbsp;+&nbsp;offset * 4<\/code><\/li>\n<li><code>memview(address, size, cb)<\/code> -- Appelle<em>\u00a0<\/em><code>cb<\/code> avec un <em>ArrayBuffer<\/em> pointant vers la \"vue\" de la m\u00e9moire demand\u00e9e. NE GARDEZ PAS cette vue ou tout objet l'utilisant autour, ou vous allez remplir le GC et bloquer votre Switch<\/li>\n<li><code>getAddr(obj)<\/code> -- Retourne l'adresse d'un objet <em>JavaScript<\/em> <code>donn\u00e9<\/code><\/li>\n<li><code>mref(offset)<\/code> -- Retourne l'adresse du module principal (le binaire de l'application lui-m\u00eame) plus l'<em>offset<\/em> (de <em>32 bits<\/em>) donn\u00e9<\/li>\n<li><code>getBase()<\/code> -- Retourne l'adresse de base de <em>WebKit<\/em><\/li>\n<li><code>getSP()<\/code> -- Retourne le pointeur\u00a0<em>stack<\/em> actuel (<span id=\"result_box\" class=\"short_text\" lang=\"fr\"><span class=\"\">actuel comme un appel de fonction en JS<\/span><\/span>), principalement utiles pour les cha\u00eenes <em>JOP<\/em>\/<em>ROP<\/em><\/li>\n<li><code>malloc(bytes)<\/code> -- Retourne l'addresse d'un <em>buffer<\/em> allou\u00e9<\/li>\n<li><code>free(addr)<\/code> -- Lib\u00e8re (<em>free<\/em>) un <em>buffer<\/em> allou\u00e9<\/li>\n<li><code>bridge<\/code> and <code>call<\/code> -- Documentation plus bas<\/li>\n<li><code>svc(id, registers, dump_regs)<\/code> -- Appelle un SVC sp\u00e9cifique, en passant un tableau de registres et optionnellement en <em>dumpant<\/em> tous les registres (mettre\u00a0<code>dump_regs<\/code> sur <em>true<\/em> ou <em>false<\/em>)<\/li>\n<li><code>getTLS()<\/code> -- <span id=\"result_box\" class=\"short_text\" lang=\"fr\"><span class=\"\">Obtient l'adresse de TLS<\/span><\/span><\/li>\n<li><code>str2buf(str)<\/code> -- <span id=\"result_box\" class=\"\" lang=\"fr\"><span class=\"\">Alloue un <em>buffer<\/em> pour une cha\u00eene termin\u00e9e par un\u00a0<em>null<\/em> et retourne l'adresse<\/span><\/span><\/li>\n<li><code>readString(addr, length)<\/code> -- Lit une cha\u00eene de caract\u00e8res depuis <code>addr<\/code>. Si la longueur\u00a0<code>length<\/code> n'est pas pass\u00e9e en argument ou vaut -1, la fonction s'attend \u00e0 ce que la cha\u00eene de caract\u00e8re soit termin\u00e9e par un <em>null<\/em><\/li>\n<li><code>gc()<\/code> -- Force le \"ramassage des ordures\" (<em>garbage collection<\/em>).<\/li>\n<\/ul>\n<h5><a id=\"user-content-call\" class=\"anchor\" href=\"https:\/\/github.com\/reswitched\/PegaSwitch#call\"><\/a><strong><span style=\"text-decoration: underline;\">Call<\/span><\/strong><\/h5>\n<p><code>sploitcore.call<\/code>\u00a0permet d'appeler des fonctions natives avec l'adresse. Il prend les param\u00e8tres suivants, le premier \u00e9tant toujours n\u00e9cessaire&nbsp;:<\/p>\n<ul>\n<li><code>address<\/code> - L'adresse de la fonction. Soit un <em>offset<\/em> de <em>32 bits<\/em> de l'adresse du module principal, soit un pointeur absolu de <em>64 bits<\/em><\/li>\n<li><code>args<\/code> - Un tableau d'arguments, qui ira dans <em>x0+<\/em><\/li>\n<li><code>fargs<\/code> - Un tableau de nombres <em>float<\/em>, qui ira dans <em>d0+<\/em><\/li>\n<li><code>registers<\/code> - Un tableau de registres bruts (<em>x16<\/em> et <em>x30<\/em> ne sont pas assignables)<\/li>\n<li><code>dump_regs<\/code> - Un bool\u00e9en pour d\u00e9finir si les registres doivent \u00eatre <em>dump\u00e9s<\/em> au retour.<\/li>\n<\/ul>\n<p>Cette fonction retourne toujours la valeur de <em>64 bits<\/em> dans in <em>x0<\/em>.<\/p>\n<h5><a id=\"user-content-bridge\" class=\"anchor\" href=\"https:\/\/github.com\/reswitched\/PegaSwitch#bridge\"><\/a><span style=\"text-decoration: underline;\"><strong>Bridge<\/strong><\/span><\/h5>\n<p><em>Bridge<\/em> vous permet d'envelopper une fonction native dans une fonction <em>JavaScript<\/em>. Exemple&nbsp;:<code> <\/code><\/p>\n<pre class=\"lang:js decode:true\">var strlen&nbsp;=&nbsp;sc.bridge(0x43A6E8, int, char_p);\nlog(strlen('foo')); \/\/ Logs 3 to the console<\/pre>\n<p>Le premier param\u00e8tre est l'adresse (m\u00eame format que <em>call<\/em>), le second est le type de la valeur de retour, le reste sont les arguments.<\/p>\n<p>Voici les types valides&nbsp;:<\/p>\n<ul>\n<li><code>null<\/code> -- Utilis\u00e9 pour les fonctions de type <em>void<\/em><\/li>\n<li><code>int<br \/><\/code><\/li>\n<li><code>void_p<\/code> -- <span id=\"result_box\" class=\"short_text\" lang=\"fr\"><span class=\"\">Pointeur arbitraire<\/span><\/span><\/li>\n<li><code>char_p<\/code> -- Pointeur sur cha\u00eene de caract\u00e8res<\/li>\n<li><code>float<\/code> -- Argument flottant (actuellement uniquement pris en charge pour les arguments, pas pour les retours).<\/li>\n<\/ul>\n<h4 style=\"text-align: justify;\"><span style=\"text-decoration: underline;\"><strong>Cr\u00e9dits<\/strong><\/span><\/h4>\n<ul>\n<li style=\"text-align: justify;\"><em>Daeken<\/em>&#8239;;<\/li>\n<li style=\"text-align: justify;\"><em>Dazzozo<\/em>&#8239;;<\/li>\n<li style=\"text-align: justify;\"><em>SciresM<\/em>&#8239;;<\/li>\n<li style=\"text-align: justify;\"><em>yupferris<\/em>&#8239;;<\/li>\n<li style=\"text-align: justify;\"><em>SomeoneWeird<\/em>&#8239;;<\/li>\n<li style=\"text-align: justify;\"><em>Normmatt<\/em>&#8239;;<\/li>\n<li style=\"text-align: justify;\"><em>crowell<\/em>&#8239;;<\/li>\n<li style=\"text-align: justify;\"><em>Jaames<\/em>&#8239;;<\/li>\n<li style=\"text-align: justify;\"><em>shutterbug2000<\/em>&#8239;;<\/li>\n<li style=\"text-align: justify;\">Et bien d'autres de la <em>Team ReSwitched<\/em>...<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>La Team ReSwitched vient de concocter PegaSwitch, une jolie bo\u00eete d'outils pour les d\u00e9veloppeurs, exploitant une faille WebKit de la Switch.<\/p>\n","protected":false},"author":481,"featured_media":12757,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,29,71,30],"tags":[2851],"plateformes":[983],"genres":[1105,872,2838,2848,2854,2855],"developpeurs":[2852],"editeurs":[2853],"types":[978,864],"sources":[2849,2850],"class_list":["post-12756","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","category-news-underground","category-outils","category-underground","tag-pegaswitch","plateformes-switch","genres-exploit-webkit","genres-exploits","genres-exploits-switch","genres-exploits-webkit-switch","genres-toolkits","genres-toolkits-switch","developpeurs-team-reswitched","editeurs-team-reswitched","types-hack-switch","types-news","sources-httpsgbatemp-netthreadspegaswitch-a-webkit-exploit-with-support-for-jop-and-function-calling-464479","sources-httpsgithub-comreswitchedpegaswitch"],"yoast_head":"\n<title>PegaSwitch : un toolkit d&#039;exploit WebKit pour les d\u00e9veloppeurs<\/title>\n<meta name=\"description\" content=\"La Team ReSwitched vient de concocter PegaSwitch, une jolie bo\u00eete d&#039;outils pour les d\u00e9veloppeurs, exploitant une faille WebKit de la Switch.\" \/>\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\/switch-pegaswitch-toolkit-exploit-webkit-developpeurs\/\" \/>\n<meta property=\"og:locale\" content=\"fr_CA\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PegaSwitch : un toolkit d&#039;exploit WebKit pour les d\u00e9veloppeurs\" \/>\n<meta property=\"og:description\" content=\"La Team ReSwitched vient de concocter PegaSwitch, une jolie bo\u00eete d&#039;outils pour les d\u00e9veloppeurs, exploitant une faille WebKit de la Switch.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.customprotocol.com\/switch-pegaswitch-toolkit-exploit-webkit-developpeurs\/\" \/>\n<meta property=\"og:site_name\" content=\"Custom Protocol\" \/>\n<meta property=\"article:published_time\" content=\"2017-03-16T12:33:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.customprotocol.com\/medias\/2017\/03\/pegaswitch-exploit-webkit-toolkit-developpeurs-hackers-logo-vignette.png\" \/>\n\t<meta property=\"og:image:width\" content=\"780\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Wirus\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/HackerGen\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Wirus\" \/>\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\/switch-pegaswitch-toolkit-exploit-webkit-developpeurs\/\",\"url\":\"https:\/\/www.customprotocol.com\/switch-pegaswitch-toolkit-exploit-webkit-developpeurs\/\",\"name\":\"PegaSwitch : un toolkit d'exploit WebKit pour les d\u00e9veloppeurs\",\"isPartOf\":{\"@id\":\"https:\/\/www.customprotocol.com\/#website\"},\"datePublished\":\"2017-03-16T12:33:19+00:00\",\"dateModified\":\"2017-03-16T12:33:19+00:00\",\"author\":{\"@id\":\"https:\/\/www.customprotocol.com\/#\/schema\/person\/e2f5c3e6cbb948e59756b98bed512cf9\"},\"description\":\"La Team ReSwitched vient de concocter PegaSwitch, une jolie bo\u00eete d'outils pour les d\u00e9veloppeurs, exploitant une faille WebKit de la Switch.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.customprotocol.com\/switch-pegaswitch-toolkit-exploit-webkit-developpeurs\/#breadcrumb\"},\"inLanguage\":\"fr-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.customprotocol.com\/switch-pegaswitch-toolkit-exploit-webkit-developpeurs\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.customprotocol.com\/switch-pegaswitch-toolkit-exploit-webkit-developpeurs\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.customprotocol.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Switch] PegaSwitch&nbsp;: un toolkit d&#8217;exploit WebKit pour les d\u00e9veloppeurs\"}]},{\"@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\/e2f5c3e6cbb948e59756b98bed512cf9\",\"name\":\"Wirus\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-CA\",\"@id\":\"https:\/\/www.customprotocol.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ff65bb0fba0be9639885c04a3ed7d8a895a98260fc23f283286dc9cf20bf3871?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ff65bb0fba0be9639885c04a3ed7d8a895a98260fc23f283286dc9cf20bf3871?s=96&d=mm&r=g\",\"caption\":\"Wirus\"},\"description\":\"Avez-vous d\u00e9j\u00e0 vu un gentil virus ? Maintenant, oui.\",\"sameAs\":[\"https:\/\/hackergen.com\",\"https:\/\/twitter.com\/https:\/\/twitter.com\/HackerGen\",\"https:\/\/www.youtube.com\/user\/Wirusalization\"],\"url\":\"https:\/\/www.customprotocol.com\/auteur\/wirus\/\"}]}<\/script>\n","yoast_head_json":{"title":"PegaSwitch : un toolkit d'exploit WebKit pour les d\u00e9veloppeurs","description":"La Team ReSwitched vient de concocter PegaSwitch, une jolie bo\u00eete d'outils pour les d\u00e9veloppeurs, exploitant une faille WebKit de la Switch.","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\/switch-pegaswitch-toolkit-exploit-webkit-developpeurs\/","og_locale":"fr_CA","og_type":"article","og_title":"PegaSwitch : un toolkit d'exploit WebKit pour les d\u00e9veloppeurs","og_description":"La Team ReSwitched vient de concocter PegaSwitch, une jolie bo\u00eete d'outils pour les d\u00e9veloppeurs, exploitant une faille WebKit de la Switch.","og_url":"https:\/\/www.customprotocol.com\/switch-pegaswitch-toolkit-exploit-webkit-developpeurs\/","og_site_name":"Custom Protocol","article_published_time":"2017-03-16T12:33:19+00:00","og_image":[{"width":780,"height":500,"url":"https:\/\/www.customprotocol.com\/medias\/2017\/03\/pegaswitch-exploit-webkit-toolkit-developpeurs-hackers-logo-vignette.png","type":"image\/png"}],"author":"Wirus","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/HackerGen","twitter_misc":{"\u00c9crit par":"Wirus","Estimation du temps de lecture":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.customprotocol.com\/switch-pegaswitch-toolkit-exploit-webkit-developpeurs\/","url":"https:\/\/www.customprotocol.com\/switch-pegaswitch-toolkit-exploit-webkit-developpeurs\/","name":"PegaSwitch : un toolkit d'exploit WebKit pour les d\u00e9veloppeurs","isPartOf":{"@id":"https:\/\/www.customprotocol.com\/#website"},"datePublished":"2017-03-16T12:33:19+00:00","dateModified":"2017-03-16T12:33:19+00:00","author":{"@id":"https:\/\/www.customprotocol.com\/#\/schema\/person\/e2f5c3e6cbb948e59756b98bed512cf9"},"description":"La Team ReSwitched vient de concocter PegaSwitch, une jolie bo\u00eete d'outils pour les d\u00e9veloppeurs, exploitant une faille WebKit de la Switch.","breadcrumb":{"@id":"https:\/\/www.customprotocol.com\/switch-pegaswitch-toolkit-exploit-webkit-developpeurs\/#breadcrumb"},"inLanguage":"fr-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.customprotocol.com\/switch-pegaswitch-toolkit-exploit-webkit-developpeurs\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.customprotocol.com\/switch-pegaswitch-toolkit-exploit-webkit-developpeurs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.customprotocol.com\/"},{"@type":"ListItem","position":2,"name":"[Switch] PegaSwitch&nbsp;: un toolkit d&#8217;exploit WebKit pour les d\u00e9veloppeurs"}]},{"@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\/e2f5c3e6cbb948e59756b98bed512cf9","name":"Wirus","image":{"@type":"ImageObject","inLanguage":"fr-CA","@id":"https:\/\/www.customprotocol.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ff65bb0fba0be9639885c04a3ed7d8a895a98260fc23f283286dc9cf20bf3871?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ff65bb0fba0be9639885c04a3ed7d8a895a98260fc23f283286dc9cf20bf3871?s=96&d=mm&r=g","caption":"Wirus"},"description":"Avez-vous d\u00e9j\u00e0 vu un gentil virus ? Maintenant, oui.","sameAs":["https:\/\/hackergen.com","https:\/\/twitter.com\/https:\/\/twitter.com\/HackerGen","https:\/\/www.youtube.com\/user\/Wirusalization"],"url":"https:\/\/www.customprotocol.com\/auteur\/wirus\/"}]}},"_links":{"self":[{"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/posts\/12756","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\/481"}],"replies":[{"embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/comments?post=12756"}],"version-history":[{"count":0,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/posts\/12756\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/media\/12757"}],"wp:attachment":[{"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/media?parent=12756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/categories?post=12756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/tags?post=12756"},{"taxonomy":"plateformes","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/plateformes?post=12756"},{"taxonomy":"genres","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/genres?post=12756"},{"taxonomy":"developpeurs","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/developpeurs?post=12756"},{"taxonomy":"editeurs","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/editeurs?post=12756"},{"taxonomy":"types","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/types?post=12756"},{"taxonomy":"sources","embeddable":true,"href":"https:\/\/www.customprotocol.com\/api\/wp\/v2\/sources?post=12756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}