Nesse artigo vou mostrar como proteger seu website do ataque de script-kids, lammers, hackers (crackers) etc usando encriptação através de um javascript.
<html><head><title>Compile</title>
<script language="javascript">
<!--
//////////////////////////////////////////////////////////////////
// Source Code Encrypter v1.0 //
//////////////////////////////////////////////////////////////////
// //
// Este JavaScript pode ser usado livremente, desde que esta mensagem
// esteja aqui no cabeçalho do script. Quaisquer modificações
// e bugs encontrados (e consertados), são bem vindos.
// mauriciophnz@yahoo.co.nz
//
//////////////////////////////////////////////////////////////////
var i=0;
var ie=(document.all)?1:0;
var ns=(document.layers)?1:0;
function initStyleElements() /* Estilo para os botões */
{
var c = document.pad;
if (ie)
{
c.text.style.backgroundColor="#DDDDDD";
c.compileIt.style.backgroundColor="#C0C0A8";
c.compileIt.style.cursor="hand";
c.select.style.backgroundColor="#C0C0A8";
c.select.style.cursor="hand";
c.view.style.backgroundColor="#C0C0A8";
c.view.style.cursor="hand";
c.retur.style.backgroundColor="#C0C0A8";
c.retur.style.cursor="hand";
c.clear.style.backgroundColor="#C0C0A8";
c.clear.style.cursor="hand";
}
else return;
}
/* Luminosidade dos botões no painel de compilacao */
function LightOn(what)
{
if (ie) what.style.backgroundColor = '#E0E0D0';
else return;
}
function FocusOn(what)
{
if (ie) what.style.backgroundColor = '#EBEBEB';
else return;
}
function LightOut(what)
{
if (ie) what.style.backgroundColor = '#C0C0A8';
else return;
}
function FocusOff(what)
{
if (ie) what.style.backgroundColor = '#DDDDDD';
else return;
}
/* Luminosidade dos botões */
function generate() /* Gerador da "Compilação" */
{
code = document.pad.text.value;
if (code)
{
document.pad.text.value='Compilando...Espere por favor!';
setTimeout("compile()",1000);
}
else alert('Antes de apertar o botão escreva alguma coisa para ser compilada')
}
function compile() /* The "Compilation" */
{
document.pad.text.value='';
compilation=escape(code);
document.pad.text.value="<script>
<!--
document.write(unescape(""+compilation+""));
//-->
</script>";
i++;
if (i=1) alert("Página codificada 1 vez!");
else alert("Página codificada "+i+" vezes!");
}
function selectCode() /* Selecionando o código para copiar */
{
if(document.pad.text.value.length>0)
{
document.pad.text.focus();
document.pad.text.select();
}
else alert('Não há nada para ser selecionado!')
}
function preview() /* Visualizar a codificação */
{
if(document.pad.text.value.length>0)
{
pr=window.open("","Preview", "scrollbars=1,menubar=1,status=1,width=700,height=320,left=50,top=110");
pr.document.write(document.pad.text.value);
}
else alert('Nada para visualizar!')
}
function uncompile() /* Decodificando o "Código" */
{
if (document.pad.text.value.length>0)
{
source=unescape(document.pad.text.value);
document.pad.text.value=""+source+"";
}
else alert('Você precisa de um código codificado para poder decodificar!')
}
// -->
</script>
</head><body>
<!-- Compilation Panel -->
</p>
<form method=post name=pad align=center>
<textarea rows=11 name=text cols=58 style="background-color:#BEBEBE;width:95%"></textarea>
<br>
<br>
<input type=button value=Codificar name=compileIt onClick=generate() onMouseOver=LightOn(this) onMouseOut=LightOut(this)>
<input type=button value=Selecionar name=select onClick=selectCode() onMouseOver=LightOn(this) onMouseOut=LightOut(this)>
[1] Comentário enviado por stremer em 17/04/2008 - 15:31h
cara. para quem não conhece nada até pode servir para alguma coisa, mas isto esta longe de ser criptografia, é mais mudar a forma de codificação dos caracteres ou qualquer coisa parecida. Criptografia seria se você realmente criptografasse o código de alguma maneira e montasse ele de maneira dinâmica pelo javascript, baseado em uma chave obtida naquele momento por ajax por ex. ai sim seria algo mais inteligente que ja dificultaria o trabalho de quem quisesse ver o código.
Mesmo assim qualquer coisa que roda no lado do cliente é somente apresentação e não tem impacto nenhum na parte do servidor (como php que foi citado). Existem algumas ferramentas para criptografar sim arquivos php, para evitar que vejam o código fonte caso o programa tenha alguma brecha que permita download de tais arquivos ou qualquer acesso ao servidor que ai é mais inteligente.
Importante lembrar que ambos os casos não evitam nenhum tipo de injection, pois isto é problema do programa codificado em si e não tem nada a ver com criptografia.
[2] Comentário enviado por super-root em 17/04/2008 - 16:58h
As Funções escape() e unescape() são funções do java script. Estão longe de ser uma criptografia. Muito facio de quebrar. Isso eu fazia quando era iniciante na net, pegava as página supostamente criptografadas fazia o processo inverso, que é muito simples, usando o unescape. Valeu pela iniciativa mas não achei um arquivo bom.
[3] Comentário enviado por elgio em 17/04/2008 - 19:03h
Faço coro ao que disse o stremer.
Isto não é encriptação, é obscuridade.
Encriptação mesmo, de verdade, só se tu usasse algum algoritmo simétrico como até mesmo o antigo DES no lado do servidor.
[4] Comentário enviado por y2h4ck em 17/04/2008 - 19:24h
Bom ... só pra complementar os nossos amigos ai ... existe até um site na internet com challenges de "hacking" em que vários dos exercícios são justamente fazer bypass neste tipo de proteção ai. =]
[6] Comentário enviado por stremer em 18/04/2008 - 09:13h
ok cara.
E quanto a sites com challenges "hacking". Só pra citar o http://www.mod-x.co.uk/, é bem legal, pena que é bem "windows" o negócio, tem até uma fase que vc tem de quebrar a senha de um programa, usar debugger e tudo mais (como se tivesse fazendo um crack). Tem parte de descompilar classe java, etc. Sniffer. É bem legal.
Agora tbem o título ficará mais correto, porém para lammers e script-kids mtas vezes não precisa nem codificar, as vezes só colocar um javascript que bloqueia os botões do mouse ja resolve (kkkkk).
Mas como falei, pra quem não conhece quase nada, sempre informação nova ta valendo!
[9] Comentário enviado por M4iir1c10 em 22/08/2008 - 00:52h
A todos os que fizeram o teste e o codigo nao rodou:
quando o codigo foi passado para o site houve um problema que eu espero seja concertado agora:
Na linha 76 do codigo na funcao compile() o site nao colocou os caracteres das barras invertidas \ entao aqui vai o codigo que voce deve mudar para fazer funcionar:
[10] Comentário enviado por M4iir1c10 em 22/08/2008 - 00:52h
E aqui o codigo completo:
<html><head><title>Compile</title>
<script language="javascript">
<!--
//////////////////////////////////////////////////////////////////
// Source Code Encrypter v1.0 //
//////////////////////////////////////////////////////////////////
// //
// Este JavaScript pode ser usado livremente, desde que esta mensagem
// esteja aqui no cabeçalho do script. Quaisquer modificações
// e bugs encontrados (e consertados), são bem vindos.
// mauriciophnz@yahoo.co.nz
//
//////////////////////////////////////////////////////////////////
var i=0;
var ie=(document.all)?1:0;
var ns=(document.layers)?1:0;
function initStyleElements() /* Estilo para os botões */
{
var c = document.pad;
if (ie)
{
c.text.style.backgroundColor="#DDDDDD";
c.compileIt.style.backgroundColor="#C0C0A8";
c.compileIt.style.cursor="hand";
c.select.style.backgroundColor="#C0C0A8";
c.select.style.cursor="hand";
c.view.style.backgroundColor="#C0C0A8";
c.view.style.cursor="hand";
c.retur.style.backgroundColor="#C0C0A8";
c.retur.style.cursor="hand";
c.clear.style.backgroundColor="#C0C0A8";
c.clear.style.cursor="hand";
}
else return;
}
/* Luminosidade dos botões no painel de compilacao */
function LightOn(what)
{
if (ie) what.style.backgroundColor = '#E0E0D0';
else return;
}
function FocusOn(what)
{
if (ie) what.style.backgroundColor = '#EBEBEB';
else return;
}
function LightOut(what)
{
if (ie) what.style.backgroundColor = '#C0C0A8';
else return;
}
function FocusOff(what)
{
if (ie) what.style.backgroundColor = '#DDDDDD';
else return;
}
/* Luminosidade dos botões */
function generate() /* Gerador da "Compilação" */
{
code = document.pad.text.value;
if (code)
{
document.pad.text.value='Compilando...Espere por favor!';
setTimeout("compile()",1000);
}
else alert('Antes de apertar o botão escreva alguma coisa para ser compilada')
}
function compile() /* The "Compilation" */
{
document.pad.text.value='';
compilation=escape(code);
document.pad.text.value="<script>\n<!--\ndocument.write(unescape(\""+compilation+"\"));\n//-->\n<\/script>";
i++;
if (i=1) alert("Página codificada 1 vez!");
else alert("Página codificada "+i+" vezes!");
}
function selectCode() /* Selecionando o código para copiar */
{
if(document.pad.text.value.length>0)
{
document.pad.text.focus();
document.pad.text.select();
}
else alert('Não há nada para ser selecionado!')
}
function preview() /* Visualizar a codificação */
{
if(document.pad.text.value.length>0)
{
pr=window.open("","Preview", "scrollbars=1,menubar=1,status=1,width=700,height=320,left=50,top=110");
pr.document.write(document.pad.text.value);
}
else alert('Nada para visualizar!')
}
function uncompile() /* Decodificando o "Código" */
{
if (document.pad.text.value.length>0)
{
source=unescape(document.pad.text.value);
document.pad.text.value=""+source+"";
}
else alert('Você precisa de um código codificado para poder decodificar!')
}
// -->
</script>
</head><body>
<!-- Compilation Panel -->
</p>
<form method=post name=pad align=center>
<textarea rows=11 name=text cols=58 style="background-color:#BEBEBE;width:95%"></textarea>
<br>
<br>
<input type=button value=Codificar name=compileIt onClick=generate() onMouseOver=LightOn(this) onMouseOut=LightOut(this)>
<input type=button value=Selecionar name=select onClick=selectCode() onMouseOver=LightOn(this) onMouseOut=LightOut(this)>
[12] Comentário enviado por pais em 06/03/2011 - 18:21h
Oi M4iir1c10.
Sou iniciante programação isto é se criar site for programar.
Gostei muito destas dica e orientação porem eu não conseguir inserir imagens.
Os passo em que seguir foram esses;
Criei um diretório chamado <teste em html> dentro dela add duas imagens.
Primeiro tentei.
<img urc="nome da imagem.jpg"> e
<img urc="/teste em html/nome da imagem.jpg">
Obs todas as imagens a instenção é jpeg
[13] Comentário enviado por viniciusdias em 26/12/2013 - 15:16h
[12] Comentário enviado por pais em 06/03/2011 - 18:21h:
Oi M4iir1c10.
Sou iniciante programação isto é se criar site for programar.
Gostei muito destas dica e orientação porem eu não conseguir inserir imagens.
Os passo em que seguir foram esses;
Criei um diretório chamado <teste em html> dentro dela add duas imagens.
Primeiro tentei.
<img urc="nome da imagem.jpg"> e
<img urc="/teste em html/nome da imagem.jpg">
Obs todas as imagens a instenção é jpeg
Amigo, o código para inserir imagens em html é:
<img src="imagem.jpg" alt="Texto Alternativo" />