วันนี้ฉันต้องการเปลี่ยนรูปแบบของฟอรั่ม Discuz โดยไม่คาดคิดหลังจากดาวน์โหลดไฟล์สไตล์ ฉันพบว่ามันถูกเข้ารหัสด้วย Base64
เซียวหลินแนะนำเพจที่ถอดรหัส และโค้ดที่แยกออกมามีดังนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
<!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
<html>
<หัว>
<title>Base64 และ URL และการเข้ารหัสและถอดรหัส Hex</title>
<meta name=description content=เข้ารหัสหรือถอดรหัสข้อมูลใน Base64 หรือการเข้ารหัส URL โดยใช้ JavaScript ฝั่งไคลเอ็นต์ />
<meta name=keywords content=base64, ฐาน 64, urlencode, urldecode, hexencode, เข้ารหัส hex, hexdecode ถอดรหัส hex, javascript base64, ฐาน javascript 64, javascript urlencode, javascript urldecode, javascript hexencode, javascript hexdecode />
<ลิงก์ rel=ไอคอนทางลัด href=http://ostermiller.org/favicon.ico type=image/x-icon />
<ภาษาสคริปต์=ประเภทจาวาสคริปต์=ข้อความ/จาวาสคริปต์>
-
ฟังก์ชั่น urlDecode (str) {
str=str.replace(regExp ใหม่('//+','g'),' ');
กลับ unescape(str);
-
ฟังก์ชัน urlEncode(str){
str=หนี(str);
str=str.replace(regExp ใหม่('//+','g'),'%2B');
return str.replace(regExp ใหม่('%20','g'),'+');
-
วาร์ END_OF_INPUT = -1;
var base64Chars = อาร์เรย์ใหม่ (
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'ฉัน', 'เจ', 'K', 'L', 'M', 'N', 'O', 'P',
'ถาม', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
'ใช่','Z','a','b','c','d','e','f',
'g','h','i','j','k','l','m','n',
'o','p','q','r',',',','u','v',
'w','x','y','z','0','1','2','3',
'4','5','6','7','8','9','+','/'
-
var ReverseBase64Chars = อาร์เรย์ใหม่ ();
สำหรับ (var i=0; i < base64Chars.length; i++){
ReverseBase64Chars[base64Chars[i]] = ฉัน;
-
var base64Str;
var base64นับ;
ฟังก์ชั่น setBase64Str (str) {
base64Str = STR;
ฐาน 64นับ = 0;
-
ฟังก์ชั่น readBase64(){
ถ้า (!base64Str) กลับ END_OF_INPUT;
ถ้า (base64Count >= base64Str.length) ส่งกลับ END_OF_INPUT;
var c = base64Str.charCodeAt(base64Count) & 0xff;
ฐาน64นับ++;
กลับค;
-
ฟังก์ชั่น encodeBase64 (str) {
setBase64Str(str);
ผลลัพธ์ var = '';
var inBuffer = อาร์เรย์ใหม่ (3);
var lineCount = 0;
var เสร็จแล้ว = false;
ในขณะที่ (!เสร็จสิ้น && (inBuffer[0] = readBase64()) != END_OF_INPUT){
inBuffer[1] = readBase64();
inBuffer[2] = readBase64();
ผลลัพธ์ += (base64Chars[ inBuffer[0] >> 2 ]);
ถ้า (inBuffer[1] != END_OF_INPUT){
ผลลัพธ์ += (base64Chars [(( inBuffer[0] << 4 ) & 0x30) | (inBuffer[1] >> 4) ]);
ถ้า (inBuffer[2] != END_OF_INPUT){
ผลลัพธ์ += (base64Chars [((inBuffer[1] << 2) & 0x3c) | (inBuffer[2] >> 6) ]);
ผลลัพธ์ += (base64Chars [inBuffer[2] & 0x3F]);
} อื่น {
ผลลัพธ์ += (base64Chars [((inBuffer[1] << 2) & 0x3c)]);
ผลลัพธ์ += ('=');
เสร็จแล้ว = จริง;
-
} อื่น {
ผลลัพธ์ += (base64Chars [(( inBuffer[0] << 4 ) & 0x30)]);
ผลลัพธ์ += ('=');
ผลลัพธ์ += ('=');
เสร็จแล้ว = จริง;
-
จำนวนบรรทัด += 4;
ถ้า (lineCount >= 76){
ผลลัพธ์ += ('/n');
จำนวนบรรทัด = 0;
-
-
ส่งคืนผลลัพธ์;
-
ฟังก์ชั่น readReverseBase64(){
ถ้า (!base64Str) กลับ END_OF_INPUT;
ในขณะที่ (จริง){
ถ้า (base64Count >= base64Str.length) ส่งกลับ END_OF_INPUT;
var nextCharacter = base64Str.charAt(base64Count);
ฐาน64นับ++;
ถ้า (reverseBase64Chars [ตัวละครถัดไป]){
กลับ ReverseBase64Chars [ตัวละครถัดไป];
-
ถ้า (nextCharacter == 'A') ส่งกลับ 0;
-
กลับ END_OF_INPUT;
-
ฟังก์ชั่น ntos (n) {
n=n.toString(16);
ถ้า (n.ความยาว == 1) n=0+n;
n=%+n;
กลับ unescape (n);
-
ฟังก์ชั่น decodeBase64 (str) {
setBase64Str(str);
ผลลัพธ์ var = ;
var inBuffer = อาร์เรย์ใหม่ (4);
var เสร็จแล้ว = false;
ในขณะที่ (!เสร็จสิ้น && (inBuffer[0] = readReverseBase64()) != END_OF_INPUT
&& (inBuffer[1] = readReverseBase64()) != END_OF_INPUT){
inBuffer[2] = readReverseBase64();
inBuffer[3] = readReverseBase64();
ผลลัพธ์ += ntos((((inBuffer[0] << 2) & 0xff)| inBuffer[1] >> 4));
ถ้า (inBuffer[2] != END_OF_INPUT){
ผลลัพธ์ += ntos((((inBuffer[1] << 4) & 0xff)| inBuffer[2] >> 2));
ถ้า (inBuffer[3] != END_OF_INPUT){
ผลลัพธ์ += ntos((((inBuffer[2] << 6) & 0xff) | inBuffer[3]));
} อื่น {
เสร็จแล้ว = จริง;
-
} อื่น {
เสร็จแล้ว = จริง;
-
-
ส่งคืนผลลัพธ์;
-
var digitArray = อาร์เรย์ใหม่('0','1','2','3','4','5','6','7','8','9','a', 'ข','ค','d','e','f');
ฟังก์ชั่น toHex(n){
ผลลัพธ์ var = ''
var start = จริง;
สำหรับ (var i=32; i>0;){
ฉัน-=4;
var หลัก = (n>>i) & 0xf;
ถ้า (!เริ่มต้น || หลัก != 0){
เริ่มต้น = เท็จ;
ผลลัพธ์ += digitArray[หลัก];
-
-
กลับ (ผลลัพธ์==''?'0':ผลลัพธ์);
-
แผ่นฟังก์ชั่น (str, len, แผ่น) {
ผลลัพธ์ var = str;
สำหรับ (var i=str.length; i<len; i++){
ผลลัพธ์ = แผ่น + ผลลัพธ์;
-
ส่งคืนผลลัพธ์;
-
ฟังก์ชั่น encodeHex (str) {
ผลลัพธ์ var = ;
สำหรับ (var i=0; i<str.length; i++){
ผลลัพธ์ += แผ่น (toHex(str.charCodeAt(i)&0xff),2,'0');
-
ส่งคืนผลลัพธ์;
-
ฟังก์ชั่น decodeHex (str) {
str = str.replace(RegExp ใหม่ (s/[^0-9a-zA-Z]//g));
ผลลัพธ์ var = ;
var nextchar = ;
สำหรับ (var i=0; i<str.length; i++){
nextchar += str.charAt(i);
ถ้า (nextchar.length == 2){
ผลลัพธ์ += ntos(eval('0x'+nextchar));
ต่อไปชาร์ = ;
-
-
ส่งคืนผลลัพธ์;
-
//--></สคริปต์>
</หัว>
<ร่างกาย>
<ชื่อแบบฟอร์ม=รหัสonsubmit=return false()>
<textarea name=text style='width:100%;height:75%;' onfocus='if (this.value==ป้อนข้อความที่จะเข้ารหัสหรือถอดรหัสที่นี่){this.value=;}'>ป้อนข้อความไปที่ เข้ารหัสหรือถอดรหัสที่นี่</textarea>
<ตาราง>
<tr><td align=center>
<ค่าอินพุต=ประเภทการเข้ารหัส=ปุ่ม onclick=document.code.text.value=urlEncode(document.code.text.value);>
</td><td align=center>
URL
</td><td align=center>
<ค่าอินพุต=ประเภทการถอดรหัส=ปุ่ม onclick=document.code.text.value=urlDecode(document.code.text.value);>
</td></tr>
<tr><td align=center>
<ค่าอินพุต=ประเภทการเข้ารหัส=ปุ่ม onclick=document.code.text.value=encodeBase64(document.code.text.value);>
</td><td align=center>
ฐาน 64
</td><td align=center>
<ค่าอินพุต=ประเภทการถอดรหัส=ปุ่ม onclick=document.code.text.value=decodeBase64(document.code.text.value);>
</td></tr>
<tr><td align=center>
<ค่าอินพุต=ประเภทการเข้ารหัส=ปุ่ม onclick=document.code.text.value=encodeHex(document.code.text.value);>
</td><td align=center>
ฐานสิบหก
</td><td align=center>
<ค่าอินพุต=ประเภทการถอดรหัส=ปุ่ม onclick=document.code.text.value=decodeHex(document.code.text.value);>
</td></tr>
<tr><td align=center>
</td><td align=center>
<ประเภทอินพุต=รีเซ็ตค่า=ล้าง>
</td><td align=center>
</td></tr>
</ตาราง>
</แบบฟอร์ม>
<ชม.>
การเข้ารหัส/ถอดรหัส Base64 ได้รับการย้ายจาก <a href=http://ostermiller.org/utils/Base64.html>ตัวเข้ารหัส/ตัวถอดรหัส Java Base64</a><br>
การเข้ารหัส/ถอดรหัส Base64 ได้รับการย้ายไปยัง <a href=http://ostermiller.org/base64_actionscript.html>Macromedia Actionscript</a><br>
<h3>ใบอนุญาต</h3>
<p>โปรแกรมนี้เป็นซอฟต์แวร์ฟรี คุณสามารถแจกจ่ายและ/หรือแก้ไขได้
ภายใต้เงื่อนไขของสัญญาอนุญาตสาธารณะทั่วไปของ GNU ที่เผยแพร่โดย Free
Software Foundation เวอร์ชัน 2 หรือ (ตามตัวเลือกของคุณ)
เวอร์ชันที่ใหม่กว่า</p>
<p>โปรแกรมนี้เผยแพร่ด้วยความหวังว่าจะเป็นประโยชน์
แต่ไม่มีการรับประกันใด ๆ แม้แต่การรับประกันโดยนัยของความสามารถในการซื้อขาย
หรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ ดูที่
<a href=http://www.gnu.org/copyleft/gpl.html>GNU
ใบอนุญาตสาธารณะทั่วไป</a> สำหรับรายละเอียดเพิ่มเติม</p>
<div style=padding:0.2cm;><a href=http://ostermiller.org/calc/>ตัวแปลง เครื่องคิดเลข และสารพัด 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>ดัชนีไซต์</a>)</div>
<div style=padding:0.2cm;><p>ลิขสิทธิ์ <a href=http://ostermiller.org/contact.pl?regarding=JavaScript+Encoding class=mail>Stephen Ostermiller</a> 2003-2006</ พี></ดิฟ>
</ร่างกาย>
</html>