| |

เขียนโปรแกรมถอดรหัสผ่านฐานข้อมูล MDB ด้วยไพธอน
เขียนโดย อ.จักรกฤษณ์ แสงแก้ว สาขาสารสนเทศศาสตร์ คณะวิทยาการสารสนเทศ มหาวิทยาลัยมหาสารคาม
สำหรับวันนี้ผู้เขียนจะนำท่านเขียนโปรแกรมถอดรหัสผ่านฐานข้อมูล Microsoft
Access 97 ถ้าท่านเป็นคนหนึ่งที่ลืมรหัสผ่านฐานข้อมูลแอคเซส บทความนี้จะนำท่านแก้ปัญหาดังกล่าว
หลักการ
รหัสผ่านของไฟล์แอคเซส (MDB) ถูกเก็บไว้ใน Headfile จากไบต์ที่ 67 ถึง 79
(ทั้งหมด 13 ไบต์) ให้ท่านอ่านไบต์ดังกล่าวออกมา จากนั้นนำมาทำการ Exclusive
OR กับค่าคงที่จำนวน 13 ค่า นั่นคือ [0x86,0xfb, 0xec, 0x37, 0x5d, 0x44,0x9c,
0xfa, 0xc6, 0x5e, 0x28, 0xe6, 0x13] ตามลำดับ โดยที่ผลลัพธ์จากการ Exclusive
OR ให้นำมาแปลงให้เป็นรหัส ASCII เพื่อแสดงผลลัพธ์เป็นอักขระต่อไป
เครื่องมือ
- ภาษาไพธอน ท่านอาจใช้ภาษาที่ท่านถนัดได้ เพราะหัวใจของบทความนี้คือ การเข้ารหัสและถอดรหัสของฐานข้อมูล
MDB ซึ่งมีรหัสผ่าน
- แฟ้มข้อมูล MDB ของ MS Access ซึ่งเข้ารหัสเอาไว้
รายละเอียด

จากตัวอย่างนี้ ผู้เขียนสร้างฟังก์ชั่นชื่อ main() โดยรับชื่อไฟล์ MDB ผ่านแป้นคีย์บอร์ดซึ่งป้อนโดยผู้ใช้งาน
จากนั้น อ่านไฟล์ด้วยไบนารีโหมด ("rb"หรือ "read-binary")
ลำดับถัดมาประกาศตัวแปรลีสต์ ประกอบด้วยสมาชิกทั้งหมด 13 ตัว มีข้อมูลดังนี้
[0x86,0xfb, 0xec, 0x37, 0x5d, 0x44,0x9c, 0xfa, 0xc6, 0x5e, 0x28, 0xe6,
0x13] ตัวแปร t ในบรรทัดแรก เป็นการอ่านไบต์ที่ 0 ถึง 65 (จำนวน 66 ไบต์)
ผู้เขียนทำเช่นนี้เพื่อกำหนดให้ตำแหน่งตัวชี้ของไฟล์มาอยู่ที่ตำแหน่ง 65
พร้อมที่จะอ่านอีก 13 ไบต์เข้ามา ซึ่งท่านสามารถเขียนโดยการใช้คำสั่ง seek()
เพื่อไปยังตำแหน่งที่ 65 เลยได้เช่นกัน รายละเอียดคำสั่ง seek ศึกษาได้จากหัวข้อการเข้าถึงไฟล์ด้วยไพธอน
เมื่ออ่านข้อมูลออกมา 13 ไบต์ จากนั้น เริ่มวนจากไบต์ที่ 0 ถึง 12 (ทั้งหมด
13 ไบต์) ในแต่ละไบต์ ให้ Exclusive OR กับค่าคงที่ซึ่งอยู่ในลีสต์ที่กำหนดไว้ในตอนต้น
ในการแสดงรหัสผ่านให้ปรากฎบนจอภาพท่านอาจใช้คำสั่ง print chr(ord(t[i]) ^
const[i]) ได้เช่นเดียวกัน
สรุปผล
บทความนี้ได้นำท่านศึกษาค้นคว้าการถอดรหัสฐานข้อมูล MDB โดยที่รหัสที่ป้อนเข้าไปให้ฐานข้อมูลจะเป็น
Character Set ชนิดใด ๆ สามารถถอดรหัสออกมาไดทั้งสิ้น
|
|
|