Hoje quis mudar o estilo do fórum Discuz. Inesperadamente, após baixar o arquivo de estilo, descobri que ele estava criptografado com Base64.
Xiao Lin recomendou uma página descriptografada e o código extraído é o seguinte:
Copie o código do código da seguinte forma:
<!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
<html>
<cabeça>
<title>Base64 e URL e codificação e decodificação hexadecimal</title>
<meta name=description content=Codifica ou decodifica dados em Base64 ou codificação de URL usando JavaScript do lado do cliente />
<meta nome = palavras-chave conteúdo = base64, base 64, urlencode, urldecode, hexencode, hex encode, hexdecode hex decode, javascript base64, javascript base 64, javascript urlencode, javascript urldecode, javascript hexencode, javascript hexdecode />
<link rel=ícone de atalho href=http://ostermiller.org/favicon.ico type=image/x-icon />
<linguagem script=javascript type=text/javascript>
<!--
função urlDecode(str){
str=str.replace(new RegExp('//+','g'),' ');
retornar unscape(str);
}
função urlEncode(str){
str=escape(str);
str=str.replace(new RegExp('//+','g'),'%2B');
return str.replace(new RegExp('%20','g'),'+');
}
var END_OF_INPUT = -1;
var base64Chars = new Array(
'A','B','C','D','E','F','G','H',
'I','J','K','L','M','N','O','P',
'Q','R','S','T','U','V','W','X',
'Y','Z','a','b','c','d','e','f',
'g','h','i','j','k','l','m','n',
'o','p','q','r','s','t','u','v',
'w','x','y','z','0','1','2','3',
'4','5','6','7','8','9','+','/'
);
var reverseBase64Chars = new Array();
for (var i=0; i < base64Chars.length; i++){
ReverseBase64Chars[base64Chars[i]] = i;
}
varbase64Str;
var base64Count;
função setBase64Str(str){
base64Str = string;
base64Contagem = 0;
}
função readBase64(){
se (!base64Str) retornar END_OF_INPUT;
if (base64Count >= base64Str.length) retornar END_OF_INPUT;
var c = base64Str.charCodeAt(base64Count) & 0xff;
base64Contagem++;
retornar c;
}
função codificaBase64(str){
setBase64Str(str);
var resultado = '';
var inBuffer = novo Array(3);
var contagemlinha = 0;
var concluído = falso;
while (!feito && (inBuffer[0] = readBase64()) != END_OF_INPUT){
inBuffer[1] = readBase64();
inBuffer[2] = readBase64();
resultado += (base64Chars[ inBuffer[0] >> 2 ]);
if (inBuffer[1] != END_OF_INPUT){
resultado += (base64Chars [(( inBuffer[0] << 4 ) & 0x30) | (inBuffer[1] >> 4) ]);
if (inBuffer[2] != END_OF_INPUT){
resultado += (base64Chars [((inBuffer[1] << 2) & 0x3c) | (inBuffer[2] >> 6) ]);
resultado += (base64Chars [inBuffer[2] & 0x3F]);
} outro {
resultado += (base64Chars [((inBuffer[1] << 2) & 0x3c)]);
resultado += ('=');
feito = verdadeiro;
}
} outro {
resultado += (base64Chars [(( inBuffer[0] << 4 ) & 0x30)]);
resultado += ('=');
resultado += ('=');
feito = verdadeiro;
}
contagem de linhas += 4;
if (lineCount >= 76){
resultado += ('/n');
contagemLinha = 0;
}
}
resultado de retorno;
}
função readReverseBase64(){
se (!base64Str) retornar END_OF_INPUT;
enquanto (verdadeiro){
if (base64Count >= base64Str.length) retornar END_OF_INPUT;
var nextCharacter = base64Str.charAt(base64Count);
base64Contagem++;
if (reverseBase64Chars[nextCharacter]){
retornar reverseBase64Chars[próximoCaracter];
}
if (nextCharacter == 'A') return 0;
}
retornar END_OF_INPUT;
}
função ntos(n){
n=n.toString(16);
se (n.comprimento == 1) n=0+n;
n=%+n;
retorne sem escape(n);
}
função decodeBase64(str){
setBase64Str(str);
var resultado =;
var inBuffer = novo Array(4);
var concluído = falso;
while (!done && (inBuffer[0] = readReverseBase64()) != END_OF_INPUT
&& (inBuffer[1] = readReverseBase64()) != END_OF_INPUT){
inBuffer[2] = readReverseBase64();
inBuffer[3] = readReverseBase64();
resultado += ntos((((inBuffer[0] << 2) & 0xff)| inBuffer[1] >> 4));
if (inBuffer[2] != END_OF_INPUT){
resultado += ntos((((inBuffer[1] << 4) & 0xff)| inBuffer[2] >> 2));
if (inBuffer[3] != END_OF_INPUT){
resultado += ntos((((inBuffer[2] << 6) & 0xff) | inBuffer[3]));
} outro {
feito = verdadeiro;
}
} outro {
feito = verdadeiro;
}
}
resultado de retorno;
}
var digitArray = new Array('0','1','2','3','4','5','6','7','8','9','a', 'b','c','d','e','f');
função paraHex(n){
var resultado = ''
var início = verdadeiro;
para (var i=32; i>0;){
eu-=4;
var dígito = (n>>i) & 0xf;
if (!iniciar || dígito != 0){
início = falso;
resultado += digitArray[dígito];
}
}
return (resultado==''?'0':resultado);
}
função pad(str, len, pad){
var resultado =str;
for (var i=str.length; i<len; i++){
resultado = bloco + resultado;
}
resultado de retorno;
}
função codificarHex(str){
var resultado =;
for (var i=0; i<str.comprimento; i++){
resultado += pad(toHex(str.charCodeAt(i)&0xff),2,'0');
}
resultado de retorno;
}
função decodificarHex(str){
str = str.replace(novo RegExp(s/[^0-9a-zA-Z]//g));
var resultado =;
var próximochar = ;
for (var i=0; i<str.comprimento; i++){
nextchar += str.charAt(i);
if (nextchar.length == 2){
resultado += ntos(eval('0x'+nextchar));
próximocar = ;
}
}
resultado de retorno;
}
//--></script>
</head>
<corpo>
<nome do formulário=código onsubmit=return false()>
<textarea name=text style='width:100%;height:75%;' onfocus='if (this.value==Insira o texto para codificar ou decodificar aqui.){this.value=;}'>Insira o texto para codifique ou decodifique aqui.</textarea>
<tabela>
<tr><td alinhar=centro>
<input value=Tipo de código=botão onclick=document.code.text.value=urlEncode(document.code.text.value);>
</td><td alinhar=center>
URL
</td><td alinhar=center>
<input value=Tipo de decodificação=botão onclick=document.code.text.value=urlDecode(document.code.text.value);>
</td></tr>
<tr><td alinhar=centro>
<input value=Tipo de código=botão onclick=document.code.text.value=encodeBase64(document.code.text.value);>
</td><td alinhar=centro>
Base 64
</td><td alinhar=centro>
<input value=Tipo de decodificação=botão onclick=document.code.text.value=decodeBase64(document.code.text.value);>
</td></tr>
<tr><td alinhar=centro>
<input value=Tipo de código=botão onclick=document.code.text.value=encodeHex(document.code.text.value);>
</td><td alinhar=center>
Feitiço
</td><td alinhar=center>
<input value=Tipo de decodificação=botão onclick=document.code.text.value=decodeHex(document.code.text.value);>
</td></tr>
<tr><td alinhar=centro>
</td><td alinhar=center>
<tipo de entrada=valor de redefinição=Limpar>
</td><td alinhar=centro>
</td></tr>
</tabela>
</form>
<h>
A codificação/decodificação Base64 foi portada de um <a href=http://ostermiller.org/utils/Base64.html>codificador/decodificador Java Base64</a>.<br>
A codificação/decodificação Base64 foi portada para <a href=http://ostermiller.org/base64_actionscript.html>Macromedia Actionscript</a>.<br>
<h3>Licença</h3>
<p>Este programa é um software livre; você pode redistribuí-lo e/ou modificá-lo.
sob os termos da Licença Pública Geral GNU conforme publicada pela Free
Software Foundation; versão 2 da Licença ou (opcional)
qualquer versão posterior.</p>
<p>Este programa é distribuído na esperança de que seja útil,
mas SEM QUALQUER GARANTIA, mesmo sem a garantia implícita de COMERCIALIZAÇÃO;
ou ADEQUAÇÃO A UM PROPÓSITO ESPECÍFICO Consulte o.
<a href=http://www.gnu.org/copyleft/gpl.html>GNU
Licença Pública Geral</a> para mais detalhes.</p>
<div style=padding:0.2cm;><a href=http://ostermiller.org/calc/>Mais conversores, calculadoras e outros itens JavaScript</a></div>
<div style=padding:0,2cm;text-align:right;><a href=http://ostermiller.org/>ostermiller.org</a> (<a href=http://ostermiller.org/siteindex .html>índice do site</a>)</div>
<div style=padding:0.2cm;><p>Direitos autorais <a href=http://ostermiller.org/contact.pl?regarding=JavaScript+Encoding class=mail>Stephen Ostermiller</a> 2003-2006</ p></div>
</body>
</html>