สวัสดีน้องๆ ทุกคน!
พวกเราส่วนใหญ่ก็ใช้บริการที่ต้องล็อกอินกันเยอะแยะใช่ไหมล่ะ? แน่นอนว่ามันก็มาพร้อมกับพาสเวิร์ดที่ต้องจำให้ได้อีกเป็นกอง! แต่การใช้พาสเวิร์ดเดียวกันทุกที่มันเสี่ยงนะตัวดี เลยต้องสร้างพาสเวิร์ดที่ยากๆ หลายๆ แบบจนจำแทบไม่ไหว! พี่เลยตัดสินใจใช้ Arduino มาช่วยพิมพ์พาสเวิร์ดให้อัตโนมัติ และเก็บรหัสไว้ในไมโครคอนโทรลเลอร์อย่างปลอดภัย ข้อดีคือ พอเรา upload sketch (โค้ด) เข้าไปแล้ว มันจะถูกคอมไพล์เป็น Machine Code เก็บใน Flash Memory ทำให้คนนอกแทบจะไม่สามารถดึงข้อมูลต้นฉบับออกมาได้ง่ายๆ แฮกเกอร์ก็เลยไม่สามารถขโมยพาสเวิร์ดผ่านช่องโหว่ซอฟต์แวร์เหมือนในคอมพิวเตอร์ทั่วไปได้นั่นเอง
หน้าตาของเจ้าเครื่องมือนี้ก็ประมาณนี้:
โครงสร้างฮาร์ดแวร์และส่วนประกอบหลัก
เจ้านี่ไม่มีแหล่งจ่ายไฟในตัวหรอกนะ เพราะมันทำงานร่วมกับคอมพิวเตอร์เท่านั้น ถูกออกแบบให้เรียบง่ายและกะทัดรัด โดยดึงไฟจากพอร์ต USB ของคอมได้เลย (Bus-powered) หัวใจของโปรเจกต์นี้คือ Arduino Pro Micro ที่ใช้ชิป ATmega32U4
จุดเด่นของ ATmega32U4 ที่ต่างจาก ATmega328P ใน Arduino Uno หรือ Nano ก็คือมันมีโมดูล USB Communication ในตัว ทำให้คอมพิวเตอร์มองเจ้า Arduino ตัวนี้เป็น HID (Human Interface Device) หรือพูดง่ายๆ ก็คือคอมมองมันเป็นคีย์บอร์ดนั่นเอง! เราก็เลยสามารถสั่งให้มัน "พิมพ์" ข้อความอะไรก็ได้ลงในช่องพาสเวิร์ดได้เลย
เวลาเชื่อมต่อกับคอมก็ใช้สายชาร์จสมาร์ทโฟนทั่วไป (USB micro) ได้เลยจ้า
ระบบความปลอดภัยและการควบคุม
พอต่อเข้ากับคอมแล้ว น้องต้องใส่ "พาสเวิร์ด" แค่ครั้งเดียวเพื่อเข้าถึงพาสเวิร์ดอื่นๆ ที่เก็บไว้ ซึ่งพาสเวิร์ดนี้สามารถเปลี่ยนได้ใน sketch เลย โดยพาสเวิร์ดที่ว่านี้ไม่ใช่ตัวอักษรหรือตัวเลข แต่เป็น "การหมุน" ของ Rotary Encoder ให้ถูกทิศถูกจำนวนครั้ง ฟังดูอาจงงๆ ดูวิดีโอประกอบแล้วจะเข้าใจมากขึ้นจ้า)
เพื่อความปลอดภัยขั้นสุด พี่ออกแบบให้มีล็อกสองชั้นโดยใช้ "พาสเวิร์ดทางกายภาพ" ผ่านการหมุน Rotary Encoder ก่อนจะเข้าเมนูหลัก
หลักการทำงานของ Rotary Encoder คือมันจะส่งสัญญาณพัลส์ Quadrature (สัญญาณเฟส A และ B ที่เลื่อนเฟสกัน) ขณะที่เราหมุนแกน Arduino จะตรวจจับทิศทางการหมุน (ตามเข็มหรือทวนเข็ม) และนับจำนวน "คลิก" ที่เกิดขึ้น พาสเวิร์ดที่น้องตั้งใน Sketch จะเป็นลำดับการหมุนที่ถูกต้อง เช่น "หมุนขวา 3 ครั้ง, หมุนซ้าย 5 ครั้ง" วิธีนี้คนที่ไม่รู้จักอุปกรณ์ก็เดายากมากๆ ตัวนี้ห้ามช็อตนะ!
การทำงานของโค้ด (Logic Breakdown)
ในส่วนของซอฟต์แวร์ พี่ใช้ไลบรารี <Keyboard.h> ซึ่งเป็นไลบรารีมาตรฐานสำหรับบอร์ดที่ใช้ชิป 32U4 โครงสร้างหลักของโค้ดแบ่งออกเป็น 3 ส่วนใหญ่ๆ ดังนี้:
- State Machine (เครื่องสถานะ): ควบคุมสถานะของอุปกรณ์ ตั้งแต่ 'Locked' (รอหมุนรหัสผ่าน), 'Menu' (เลือกบริการ), และ 'Typing' (ส่งรหัสผ่านไปยังคอมพิวเตอร์)
- Encoder Logic (ตรรกะของเอ็นโค้ดเดอร์): ใช้เทคนิค Interrupt หรือการ Digital Scan สัญญาณเพื่ออ่านตำแหน่งของ Encoder ได้แม่นยำ ป้องกันการข้ามสเต็ปตอนหมุน
- Keyboard Emulation (จำลองคีย์บอร์ด): เมื่อเลือกเมนูแล้ว โค้ดจะเรียกคำสั่ง
Keyboard.print("YourSecretPassword");ซึ่งจะส่งรหัส ASCII ผ่านโปรโตคอล USB HID ไปยังคอมพิวเตอร์ทันที เหมือนกับที่น้องพิมพ์เองเลย
ใช้เอ็นโค้ดเดอร์เพื่อเลื่อนเลือกเมนู แล้วกดเอ็นโค้ดเดอร์เพื่อกรอกรหัสผ่านลงในคอมพิวเตอร์
เวลาใช้จริงลื่นปรื๊ดเลยวัยรุ่น แค่หมุน เลือก กด รหัสผ่านก็เข้าไปในช่องที่ต้องการภายในเสี้ยววินาที
นี่คือวิดีโอที่พี่กำลังประกอบมันอยู่ ดูกันได้เลย แล้วอย่าลืมกดไลค์ให้พี่ด้วยนะ! สำหรับใครที่อยากเห็นขั้นตอนการประกอบและประกอบอย่างละเอียด รวมถึงวิธีเขียนโค้ดและตั้งค่ารหัสผ่าน สามารถดูได้ในวิดีโอด้านล่างนี้เลย พี่รวบรวมทุกขั้นตอนไว้หมด ตั้งแต่การต่อวงจรไปจนถึงการทดสอบใช้งานจริง ถ้าวิดีโอนี้มีประโยชน์ อย่าลืมกดไลค์เป็นกำลังใจให้พี่ด้วยนะ!
สำหรับรายการชิ้นส่วน สามารถหาข้อมูลเพิ่มเติมได้
พี่เปิดรับคำถามและข้อเสนอแนะทุกชนิด ถ้ามีอะไรสงสัยหรืออยากแนะนำอะไร คอมเมนต์มาได้เลยจ้า! สู้งานนะน้อง