Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Daniel_Ribeiro

Encoder PHP

Recommended Posts

Pessoal, é o seguinte, procurei e procurei várias opções para proteger o código fonte de minhas aplicações php.

Achei o ZendEncoder (que é inviável por causa do preço).

Achei também o source guardian que tem um valor até que aceitavel e eles já fornecem os arquivos compilados que rodam sem precisar instalar extensões no servidor. Na verdade essas extensões são carregadas dinamicamente.

Dentre os freewares, eu achei um bastante interessante que é o TurckMMCache. Esse de fato achei o melhor de todos, além de encriptar ele aumenta consideravelmente a velocidade do script.

Porém como todo mundo sabe, nós como desenvolvedores fazemos aplicações para distribuir aos clientes, e não podemos exigir que o cliente instale o TurckMMCache no servidor dele. Assim estamos impondo restrições ao nosso produto.

Então eu procurei um jeito alternativo de proteger os fontes, de modo que o servidor só precise do PHP Nativo pra poder executálo.

Após um tempo de pesquisa na internet, achei uma classe que possibilitava fazer isso. é o Solace Script Maze. Demorou um poquinho pra eu entender a lógica da classe, até porque a documentação não estava toda completa.

Eu fiz umas modificações na classe, e criei uma interface onde é possível encriptar um diretório inteiro e seus subdiretórios.

O que a classe faz é encriptar o fonte do arquivo, e na hora de rodar, ele desencripta e executa através da funcao eval()

Eu não sei quanto à segurança de proteção dos fontes, imaginei alguns métoidos de obter os fontes a partir do arquivo encriptado e não consegui. Por isso estou postando aqui o programa pra ver se alguem consegue achar alguma falha.

Se conseguirmos confirmar mesmo a segurança dos fontes encriptados, temos aí uma forte ferramenta para fazermos distribuições de nossas aplicações mantendo os direitos autorais.

 

PS: A interface que eu criei só coloquei alguns dados básicos de entrada, na classe é possível restringir a execução do script a certos hosts, ou limitar o uso do script até determinada data e etc. Quem quiser modificar a interface, fique a vonts.. dpois posta pra gente ver as modificações e possamos usar também.

 

download da classe e interfaces para encriptacao

http://www.hostfocus.com.br/encoder.zip

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que pude analisar dessa classe, ela utiliza o turck....dentro de alguens arquivos ela faz chamadas a biblioteca do turck....

sim, a classe tem um recurso que se o turck estiver instalado na máquina ela encripta pela classe, depois pega o código encriptado e codifica com o turck, deixando ainda mais seguro..mas só se tiver o turck instalado... o que é mto difícil o servidor do cliente ter o turck instalado lá. por isso a opção eu deixei desabilitada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem...eu não vejo muito problema em alguem cliente não quiser instalar o turck...eu explico o porque de usa-lo e suas vantagens e desvantagens.....até agora todos os meus clientes gostaram do desempenho do sistema rodando com o turck.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

não consegui usar esse encoder... eu digito normal o caminho da pasta (c:/cnjsakc/cacds) e quando eu clico no botao aparece "pagina não encontrada"...a proposito... o valor action do formulario inicial esta vazio...

Compartilhar este post


Link para o post
Compartilhar em outros sites

não consegui usar esse encoder... eu digito normal o caminho da pasta (c:/cnjsakc/cacds) e quando eu clico no botao aparece "pagina não encontrada"...a proposito... o valor action do formulario inicial esta vazio...

