เป้าหมายถอดรหัส: ถอดรหัสรหัสผ่านเข้าสู่ระบบที่เข้ารหัสของโทรจัน asp ถอดรหัสรหัสผ่านของโทรจัน asp เนื่องจากไม่มีคำอธิบายเวอร์ชันของโทรจัน ฉันจึงไม่ทราบชื่อเฉพาะของโทรจัน
การถอดรหัสมีสองวิธี: แทนที่ไซเฟอร์เท็กซ์ด้วยรหัสผ่านที่เข้ารหัส และใช้ไซเฟอร์เท็กซ์และอัลกอริธึมการเข้ารหัสเพื่อถอดรหัสรหัสผ่าน อดีตไม่ได้แตกเลยจริงๆ
วัตถุประสงค์ของการแคร็ก: เพื่อความสนุกสนานเท่านั้น
หากฉันไม่สามารถรับซอร์สโค้ด asp ได้ ฉันก็จะไม่มีโอกาสถอดรหัสรหัสผ่าน เพื่อนจากประเทศจีนบอกว่าเขาสามารถเข้าถึงหน้าเว็บได้ แต่ไม่สามารถแก้ไขหน้าแรกได้ เขาพบว่ามี ASP Trojan อยู่ในนั้น แต่รหัสผ่านถูกเข้ารหัส แล้วมีภาพเคลื่อนไหวนี้ เอาล่ะ มีเรื่องไร้สาระมากเกินไป เตรียมตัวให้พร้อม คำอธิบายนี้จะค่อนข้างยาว
รหัสสำคัญสำหรับการตรวจสอบรหัสผ่านเข้าสู่ระบบ asp Trojan มีดังนี้:
ถ้า Epass(trim(request.form("password")))="q_ux624q|p" แล้ว
response.cookies("รหัสผ่าน")="8811748"
-
-
สิ้นสุดการเลือก
ฟังก์ชั่น Epass (ผ่าน)
temppass=StrReverse(ซ้าย(ผ่าน&"zxcvbnm,./",10))
Templen=len(ผ่าน)
มมรหัสผ่าน = ""
สำหรับ j=1 ถึง 10
mmpassword=mmpassword+chr(asc(กลาง(temppass,j,1))-templen+int(j*1.1))
ต่อไป
Epass=replace(mmpassword,"',',B')
ฟังก์ชั่นสิ้นสุด
%>
เห็นได้ชัดว่าฟังก์ชัน Epass ถูกใช้เพื่อเข้ารหัสรหัสผ่านที่ป้อน จากนั้นไซเฟอร์เท็กซ์ที่ได้รับจะถูกเปรียบเทียบกับไซเฟอร์เท็กซ์ดั้งเดิม หากคุณมีพื้นฐานการเขียนโปรแกรมเล็กน้อย โดยเฉพาะ VB อัลกอริธึมการเข้ารหัสใน Epass จะชัดเจนทันที ถ้าไม่เช่นนั้นก็ไม่สำคัญ ฉันเชื่อว่าคุณจะเข้าใจในไม่ช้าหลังจากฉันอธิบาย ในฟังก์ชัน ตัวแปรที่เก็บรหัสผ่านจะถูกส่งผ่าน pass&"zxcvbnm,./" เชื่อมต่อเนื้อหาที่ส่งผ่านด้วย zxcvbnm,./ เพื่อรับสตริงใหม่ left(pass&"zxcvbnm,./",10) รับเลข 10 หลักแรก ฟังก์ชัน StrReverse จะกลับลำดับของสตริงผลลัพธ์ 10 หลัก len(pass) รับความยาวของรหัสผ่าน ด้านล่างเป็นวง ใช้รหัส Ascii ของแต่ละบิตในสตริงที่ได้รับ - ความยาวรหัสผ่าน + การปัดเศษ (ตำแหน่งอักขระ * 1.1) จากนั้นแปลงค่าที่ได้รับเป็นอักขระแล้วเชื่อมต่อใหม่ สุดท้าย แทนที่อักขระ ' ทั้งหมดในสตริงที่ได้รับด้วย B เพื่อให้สร้างไซเฟอร์เท็กซ์ หากเราแยกอัลกอริธึมการเข้ารหัสและแทนที่ไซเฟอร์เท็กซ์ดั้งเดิมด้วยของเราเอง รหัสผ่านที่เกี่ยวข้องก็จะกลายเป็นรหัสผ่านของคุณเช่นกัน แต่อย่างที่ฉันพูดไปนี่ไม่ใช่รอยแตกจริงๆ
หากเราเข้าสู่ความรัก กระบวนการเข้ารหัสจะเป็นดังนี้:
รัก
lovezxcvbnm,./ 'เชื่อมต่อ'
lovezxcvbn 'ติด 10 อันดับแรกเลย'
nbvcxzevol 'คำสั่งกลับรายการ'
n
110(ascii)-4(หลัก)+int(1(ตำแหน่ง)*1.1)=107
รหัส ASCII ของ 107 คือ k และรหัสสุดท้ายคือ:
k`ucy|hztsเรา
สามารถหักรหัสผ่านผ่านไซเฟอร์เท็กซ์และอัลกอริธึมการเข้ารหัส เริ่มต้นที่ขั้นตอนสุดท้ายของอัลกอริทึมและค่อยๆ ไต่ระดับขึ้นไป ขั้นตอนสุดท้ายคือการแทนที่ ' ทั้งหมดด้วย B จำเป็นต้องแทนที่ B กลับด้วย ' หรือไม่ คำตอบคือ ไม่ ตราบใดที่เราสามารถได้รับไซเฟอร์เท็กซ์สุดท้าย ก็เป็นไปได้ว่ารหัสผ่านจะแตกต่างออกไป หากมี 10 B จำนวนรหัสผ่านเดิมจะเป็น 2 ยกกำลัง 10 แม้ว่าจะมีรหัสผ่านเดิมเพียงรหัสเดียว แต่รหัสผ่านทั้งหมด 1,024 รหัสนั้นถูกต้อง หากคุณต้องการถอดรหัสให้สมบูรณ์แบบ คุณสามารถลองเขียนชุดค่าผสมทั้งหมดด้วยตัวเอง
จากนั้นขั้นตอนนี้สามารถละเว้นได้
อัลกอริธึมด้านบนมีความชัดเจนมาก
chr(asc(mid(temppass,j,1))-templen+int(j*1.1))
เราเพียงแค่ต้องแทนที่ + และ -
chr(asc(mid(temppass,j,1))+templen-int(j*1.1))
แต่มีปัญหาอื่นอยู่ เราไม่ทราบความยาวของรหัสผ่านล่วงหน้า มันไม่สำคัญ รหัสผ่านอยู่ระหว่าง 1-10 หลักยาวเกินไป
จากนั้นเราสามารถใช้การวนซ้ำตั้งแต่ 1 ถึง 10 เพื่อค้นหารหัสผ่านที่เป็นไปได้ทั้งหมด จากนั้นใช้ฟังก์ชัน StrReverse เพื่อย้อนกลับลำดับ
แล้วเราจะทราบได้อย่างไรว่าในที่สุดเราก็ได้รับรหัสผ่านใด? คุณสามารถใช้ pass&"zxcvbnm,./" เพื่อดูว่ามีตัวเลขตัวแรกของ zxvbnm,./ ต่อท้ายรหัสผ่านหรือไม่
นี่คือรหัสผ่านจริง แล้วถ้ารหัสผ่านเป็น 10 หลักก็จะถูกเสมอ เพราะจะไม่มีการเชื่อมต่อในภายหลัง ดังนั้นเราอาจได้คำตอบสองข้อ
ต่อไปนี้เป็นฟังก์ชันถอดรหัสที่ฉันเขียน:
functionCcode (รหัส)
สำหรับ Templen1=1 ถึง 10
มมโค้ด = ""
สำหรับ j=1 ถึง 10
mmcode=mmcode+chr(asc(กลาง(รหัส,j,1))+templen1-int(j*1.1))
ต่อไป
Ccode=strReverse(มมโค้ด)
response.write "รหัสผ่าน"&templen1"&Ccode&"<br>"
ถ้า mid(Ccode,templen1+1,10-templen1)=left("zxcvbnm,./",10-templen1) และ Templen1<>10 แล้ว
ผลลัพธ์=ซ้าย(Ccode,templen1)
ต่อไป
response.write "รหัสผ่านล่าสุด:"&ผลลัพธ์
ฟังก์ชั่นสิ้นสุด
พร้อมแล้ว อัลกอริธึมอาจไม่เชี่ยวชาญอย่างสมบูรณ์ในช่วงเวลาสั้น ๆ ซึ่งเป็นเรื่องปกติ จากนั้นฉันจะแนบเอกสารและซอร์สโค้ด ASP ที่เข้ารหัสและถอดรหัสในแพ็คเกจที่บีบอัด ศึกษามันอย่างระมัดระวัง ในทำนองเดียวกัน รหัสผ่าน 10 ถูกต้องเสมอ จากนั้นเราจะนำไซเฟอร์เท็กซ์ดั้งเดิมเป็น asp แล้วดูว่าผลลัพธ์จะเป็นอย่างไร ตกลง คุณสามารถเข้าสู่ระบบด้วยรหัสผ่านทั้งสองได้ สำหรับการทดสอบ ฉันถือว่า IIS ในเครื่อง หากไม่สามารถตั้งค่าเว็บเซิร์ฟเวอร์ในเครื่องได้ คุณสามารถติดต่อฉันและเขียนเป็นภาษาอื่นได้