{"id":891,"date":"2021-04-15T16:40:45","date_gmt":"2021-04-15T16:40:45","guid":{"rendered":"http:\/\/www.goncalo.pt\/por\/?page_id=891"},"modified":"2023-10-30T01:08:58","modified_gmt":"2023-10-30T01:08:58","slug":"projecto-obfuscador-de-codigo-php","status":"publish","type":"page","link":"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/","title":{"rendered":"Projecto Obfuscador de c\u00f3digo PHP"},"content":{"rendered":"\n<p>Eu n\u00e3o era para criar p\u00e1gina s\u00f3 para este programa, mas como eu tinha um post antigo no Facebook com muito texto sobre ele, resolvi colocar numa p\u00e1gina em separado.<\/p>\n\n\n\n<p>Tal como referi muita vez, para mim Programa\u00e7\u00e3o \u00e9 uma ferramenta.<\/p>\n\n\n\n<p>Um dia vi que me dava jeito obfuscar c\u00f3digo em PHP, e criei o obfuscador.<\/p>\n\n\n\n<p>Isto porque estava num local a trabalhar num projecto em PHP, e havia o interesse em arrendar o projecto a clientes mas sem dar o c\u00f3digo.<\/p>\n\n\n\n<p>O c\u00f3digo teria de ser dado, mas h\u00e1 uma grande diferen\u00e7a entre dar um c\u00f3digo completo, e um c\u00f3digo obfuscado.<\/p>\n\n\n\n<p>Al\u00e9m disso tamb\u00e9m existiam pessoas na empresa que tinham acesso ao c\u00f3digo e que poderiam lev\u00e1-lo para outras empresas, at\u00e9 porque alguns desejavam sair da empresa. E havia interesse em que essas pessoas pudessem editar algum c\u00f3digo mas sem ter acesso a tudo.<\/p>\n\n\n\n<p>Assim, queria um obfuscador de c\u00f3digo PHP, e criei um.<\/p>\n\n\n\n<p>Tal como expliquei noutros lados, eu sempre tentei permanecer an\u00f3nimo at\u00e9 por volta de 2018\/2019 quando comecei a partilhar coisas para fora, e este foi partilhado s\u00f3 entre amigos.<\/p>\n\n\n\n<p>Tinha sido criado em .Net, normalmente usava C# ou VB.Net, e andava a usar .Net porque tinha criado v\u00e1rias librarias para .Net, desde o projecto do Network Pinger em que usei .Net para o fazer \u00e0 pressa, e assim reaproveitava c\u00f3digo.<\/p>\n\n\n\n<p>Notem que um obfuscador PHP \u00e9 mais complexo do que em outras linguagens, porque o PHP at\u00e9 pode ter vari\u00e1veis tipo &#8220;$ola&#8221;, dentro de aspas, entre texto normal (dentro de aspas tamb\u00e9m), entre outras coisas, por isso pode dar mais trabalho interpretar e obfuscar c\u00f3digo nele do que se pensa \u00e0 partida.<\/p>\n\n\n\n<p>Fica aqui o post que partilhei no Facebook entre amigos, em 2013-01-07 sobre o mesmo:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"378\" src=\"http:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/04\/obfuscator-164650_10151338695748850_385699708_n.jpg\" alt=\"Obfuscador de c\u00f3digo PHP, em 2012\/2013...\" class=\"wp-image-892\" srcset=\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/04\/obfuscator-164650_10151338695748850_385699708_n.jpg?v=1631288766 800w, https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/04\/obfuscator-164650_10151338695748850_385699708_n-300x142.jpg?v=1631288766 300w, https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/04\/obfuscator-164650_10151338695748850_385699708_n-768x363.jpg?v=1631288766 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption>Obfuscador de c\u00f3digo PHP, em 2012\/2013&#8230;<\/figcaption><\/figure>\n\n\n\n<p>\u00ab2013-01-07 &#8211; PHP\/Javascript Obfuscator, Freeware criado em .Net.<\/p>\n\n\n\n<p>Finalmente acabei o obfuscador de PHP que tenho vindo a desenvolver aos poucos.<\/p>\n\n\n\n<p>Ele pega numa pasta cheia de ficheiros PHP, de algum projecto, e obfusca o c\u00f3digo todo.<\/p>\n\n\n\n<p>Basicamente, ele faz parsing do c\u00f3digo, reconhece vari\u00e1veis, fun\u00e7\u00f5es, classes, constantes, namespaces, reconhece interliga\u00e7\u00f5es entre ficheiros, ou seja, a vari\u00e1vel $bla de um ficheiro \u00e9 interligada com os restantes ficheiros, e ap\u00f3s ter tudo interligado, faz a obfusca\u00e7\u00e3o total do c\u00f3digo.<\/p>\n\n\n\n<p>Foi testado agora mesmo com um projecto com mais de 150 ficheiros PHP, com dezenas de milhares de linhas de c\u00f3digo, e obfuscou tudo na perfei\u00e7\u00e3o sem erros.<\/p>\n\n\n\n<p>Faz inclusiv\u00e9 a obfusca\u00e7\u00e3o de vari\u00e1veis e nomes dentro de aspas (no PHP \u00e9 comum o uso de vari\u00e1veis dentro de aspas) de forma inteligente, reconhece se s\u00e3o p\u00fablicos ou privadas, e tem muitas op\u00e7\u00f5es de obfusca\u00e7\u00e3o, poder\u00e1 ser feita com encolhimento de nomes, gera\u00e7\u00e3o de nomes aleat\u00f3rios, sequencial ou aleat\u00f3ria, e poder\u00e1 eliminar totalmente enters e espa\u00e7os ou ordenar o c\u00f3digo como se pode ver no ponto \u00e0 esquerda.<\/p>\n\n\n\n<p>\u00c9 certo que poder\u00e3o ainda existir alguns erros.<\/p>\n\n\n\n<p>No exemplo acima, ele obfuscou mais de 100 ficheiros PHP, com dezenas de milhares de linhas de c\u00f3digo, com milhares de vari\u00e1veis, centenas de fun\u00e7\u00f5es, interliga\u00e7\u00f5es, classes, p\u00fablicas e privadas, includes, requires, tudo na perfei\u00e7\u00e3o sem bugs.<\/p>\n\n\n\n<p>Ele reconhece o que \u00e9 vari\u00e1vel nossa ou reservada, classes e fun\u00e7\u00f5es definidas por n\u00f3s ou n\u00e3o definidas, no fundo este programa que copiei faz praticamente o mesmo que um interpretador PHP, mas em vez de executar o c\u00f3digo, obfusca-o.<\/p>\n\n\n\n<p>Poder\u00e3o ainda existir bugs \u00e9 certo, mas ficar\u00e1 assim em beta testing, e s\u00f3 daqui a meses quando o pessoal testar e vir que n\u00e3o tem erros, \u00e9 que lan\u00e7arei uma vers\u00e3o final e bonita em Freeware na Internet.<\/p>\n\n\n\n<p>N\u00e3o consegui largar este projecto antes, finalmente terminei, n\u00e3o foi na data simb\u00f3lica que quis, mas foi no dia 2013-01-07, gosto do n\u00famero 07 e ser\u00e1 hoje que retomarei o projecto &#8220;Robin Hood&#8221;. <img loading=\"lazy\" decoding=\"async\" alt=\"?\" src=\"https:\/\/static.xx.fbcdn.net\/images\/emoji.php\/v9\/t20\/1\/16\/1f61c.png\" width=\"16\" height=\"16\"><\/p>\n\n\n\n<p>Como resultado, ficam com o c\u00f3digo totalmente obfuscado, e ningu\u00e9m se dar\u00e1 ao trabalho de desobfuscar um c\u00f3digo de dezenas de milhares de linhas encolhidas numa s\u00f3 linha com nomes de vari\u00e1veis e m\u00e9todos aleat\u00f3rios, sem coment\u00e1rios, etc. \u00c9 ideal para proteger c\u00f3digo.<\/p>\n\n\n\n<p>Tem tamb\u00e9m a op\u00e7\u00e3o de encolher s\u00edlabas de nomes, fazendo com que uma fun\u00e7\u00e3o de nome &#8220;dadosDosClientesNovosDoSistema&#8221; passe a algo como &#8220;dadCliNov&#8221;, mnem\u00f3nicas f\u00e1ceis de compreender, com limites de tamanhos de s\u00edlabas e n\u00famero das mesmas.<\/p>\n\n\n\n<p>Ele faz parsing e obfusca\u00e7\u00e3o de Javascript tamb\u00e9m se necess\u00e1rio.<\/p>\n\n\n\n<p>Ele n\u00e3o est\u00e1 ainda terminado a 100% no que diz respeito a Namespaces PHP tipo namespace\\fun\u00e7\u00e3o, essa parte deixo para daqui a uns meses.<\/p>\n\n\n\n<p>Nem imaginam o trabalho que estes algoritmos deram! Durante uns bons meses n\u00e3o quero voltar a olhar para isto. <img loading=\"lazy\" decoding=\"async\" alt=\"?\" src=\"https:\/\/static.xx.fbcdn.net\/images\/emoji.php\/v9\/t51\/1\/16\/1f603.png\" width=\"16\" height=\"16\"><\/p>\n\n\n\n<p>Este Freeware beta version tem umas 50 op\u00e7\u00f5es de obfusca\u00e7\u00e3o\/optimiza\u00e7\u00e3o com ele funcionais.<\/p>\n\n\n\n<p>PS: Pode ser usado sem obfusca\u00e7\u00e3o, apenas para remo\u00e7\u00e3o de lixo no c\u00f3digo (coment\u00e1rios etc), cortar espa\u00e7os e enters em duplicados, alinhar o c\u00f3digo, reduzir tamanho, encurtar vari\u00e1veis muito longas, sem obfuscar. <img loading=\"lazy\" decoding=\"async\" alt=\"?\" src=\"https:\/\/static.xx.fbcdn.net\/images\/emoji.php\/v9\/t4c\/1\/16\/1f642.png\" width=\"16\" height=\"16\"> Optimizar.<\/p>\n\n\n\n<p>De momento quem quiser experimentar pe\u00e7a-me. <img loading=\"lazy\" decoding=\"async\" alt=\"?\" src=\"https:\/\/static.xx.fbcdn.net\/images\/emoji.php\/v9\/t4c\/1\/16\/1f642.png\" width=\"16\" height=\"16\"><\/p>\n\n\n\n<p>UPDATE 2013-01-09:<\/p>\n\n\n\n<p>Afinal existiam alguns bugs que corrigi, ele alterava fun\u00e7\u00f5es e classes sem pensar que s\u00e3o case insensitive (apesar de as vari\u00e1veis n\u00e3o serem) e da\u00ed por vezes obfuscava tudo bem e outras n\u00e3o.<\/p>\n\n\n\n<p>J\u00e1 corrigi isso, agora fiz obfusca\u00e7\u00e3o a um projecto com mais de 100 PHP&#8217;s, e correu tudo bem, mesmo com vari\u00e1veis p\u00fablicas, interligadas, etc, tudo na perfei\u00e7\u00e3o sempre.<\/p>\n\n\n\n<p>S\u00f3 sobram 2 bugs, dos que vi, um \u00e9 o n\u00famero m\u00e1ximo de strings, que se estiver a 1 fica num ciclo infinito, e o outro \u00e9 algo que quase nunca acontecer\u00e1 que \u00e9 ele poder criar uma fun\u00e7\u00e3o com nome de outra que j\u00e1 existe (talvez aconte\u00e7a 1 num milh\u00e3o) mas pelo sim pelo n\u00e3o j\u00e1 vou criar forma de o utilizador poder colocar uma lista de fun\u00e7\u00f5es que n\u00e3o dever\u00e3o ser assumidas pelo PHP ao gerar novas, e assim ser\u00e1 100% infal\u00edvel a obfusca\u00e7\u00e3o.<\/p>\n\n\n\n<p>O tratamento de Namespaces (n\u00e3o operacionais a 100% quando misturadas com fun\u00e7\u00f5es) ficar\u00e1 para meses depois e n\u00e3o nesta vers\u00e3o.<\/p>\n\n\n\n<p>Em Javascript as vari\u00e1veis n\u00e3o seriam encriptadas da mesma forma porque este est\u00e1 preparado para PHP, mas em c\u00f3digo C possivelmente n\u00e3o funciona muito mal, talvez mais tarde o adapte para C e Javascript, Javascript seria \u00fatil, e quem sabe mais tarde VB.<\/p>\n\n\n\n<p>Quem quiser a nova vers\u00e3o \u00e9 s\u00f3 alterarem o nome do rar de download que enviei o 07 para 09.<\/p>\n\n\n\n<p>PS2: H\u00e1 apenas um ponto de falha ainda, ele n\u00e3o tem ainda a lista de fun\u00e7\u00f5es php existentes ou keywords, e por isso, se ele traduzir uma fun\u00e7\u00e3o de criarDados() para if() ele vai dar erro porque o compilador no servidor vai assumir o if() como um if\/then e n\u00e3o como fun\u00e7\u00e3o, da\u00ed ser normal poder surgir um &#8220;n\u00famero de argumentos inv\u00e1lido&#8221; que se deve ao ele traduzir mal uma fun\u00e7\u00e3o para algo j\u00e1 do sistema. Quando eu inserir a lista no software e n\u00e3o o deixar criar fun\u00e7\u00f5es com nome de fun\u00e7\u00f5es j\u00e1 existentes, ele nunca falhar\u00e1.<\/p>\n\n\n\n<p>De momento para contornar esta situa\u00e7\u00e3o, se o c\u00f3digo der erro, fa\u00e7am obfuscar novamente at\u00e9 que o c\u00f3digo fique a 100% (sem usar nomes j\u00e1 existentes). Vers\u00e3o beta-testing final para dentro de dias. <img loading=\"lazy\" decoding=\"async\" alt=\"?\" src=\"https:\/\/static.xx.fbcdn.net\/images\/emoji.php\/v9\/t4c\/1\/16\/1f642.png\" width=\"16\" height=\"16\"><\/p>\n\n\n\n<p>Isto \u00e9 para c\u00f3digo PHP essencialmente. <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"?\" src=\"https:\/\/static.xx.fbcdn.net\/images\/emoji.php\/v9\/t4c\/1\/16\/1f642.png\">\u00bb<\/p>\n\n\n\n<p>2021-04-15.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eu n\u00e3o era para criar p\u00e1gina s\u00f3 para este programa, mas como eu tinha um post antigo no Facebook com<\/p>\n","protected":false},"author":1,"featured_media":892,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-891","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Projecto Obfuscador de c\u00f3digo PHP - Gon\u00e7alo Ferreira<\/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.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Projecto Obfuscador de c\u00f3digo PHP - Gon\u00e7alo Ferreira\" \/>\n<meta property=\"og:description\" content=\"Eu n\u00e3o era para criar p\u00e1gina s\u00f3 para este programa, mas como eu tinha um post antigo no Facebook com\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Gon\u00e7alo Ferreira\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-30T01:08:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/04\/obfuscator-164650_10151338695748850_385699708_n.jpg?v=1631288766\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"378\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/\",\"url\":\"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/\",\"name\":\"Projecto Obfuscador de c\u00f3digo PHP - Gon\u00e7alo Ferreira\",\"isPartOf\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/04\/obfuscator-164650_10151338695748850_385699708_n.jpg?v=1631288766\",\"datePublished\":\"2021-04-15T16:40:45+00:00\",\"dateModified\":\"2023-10-30T01:08:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/#primaryimage\",\"url\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/04\/obfuscator-164650_10151338695748850_385699708_n.jpg?v=1631288766\",\"contentUrl\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/04\/obfuscator-164650_10151338695748850_385699708_n.jpg?v=1631288766\",\"width\":800,\"height\":378,\"caption\":\"Obfuscador de c\u00f3digo PHP, em 2012\/2013...\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.goncalo.pt\/por\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Projecto Obfuscador de c\u00f3digo PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/#website\",\"url\":\"https:\/\/www.goncalo.pt\/por\/\",\"name\":\"Gon\u00e7alo Ferreira\",\"description\":\"[Game Engine\/Software\/Simulation\/Trading Systems\/Full Stack] Developer, Musician, Composer, Painter, Writer, IT Trainer, Sys Admin, Ex-Trader, Skater, Strongman, Vegan, Self-Taught Neuro-Divergent Polymath, and 1001 things more. Welcome to my world!\",\"publisher\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.goncalo.pt\/por\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/#organization\",\"name\":\"Gon\u00e7alo Ferreira\",\"url\":\"https:\/\/www.goncalo.pt\/por\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2023\/08\/cropped-Goncalo-Ferreira-Logo-With-Face.png\",\"contentUrl\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2023\/08\/cropped-Goncalo-Ferreira-Logo-With-Face.png\",\"width\":389,\"height\":90,\"caption\":\"Gon\u00e7alo Ferreira\"},\"image\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"http:\/\/www.linkedin.com\/in\/GoncaloPT\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Projecto Obfuscador de c\u00f3digo PHP - Gon\u00e7alo Ferreira","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.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/","og_locale":"en_US","og_type":"article","og_title":"Projecto Obfuscador de c\u00f3digo PHP - Gon\u00e7alo Ferreira","og_description":"Eu n\u00e3o era para criar p\u00e1gina s\u00f3 para este programa, mas como eu tinha um post antigo no Facebook com","og_url":"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/","og_site_name":"Gon\u00e7alo Ferreira","article_modified_time":"2023-10-30T01:08:58+00:00","og_image":[{"width":800,"height":378,"url":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/04\/obfuscator-164650_10151338695748850_385699708_n.jpg?v=1631288766","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/","url":"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/","name":"Projecto Obfuscador de c\u00f3digo PHP - Gon\u00e7alo Ferreira","isPartOf":{"@id":"https:\/\/www.goncalo.pt\/por\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/#primaryimage"},"image":{"@id":"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/04\/obfuscator-164650_10151338695748850_385699708_n.jpg?v=1631288766","datePublished":"2021-04-15T16:40:45+00:00","dateModified":"2023-10-30T01:08:58+00:00","breadcrumb":{"@id":"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/#primaryimage","url":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/04\/obfuscator-164650_10151338695748850_385699708_n.jpg?v=1631288766","contentUrl":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/04\/obfuscator-164650_10151338695748850_385699708_n.jpg?v=1631288766","width":800,"height":378,"caption":"Obfuscador de c\u00f3digo PHP, em 2012\/2013..."},{"@type":"BreadcrumbList","@id":"https:\/\/www.goncalo.pt\/por\/projecto-obfuscador-de-codigo-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.goncalo.pt\/por\/"},{"@type":"ListItem","position":2,"name":"Projecto Obfuscador de c\u00f3digo PHP"}]},{"@type":"WebSite","@id":"https:\/\/www.goncalo.pt\/por\/#website","url":"https:\/\/www.goncalo.pt\/por\/","name":"Gon\u00e7alo Ferreira","description":"[Game Engine\/Software\/Simulation\/Trading Systems\/Full Stack] Developer, Musician, Composer, Painter, Writer, IT Trainer, Sys Admin, Ex-Trader, Skater, Strongman, Vegan, Self-Taught Neuro-Divergent Polymath, and 1001 things more. Welcome to my world!","publisher":{"@id":"https:\/\/www.goncalo.pt\/por\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.goncalo.pt\/por\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.goncalo.pt\/por\/#organization","name":"Gon\u00e7alo Ferreira","url":"https:\/\/www.goncalo.pt\/por\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.goncalo.pt\/por\/#\/schema\/logo\/image\/","url":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2023\/08\/cropped-Goncalo-Ferreira-Logo-With-Face.png","contentUrl":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2023\/08\/cropped-Goncalo-Ferreira-Logo-With-Face.png","width":389,"height":90,"caption":"Gon\u00e7alo Ferreira"},"image":{"@id":"https:\/\/www.goncalo.pt\/por\/#\/schema\/logo\/image\/"},"sameAs":["http:\/\/www.linkedin.com\/in\/GoncaloPT\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/pages\/891"}],"collection":[{"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/comments?post=891"}],"version-history":[{"count":1,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/pages\/891\/revisions"}],"predecessor-version":[{"id":893,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/pages\/891\/revisions\/893"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/media\/892"}],"wp:attachment":[{"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/media?parent=891"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}