Hari ini saya ingin mengubah gaya forum Discuz. Tanpa diduga, setelah mengunduh file gaya, saya menemukan bahwa file tersebut dienkripsi dengan Base64.
Xiao Lin merekomendasikan halaman yang didekripsi, dan kode yang diekstraksi adalah sebagai berikut:
Copy kode kodenya sebagai berikut:
<!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transisi//EN>
<html>
<kepala>
<title>Base64 dan URL serta Pengkodean dan Dekode Hex</title>
<meta name=description content=Mengkodekan atau mendekode data dalam pengkodean Base64 atau URL menggunakan JavaScript sisi klien />
<meta name=kata kunci konten=base64, basis 64, urlencode, urldecode, hexencode, hex encode, hexdecode hex decode, javascript base64, javascript base 64, javascript urlencode, javascript urldecode, javascript hexencode, javascript hexdecode />
<link rel=ikon pintasan href=http://ostermiller.org/favicon.ico type=image/x-icon />
<bahasa skrip=tipe javascript=teks/javascript>
<!--
fungsi urlDecode(str){
str=str.replace(RegExp baru('//+','g'),' ');
kembali unescape(str);
}
fungsi urlEncode(str){
str=melarikan diri(str);
str=str.replace(RegExp baru('//+','g'),'%2B');
return str.replace(RegExp baru('%20','g'),'+');
}
varEND_OF_INPUT = -1;
var base64Chars = Array baru(
'ABCD EFGH',
'Aku','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 = Array baru();
untuk (var i=0; i < base64Chars.length; i++){
reverseBase64Chars[base64Chars[i]] = saya;
}
var base64Str;
var base64Hitungan;
fungsi setBase64Str(str){
base64Str = str;
base64Hitungan = 0;
}
fungsi readBase64(){
jika (!base64Str) kembalikan END_OF_INPUT;
jika (base64Count >= base64Str.length) kembalikan END_OF_INPUT;
var c = base64Str.charCodeAt(base64Count) & 0xff;
base64Hitungan++;
kembali c;
}
fungsi encodeBase64(str){
setBase64Str(str);
var hasil = '';
var inBuffer = Array baru(3);
var jumlah baris = 0;
var selesai = salah;
sementara (!selesai && (inBuffer[0] = readBase64()) != END_OF_INPUT){
inBuffer[1] = bacaBase64();
inBuffer[2] = bacaBase64();
hasil += (base64Chars[ inBuffer[0] >> 2 ]);
jika (diBuffer[1] != END_OF_INPUT){
hasil += (base64Chars [(( inBuffer[0] << 4 ) & 0x30) | (inBuffer[1] >> 4) ]);
jika (diBuffer[2] != END_OF_INPUT){
hasil += (base64Chars [((inBuffer[1] << 2) & 0x3c) | (inBuffer[2] >> 6) ]);
hasil += (base64Chars [inBuffer[2] & 0x3F]);
} kalau tidak {
hasil += (base64Chars [((inBuffer[1] << 2) & 0x3c)]);
hasil += ('=');
selesai = benar;
}
} kalau tidak {
hasil += (base64Chars [(( inBuffer[0] << 4 ) & 0x30)]);
hasil += ('=');
hasil += ('=');
selesai = benar;
}
jumlah baris += 4;
jika (Jumlah baris >= 76){
hasil += ('/n');
jumlah baris = 0;
}
}
hasil pengembalian;
}
fungsi bacaReverseBase64(){
jika (!base64Str) kembalikan END_OF_INPUT;
sementara (benar){
jika (base64Count >= base64Str.length) kembalikan END_OF_INPUT;
var nextCharacter = base64Str.charAt(base64Count);
base64Hitungan++;
jika (reverseBase64Chars[karakter berikutnya]){
kembalikan reverseBase64Chars[karakter berikutnya];
}
jika (karakter berikutnya == 'A') mengembalikan 0;
}
kembali END_OF_INPUT;
}
fungsi ntos(n){
n=n.toString(16);
jika (n.panjang == 1) n=0+n;
n=%+n;
kembalikan unescape(n);
}
fungsi decodeBase64(str){
setBase64Str(str);
var hasil = ;
var inBuffer = Array baru(4);
var selesai = salah;
sementara (!selesai && (inBuffer[0] = readReverseBase64()) != END_OF_INPUT
&& (diBuffer[1] = readReverseBase64()) != END_OF_INPUT){
inBuffer[2] = bacaReverseBase64();
inBuffer[3] = bacaReverseBase64();
hasil += ntos((((inBuffer[0] << 2) & 0xff)| inBuffer[1] >> 4));
jika (diBuffer[2] != END_OF_INPUT){
hasil += ntos((((inBuffer[1] << 4) & 0xff)| inBuffer[2] >> 2));
jika (diBuffer[3] != END_OF_INPUT){
hasil += ntos((((inBuffer[2] << 6) & 0xff) | inBuffer[3]));
} kalau tidak {
selesai = benar;
}
} kalau tidak {
selesai = benar;
}
}
hasil pengembalian;
}
var digitArray = Array baru('0','1','2','3','4','5','6','7','8','9','a', 'b','c','d','e','f');
fungsi keHex(n){
var hasil = ''
var mulai = benar;
untuk (var i=32; i>0;){
saya-=4;
var angka = (n>>i) & 0xf;
jika (!mulai || angka != 0){
mulai = salah;
hasil += digitArray[digit];
}
}
kembali (hasil==''?'0':hasil);
}
fungsi pad(str, len, pad){
var hasil = str;
for (var i=str.panjang; i<len; i++){
hasil = pad + hasil;
}
hasil pengembalian;
}
fungsi encodeHex(str){
var hasil = ;
untuk (var i=0; i<str.panjang; i++){
hasil += pad(toHex(str.charCodeAt(i)&0xff),2,'0');
}
hasil pengembalian;
}
fungsi decodeHex(str){
str = str.replace(RegExp baru(s/[^0-9a-zA-Z]//g));
var hasil = ;
var karakter berikutnya = ;
untuk (var i=0; i<str.panjang; i++){
nextchar += str.charAt(i);
if (karakter berikutnya.panjang == 2){
hasil += ntos(eval('0x'+nextchar));
karakter berikutnya = ;
}
}
hasil pengembalian;
}
//--></skrip>
</kepala>
<tubuh>
<nama formulir=kode pengiriman=kembali salah()>
<textarea name=text style='width:100%;height:75%;' onfocus='if (this.value==Masukkan teks untuk dikodekan atau didekode di sini.){this.value=;}'>Masukkan teks ke menyandikan atau mendekodekan di sini.</textarea>
<tabel>
<tr><td align=tengah>
<nilai input=Encode type=tombol onclick=document.code.text.value=urlEncode(document.code.text.value);>
</td><td align=tengah>
URL
</td><td align=tengah>
<input value=Decode type=tombol onclick=document.code.text.value=urlDecode(document.code.text.value);>
</td></tr>
<tr><td align=tengah>
<nilai input=Encode type=tombol onclick=document.code.text.value=encodeBase64(document.code.text.value);>
</td><td align=tengah>
Basis 64
</td><td align=tengah>
<nilai input=Jenis dekode=tombol onclick=document.code.text.value=decodeBase64(document.code.text.value);>
</td></tr>
<tr><td align=tengah>
<nilai input=Encode type=tombol onclick=document.code.text.value=encodeHex(document.code.text.value);>
</td><td align=tengah>
Heksa
</td><td align=tengah>
<nilai input=Decode type=tombol onclick=document.code.text.value=decodeHex(document.code.text.value);>
</td></tr>
<tr><td align=tengah>
</td><td align=tengah>
<tipe input=reset nilai=Hapus>
</td><td align=tengah>
</td></tr>
</tabel>
</bentuk>
<jam>
Encode/decode Base64 di-porting dari <a href=http://ostermiller.org/utils/Base64.html>encoder/decoder Java Base64</a>.<br>
Encode/decode Base64 telah dipindahkan ke <a href=http://ostermiller.org/base64_actionscript.html>Macromedia Actionscript</a>.<br>
<h3>Lisensi</h3>
<p>Program ini adalah perangkat lunak bebas; Anda dapat mendistribusikan ulang dan/atau memodifikasinya
di bawah ketentuan Lisensi Publik Umum GNU yang diterbitkan oleh Free
Software Foundation; baik versi 2 dari Lisensi, atau (sesuai pilihan Anda)
versi apa pun yang lebih baru.</p>
<p>Program ini kami sebarkan dengan harapan dapat bermanfaat,
tetapi TANPA JAMINAN APAPUN; bahkan tanpa jaminan tersirat mengenai KELAYAKAN UNTUK DIPERDAGANGKAN
atau KESESUAIAN UNTUK TUJUAN TERTENTU
<a href=http://www.gnu.org/copyleft/gpl.html>GNU
Lisensi Publik Umum</a> untuk detail lebih lanjut.</p>
<div style=padding:0.2cm;><a href=http://ostermiller.org/calc/>Lebih banyak konverter, kalkulator, dan perangkat JavaScript lainnya</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>indeks situs</a>)</div>
<div style=padding:0.2cm;><p>Hak Cipta <a href=http://ostermiller.org/contact.pl?regarding=JavaScript+Encoding class=mail>Stephen Ostermiller</a> 2003-2006</ p></div>
</tubuh>
</html>