Login | thai-learning | Privacy Policy | About Us |

Thai Learning | ทฤษฎี IS ขั้นสูง | เว็บไทย | สารสนเทศวิทยานิพนธ์ | หนังสือรามคำแหงทั้งหมด | อีอ็อกชั่น | เกี่ยวกับผู้จัดทำ | บทกลอน |
วิชาที่เรียน 1/2555
   เมนูหลักวิชาเรียน 1/2555
   การโปรแกรมเว็บสารสนเทศ ฯ
   การโปรแกรมงานภูมิศาสตร์ ฯ
   โปรแกรมสำหรับงานสารสนเทศ
   อินเตอร์เน็ตและการบริการ สารสนเทศบนเว็บ
   บรรยากาศ เทอม 1-2555
โปรแกรมที่ผมพัฒนาครับ
   เมนูหลักโปรแกรมที่ผมพัฒนา
   ถอดรหัสผ่าน M$-Access
   ระบบการเข้าเรียนและให้คะแนน
   การทำงานของ Adder Logic
   ปรับระดับเสียงโวลุ่ม ด้วย CLI
   เกมส์เลื่อนภาพแสนสนุก vb6
    โปรแกรมจับเวลา การนำเสนอผลงานวิชาการ
บทความที่ผมเขียนครับ
   เมนูบทความ
   ภาษาซีสำหรับผู้เริ่มต้น
   ไมโครคอนโทรเลอร์เบื้องต้น
   ไมโครคอนโทรลเลอร์จำลอง
   การกำเนิดกระแสไฟฟ้าอย่างง่าย
   ควบคุมแรงดัน 0-220 โวลท์
   Graphics LCD ด้วย CCSC
   การออกแบบ PCB ด้วย Orcad
   การออกแบบ PCB ด้วย Protel
   ไพธอนส่งเมล์ด้วย GPRS
   ไพธอนควบคุม LCD ผ่าน LPT
   ควบคุม LPT ด้วย Labview
   อิมเมจโปรเซสซิ่ง ตอน 1/3
   อิมเมจโปรเซสซิ่ง ตอน 2/3
   อิมเมจโปรเซสซิ่ง ตอน 3/3
   ภาษาซีบนลินุกซ์สมองกลฝังตัว
   การใช้งาน MinGW เบื้องต้น
   ภาษาซี ARM-LPC2368
   ออกแบบ FPGA ด้วย Schematic
   ออกแบบ FPGA ด้วยภาษา VHDL
   ออกแบบ PCB เทคนิค Dryfilm
   เขียนโปรแกรม Python GUI
   การติดตั้ง NumPy 1.6.1
   เขียนไพธอนถอดรหัส MDB
   วิชวลเบสิค ควบคุมกล้อง
   สังเคราะห์ภาพกราฟิก pov-ray
   อิมพอร์ท MySQL ด้วย BigDump
   ติดตั้ง postgresql และ phppgadmin บน centos linux
   การใช้งานเธรดด้วยภาษา PHP
   การสังเคราะห์สีให้ไวยากรณ์ภาษา
   การสร้าง Search Engine
   เขียนไพธอน Client/Server
   การสร้างพาทิชั่นที่ใหญ่กว่า 3TB บนลินุกซ์ (Ubuntu)
   การรันสคริปต์ CGI ด้วยภาษาไพธอน
   การใช้งานคำสั่ง DD บน Ubuntu - Linux
   การใช้งาน Raspberry Pi
   การเอ็กซีคิวส์ + การจัดเรียงแอพฯในลินุกซ์
   X11 ด้วย Xming และ Putty
   TITAN5 บน Ubuntu - Linux
   รหัสจังหวัดทั่วโลก + เรดาร์
   การควบคุมเว็บบราวเซอร์ผ่าน SELENIUM ด้วยภาษาไพธอน
   การสร้างฟอนต์ด้วยตัวท่านเอง !!
   การสังเคราะห์กราฟเส้นและกราฟแท่งสวยงาม ด้วย PHP
โปรแกรมภาษา
   เมนู VB-Classic
   ฟังก์ชั่น Visual Basic
   คำสั่ง Visual Basic
   ตัวแปรภาษาไพธอน (ขั้นสูง)
   โมดูลต่าง ๆ ภายในภาษาไพธอน
ข่าวสารไอที
   กูเกิ้ลเปิดตัว Tablet 7 นิ้ว
   อินเดีย IIT เปิดตัว Tablet
   RaspBerry PI สมองกลฝังตัว
   คอมพิวเตอร์จิ๋ว
   ประกาศจัดซื้อจัดจ้างราชการไทย
บริการสารสนเทศ
   ไทยเว็บ 2012
   เว็บไทย
   ฐานข้อมูล วิทยานิพนธ์
   รวมคำศัพท์ภาษาไทย
   เคยฟังมั้ย - เพลงมาร์ช มมส
   ประวัติศาสตร์ชาติไทย หลวงปู่ฤาษีลิงดำ
   เพลงน้อมใจปล่อยวาง 1
   เพลงน้อมใจปล่อยวาง 2
   เพลงน้อมใจปล่อยวาง 3
เกี่ยวกับเรา
   เกี่ยวกับผู้ก่อตั้ง
   บทกลอนที่ผมแต่งครับ..
   แลกลิงค์กับเรา ที่นี่
   รายละเอียดแม่ข่าย
   ดาต้าเซนเตอร์ (Data Center)
   เงื่อนไขการใช้งาน

  
 

เขียนโปรแกรมถอดรหัสผ่านฐานข้อมูล 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 ชนิดใด ๆ สามารถถอดรหัสออกมาไดทั้งสิ้น






All trademarks and trade names are the property of their respective owners and used here for identification purposes only.
Privacy Policy | Terms of service | Report a Policy Violation (0.0046 sec)