ฉันได้รับไฟล์ไบนารีและฉันควรจะถอดรหัสรหัสผ่าน (ทำการบ้าน) นอกจากนี้ยังมีฟังก์ชั่นที่ได้รับ (ฟังก์ชั่นซึ่งเป็นส่วนหนึ่งของไฟล์ไบนารี) ฟังก์ชั่นนั้นแสดงให้เห็นว่าสตริงการป้อนข้อมูลถูกเปรียบเทียบกับอักขระรหัสผ่านที่ถูกต้องตามตัวอักษรและคืนเท็จทันทีเมื่ออักขระผิด (นั่นไม่ใช่วิธีที่ปลอดภัยในการทำฉันเดาเพราะมันถึงเวลาที่จะรั่วไหล ตัวอย่าง). แต่ครูของเราได้เพิ่มตัวจับเวลาแบบสุ่มที่ให้ผลลัพธ์ (แก้ไข / ผิด) เพื่อให้ยากขึ้นสำหรับเรา ...
อย่างไรก็ตามฉันมีฉันทำมันสำเร็จแล้วด้วยวิศวกรรมย้อนกลับและได้รับรหัสผ่านที่ถูกต้อง ตอนนี้ฉันกำลังเล่นกับมันในบรรทัดคำสั่ง:
/usr/bin/time -v ./program_name enter_password
ด้วยคำสั่งนี้ฉันได้รับข้อมูลมากมายเช่นเวลาของระบบ, swaps, เวลาดำเนินการ .. แต่สิ่งที่น่าสนใจที่สุดสำหรับฉันคือ "การเปลี่ยนบริบทโดยสมัครใจ" เพราะอักขระที่ถูกต้องมากขึ้นของรหัสผ่านที่ฉันป้อน " ฉันเข้าใจ!
ยิ่งฉันป้อนตัวละครผิดมากเท่าไหร่ฉันจะได้รับ
ฉันใช้เวลาเกือบสองชั่วโมงในการถอดรหัสรหัสผ่านเพียงแค่ป้อนคำสั่งนั้นป้อนอักขระและสังเกต "สวิตช์บริบทแบบสมัครใจ" เมื่อใดก็ตามที่อักขระ ONE ถูกต้อง "การสลับบริบทแบบสมัครใจ" จะลดลงหนึ่งตัว
คำถามของฉัน "สวิตช์บริบทแบบสมัครใจ" คืออะไรและทำไมพวกเขาถึงช่วยฉันถอดรหัสรหัสผ่าน