algum servidores web encaram o action vazio direcinando para mesmo página.. por isso que em alguns funcionam e outros não.neste caso, coloque o action do formulário para index.php que aí roda numa boa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ae kra, consegui corrigir o erro, o codigo foi encriptado... mas... fico cheio de erros meu... meu codigo depois de encriptado n funcionou :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom kra, você queria ver c alguem arrumava erros... bom eu arrumei... oq aconteceu aki, eu usei ele no meu webchat, q saum 3 frames.no 1: Parse error: parse error, unexpected T_STRING in c:\inetpub\wwwroot\fg\Wilker\webchat\reload.php(110) : eval()'d code on line 1o segundo eh gerado dinamicamente pelo primeiro (n aconteceu nada no kso)no 3: era pra ser um form, soh q onde era pra ser:...<button type="submit" accesskey="s" style="background-color: #FFFFFF; border: 1px solid #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px;">Enviar</button><br><img src='emoticons/feliz.gif'..ficou:...<button type="submit" accesskey="s" style="background-color:<img src='emoticons/feliz.gif' alt='Smile Feliz - :) '...acho q ele tem algum problema com o caracter :n sei... oq eu sei eh q aki ele n pego :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois é... eu estava codificando alguns scripts aki e estava funcionando normalmente.,daí eu codifiquei um outro script aki e ele tbm retornou um erro...fui verificar e notei que antes de ele criptografar o código, ele remove todas as quebras de linha, comentários, tabs e etc do arquivo encriptado (acho que é pra deixar menor o arquivo)procure a funcao RemoveComments() dentro do arquivo phpmaze.phpveja que ele dá um monte de replace, tirando um monte de coisa do arquivo fonte.daí eu comentei essas linhas e deixe só o return $contents e funcionou numa boa.o que eu acho é q. ele achou algum script no arquivo fonte e encarou como comentário ou outra coisa e removeu.vê aí e me informa se deu certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois é... eu estava codificando alguns scripts aki e estava funcionando normalmente.,daí eu codifiquei um outro script aki e ele tbm retornou um erro...fui verificar e notei que antes de ele criptografar o código, ele remove todas as quebras de linha, comentários, tabs e etc do arquivo encriptado (acho que é pra deixar menor o arquivo)procure a funcao RemoveComments() dentro do arquivo phpmaze.phpveja que ele dá um monte de replace, tirando um monte de coisa do arquivo fonte.daí eu comentei essas linhas e deixe só o return $contents e funcionou numa boa.o que eu acho é q. ele achou algum script no arquivo fonte e encarou como comentário ou outra coisa e removeu.vê aí e me informa se deu certo.

ou melhor... vi aki..não precisa comentar todas as linhas não... só coloque a linha 261 antes da 259. que aí funciona.agora ele tbm tenta remover lnhas que comecem com #, pois se trata de caracteres de comentário dentro do código PHP. então deve ser por isso que ele deu pau nos forms, pois a configuração de cores comeca com #.Daí você vê, se deixa ele remover os comentários ou encripta com comentário e tudo....

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixei em comentaio todos os preg_replace() dakela funcao sob comentario e pego de boa :D valew ae kra :) envia o arquivo corrigo completamente pra quem for pegar agora (n esquece de por <?php echo $_SERVER['PHP_SELF']; ?> no action do form no index.phpflw kra

Compartilhar este post


Link para o post
Compartilhar em outros sites

Daniel,Gostei muito do seu artigo. Tanto que resolvi experimentar sua solução.Já vinha procurando um Encoder há algum tempo. Encontrei o ionCube (http://www.ioncube.com) que é muito interessante e bem rápido, relativamente barato, porém, necessita carregar um código via função dl() do PHP. Como o meu provedor é a Locaweb, não tem jeito de usar o encoder, pois, "por questões de segurança" a Locaweb não habilita a função dl() para seus usuários.Baixei seu código e não consegui fazer o encoder funcionar. Minha situação é a seguinte: tenho na rede um servidor Linux onde rodo o Apache e o PHP: nesse servidor coloquei os scripts do seu arquivo ZIP. Na estação Windows em que trabalho, fiz uma cópia do phpmyadmin (diretório g:/phpmyadmin). Entrei na página (no servidor) e indiquei o caminho (g:/phpmyadmin). Acontece que após clicar no botão encode a página que recebo é: Encoding files... (0 files) Completed!back.Sabes o que pode estar acontecendo?Grato,Alexandre Theeswww.equipmentforce.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

o ideal era voce codificar os arquivos em sua própria máquina, e dpois já envialos codificados para o servidor.Nunca tentei codificar eles diretamente no servidor.Mas nào esqueca de fazer s backups antes.Se ainda tiver dandno erro, faça o que o wilquer fez, explicando neste mesmo post.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui tava dando erro, daí eu tirei a função que tira os coments da pag e funcionou certim, pra isso, na linha 198, onde está:

PHP [/tr][tr]$content = $this->RemoveComments($this->content_src);[/tr]

Mude para:

PHP [/tr][tr]$content = $this->content_src;[/tr]

Aqui pelo menos funcinou sem nenhum erro na página. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

exite sim... se você tiver a chave de encriptacao do arquivo..você chama ele da seguinte formascript.php?unmaze=chave_de_encriptacao

Eita...agora ferrou tudo...perdi a chave de encriptação!!! Tem como eu recuperar ela???100+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.