Jump to content
ruimcosta

encriptação do código PHP

Recommended Posts

ruimcosta

Biba,

Foi colocada uma questão pertinente.

Um cliente com site já feito por outra empresa, passou para nossa responsabilidade a gestão do alojamento e domínio. Até aqui tudo normal.

Solicitou-nos algumas alterações ao site original, e quando pego no site (em PHP) deparo-me com esta linha em todos os ficheiros:

eval(gzinflate(base64_decode('XXX');

O XXX é o código encriptado.

Por acaso já tinha lido sobre este sistema e além disso tem este comentário:

// De acordo com os direitos de autor, qualquer alteração é expressamente proibida.

A pergunta coloca-se: Após desencriptar o código, até que ponto posso ou não alterar o código de forma a acrescentar funcionalidades ao site que foi pago pelo nosso cliente a outra qualquer empresa?


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
Knitter

Depende do que o cliente pagou e do acordo com o contrato feito. A não ser que tenha sido acordado em contrário, o trabalho desenvolvido pela outra empresa para o cliente é do cliente. Os direitos de autor são deste já que o trabalho foi feito para ele, terei de ir procurar os artigos exactos para confirmar, que não os tenho à mão, mas terás de falar com o cliente e saber o que foi pago, só ele poderá responder.

Esse comentário é inútil e não tem qualquer valor, no máximo seria uma nota para lembrar que possíveis alterações estarão sujeitas às regras do CDADC, mas isso todas estão, o que é importante é saber quais regras.

Share this post


Link to post
Share on other sites
ruimcosta

Knitter,

Obrigado. Consegues arranjar os artigos ou DL relacionados com este tema?

Sendo assim e caso não haja cláusulas que definam que o código fonte é da empresa que o produziu, ele tem de fornecer as fontes (entenda-se PHP sem estar encriptado) do site?


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
Knitter

Decreto-Lei 252/94 de 20 de Outubro, artigo 3º (autoria) nr. 3:

Quando um programa de computador for criado por [...] encomenda, pretencem ao destinatário do programa os direitos a ele relativos, salvo estipulação em contrário ou se outra coisa resultar das finalidades do contrato.

Resumindo, depende do contrato que o cliente assinou ou do que foi acordado na altura em que ele pediu o desenvolvimento do site. Se não existir indicação de que a empresa que desenvolveu o site é "dona" do mesmo (por contrato) ou se o serviço que foi prestado não levava a que o site não fosse do cliente (como acontece em alguns serviços de alojamento ou serviços em que o desenvolvimento do site acaba por ser um extra) então é do cliente os direitos materiais do projecto (e isso implica que o cliente seja "dono" do código e o possa modificar).

Podes ver uma cópia do decreto no link http://dl.dropbox.com/u/4905348/286388_DL252-199_46028b05a6eda.pdf

Atenção que não sou advogado, a formação que tenho embora tenha incidido bastante na componente legal associada à área de informática não é o mesmo que a formação que um advogado teria. De qualquer modo não me parece que haja lugar a muita dúvida, ou o contrato indica que o site é da empresa que o desenvolveu ou então é do cliente que o pediu (situação que considero mais normal) e aí o cliente poderá fazer as modificações que bem entender. A primeira coisa que eu faria seria remover essa "parvoíce" da codificação em base64 e afins.

Olhando para o teu código parece-me que o código fonte está todo presente, embora ocultado em base64, bastará remover essa codificação e terás todo o código, pelo que mesmo que não queiram dar o PHP original ele está aí à frente para usar ;)

Share this post


Link to post
Share on other sites
Rechousa

Olá,

Esta thread veio mesmo a propósito!

Estive no fim de semana com um amigo de longa data que me perguntou se haveria forma de encriptar o código em PHP.

Para além da solução da codificação em base64 existe alguma forma de proteger o código?

Obrigado.


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
Knitter

Para além da solução da codificação em base64 existe alguma forma de proteger o código?

Sim, não entregas o código a ninguém, queimas todas as drives onde alguma tenha estado e vaporizas as cinzas...

Se o servidor WEB vai ter de interpretar o código, então vai ter acesso ao mesmo, se o servidor tem acesso qualquer um que veja a dita "codificação" terá acesso ao código. Base64 não é nem mais nem menos solução, simplesmente não é solução, afinal quão difícil é reverter a codificação? Uma linha de código!

Share this post


Link to post
Share on other sites
ruimcosta

Muito obrigado pela disponibilidade.

Andei esta manhã a testar alguns codigos e descodificadores on-line sem grande sucesso. Num "conversor" devolveu-me outra chave...partindo assim do princípio que o código foi encriptado várias vezes...no entanto vou colocar um ficheiro encriptado pedindo ajuda para o reverter.

<?php
eval(gzinflate(base64_decode('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')));
?>


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
Knitter

Isso não é mais que um conjunto de evals, gzinflates e base64_decodes encadeados, só precisas fazer a operação inversa, começando por substituir os evals por echo ou outra coisa qualquer que remova a avaliação do código.

Share this post


Link to post
Share on other sites
pedroserra

Acho que já uma vez postei qualquer coisa assim algures no forum, mas aqui vai...

<?php

$data = <<<php
eval(gzinflate(base64_decode('FVZHrsTYdpt7FW/2uyHjK5ckODSUSzmrJE0M5XwVS2k7HhheR2/Mz7MDEDggCYLgX//573/NzfwDwz9C+ZPm01pMP/k0/kzbT9GuZbv///GLfPdp/def5ZsOy7dcf9JhL9f07//5+7+nn/Sn3Pbyp2rzpmzX6efv//0pr3ktty0dS/CLzOvUZm2R/vNfyiMd/qifFlRDupd/ZOlWvoj/Ksp8Kso//iElMf5s/ijHLgUg/VAVWR4Nm3c8gTQ8FB+TcjaS5nnW2+JpGyDGh6YGqk6dVCid6rkeGIa3Iu46+oRZ6wZ3nZDAJ7w4+yZoAyHjai1HBF9ksb0eAWY+VTqBXxJHD9K92LqDoh8Sht/g1QLsSjYSor1t2caprGwYpnoS7wCP6qgcMQPxPIERhvKBQwN229gA6V9ofcxheSLInG6vayNs/AgywF4308qWgBftwMcmyjCdUkq+GshbHyZOx3aWbQcNNUmmEIRJOzsd8lKcJzmRwLnicgRepshE/KrcF3kS+nX5n5SNkMRieicwV8oAtxS6lWs5T+4SOSh9uGLMt0CXUsXLz7uTK8Gd88ywLVa7DIigRdQwGM5myKI+c4NCR3gJ32sagcfKCbqQqxkrxUjz0dpM2VS2ETprinq4todZ2u6evsKd02/lKo4LFvlsqIgMqGfaDRS2DN9+jN+diR+ZbnQYRqV2gMA0k83v+9GzY85KXjY4J/ffPq1yt+m6a6wStKw+ZxoAQopk1IIZ3CkPVUM8pY0yBZZUp4XYQd7Q8GbN/bUwCi3Iof5CRAj80v4wfdosj7uzmvbMoN9iyST7OMPyxiMziaDP7etJvn3fyty0ZYHabCK9kBCVEsvTXi1OgE6a/UP1+5B59qWrMkvR8OUag6rAQ473zYDoXLs1t0lY3zYj9X0y+RER5KSH6It+5fOy64+TWB+pRTJhxo7gaJ0tZuiZQiQUjzKKB+8YOmIMs17G4BvPS4yTFtqa3WAc1tsYBVmvHUrhopYKmxECTzHwOSNwfJ39wotqm2f7GHGq69UaSgcRfZKmyaKNNYW5t/8deRzY7zB/Pe97r+lpb9byk9SLqfKRp3FQaS8C9vFMe3+BojysA6PuK5TqnJF+P0r3uqLY7MgMtSyntG9lggTI20+soCIE0U8iwAwTBAnPhBdcHbJB1KZiD1i1w/eFAojGZDp+n0L5jW9bycIWvxqZyKlFIdjRRc6E0awnwciJHzk1TKW5ccVjoos67nlfs/cKEG40yrcWRZ+X0ciacr3Rvg27Rv5qssnD4dzvGkrL49t0vHFelAxL/f6138kktERSw1JIFTwWmJAtMitLX2x9RtsmOtxYYLIRP41KlRhUEKlW3iedaxFJD9GR8mQIOGZJ6bS12y6lgjw0NdkzSbx5fWqCv5uvGlzMom8kNszbiOCHsfnNKnSPLcUltJUN3RtMSJRo4ndJiG8uyrALg0e4rZb71UlcghE7YCdvf/u3N5NyXAHRF9yUqpZWA2jC4SKCRVsS7civC66GtQ53ZAxk8Sk79O/07cW5HrjnjgxORTuzDAzIvE9WIp1Y0GYTdInApiNeVFXDb1kbV08qzI/YCVpOiQyv+/IrXKYFI7DmFjGUnZWJDCuvAmcXFtOsvVbLBENItJh6ZkiIEHckfj8sXGkaiHOMYCIaNzlW8N+63Ngmx4AWorET7cXBsypfwwdXj0evxp9DcW6TP5dRZRv1HJfFb8FLbfae1VsOrbAPYzcxvG7K55nOwmdEBeKVd/6O3kJD9A5RhSO1dQJF4RkOy67yruGikHikgEGNtxoq1uiWVyza89kGgb3qbkX+dWsDL7IOxvaSp9/w45Z/CWePlAgi9U9o93wPr8l5XiSG5aY7I9yeaSXR82uI62jQKzpAy92Q3Fin8n7aO8FLJs752gEBI4//EXVd53jeP7/h9wC0e0MCJbDQ9R3DTjcv8VIcFrit2XwIjg9ViPTFDSF3qfXl7/EG3bWvx7EnvkKn905GUKIS4S1EmjQmfByUXE2F50s56Ivzt8b/vNpts+sb9q3emOVmxaSt7hR1E2MJ0l/uEjUfcMrrAqLvl0awu7b2eqBAku/ANnJTMJDZDHg51EgNLu7zygg+0+Rg1BeeLSCNHtwMOwUOM2jowecP50EEFGkbNWM3yQrxt/Wt9TV+wZpxBIJC4ulu32k0H50n+dYs09Rz2j0gn1KuZMg4KIL8hq1TBV+pS4NJTT+Y2qHOIj3YcsXO037sUtohTSvIuAYSFfPreH7We0FGrOBo4Up2C304lewjKjU+Ry0RIGmLcMKOTYLvsBBy+mSQTE0fPszPomdYWxV5+ZzAvMgtgnikHga5h+xmTywh1HZi/nC6R0Yecn/lz2+nk/hV6x69DNmt5Woilgs+ahJlBSyzWqvkK2K5Jw+jdb96JV3z9418On1lzClVZNU/mdSMNvoGAodj42/Ftt9MU750qQ2bFyZ5sPgULYAPmZbdk3yWGoBRvnZAbgwulUdcOkcA43vdCph4aXBOYut4mxE4283TxBlOaTrv00iSzA5Iqfy9R5ZwG+0d22xnDmV7n+/V944ssXdchgIlKFTzwctI/V0BOApxvedI42AKnPryHP6w0qd3+aA5IdSaDJKoJKx8/8aBLR5LkqWYSWsH7wVSSI7tjRmr7EEL3zv1ngcf9H20+TmlGykdlBzKRNtrZkJxe68C0EeNV+8eP2pM0Zv+BDV60SSb10CL4Ov2vQh1o3VaWq94/kXthxaN7rmsK1ddJE4qYMyfmu33fAnwLWAGAd84RFMayMHCVO0IwajOG5iKky+wjESvuzj9eHM56zIdpX6ort72YTozShPIPisgVYq2Wj/NWHMnTSYSESnTUxMUrpXT4q7v5OONEUzT+34cv/Z3EM3DHP0f//jzzz//7a/f5ft/')));
php;

while (stripos($data, 'eval')!== FALSE)
{
$data = str_replace('eval(', '$data = (', $data);
eval($data);
}
echo $data;

?>


Ah e tal não sei quê...

Share this post


Link to post
Share on other sites
Knitter

Ora isso executa umas míseras 11 vezes, 11 gzinflate, 11 base64_decode, 11 eval... por cada utilizador que acede ao site... viva a cache. E que o cliente nunca se queixe que o site/servidor é lento, não tem razão nenhuma para isso, eu diria até que 11 execuções não dão a camada de segurança necessária porque há por aí muitos ácaros da Internet, e que tal aumentar a segurança por um factor de 10x?

Share this post


Link to post
Share on other sites
Rechousa

Sim, não entregas o código a ninguém, queimas todas as drives onde alguma tenha estado e vaporizas as cinzas...

Bem, não sejamos fundamentalistas ;)

É evidente que o servidor terá de interpretar o código, mas por exemplo, em ASP.Net, ao contrário do que existia em ASP 3.0, o código é compilado em DLL's e até o conteúdo "HTML" das páginas também pode ir para as DLL's.

A minha pergunta é se existe algo do género em PHP.


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
Knitter

E também os DLLs podem ser revertidos. Esta é uma discussão que surgiu, e parece surgir frequentemente, pelo fórum. Pesquisa e vê o que foi dito nos outros tópicos. A conclusão é sempre a mesma, se o computador consegue ler então é possível reverter e ter acesso ao código, tudo depende da vontade e empenho de quem quer aceder ao código.

No caso da protecção do PHP até acho que a protecção do código é um completo desperdício de tempo, se alguém teve acesso ao código é porque acedeu ao servidor, nesse caso para que é que quero o código se tenho todo o teu servidor à minha mercê? No fundo não compensa o trabalho com o que se perde, o exemplo que originou este tópico é uma excelente prova disso.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.