GLOBALBYTE / MAKER PROJECTS / ESP32-S3 / USB HID
ToothPaste คืออะไร? ใช้ ESP32-S3 ส่งข้อความผ่าน BLE เป็น USB Keyboard
เคยเจอคอมพิวเตอร์ที่ต้องกรอกรหัสผ่านยาว ๆ แต่ไม่สามารถติดตั้ง Password Manager ได้ไหม? โปรเจกต์ ToothPaste ลองแก้ปัญหานี้ด้วยแนวคิดเรียบง่าย: ส่งข้อความจากอุปกรณ์ที่เราใช้อยู่ไปยังดองเกิล ESP32-S3 แล้วให้มันพิมพ์บนเครื่องปลายทางเหมือนคีย์บอร์ด USB
ToothPaste เป็นโครงการ Open Source ของ Brisk4t ที่ใช้ Bluetooth Low Energy (BLE), Web Bluetooth และความสามารถ USB Human Interface Device (HID) ของ ESP32-S3 เชื่อมอุปกรณ์สองฝั่งเข้าด้วยกัน นอกจากข้อความ ยังรองรับคำสั่งเมาส์และฟีเจอร์เสริมบางอย่างด้วย บทความนี้จะอธิบายแนวคิด วิธีทำงาน รูปภาพสาธิต ข้อจำกัดด้านความปลอดภัย และลิงก์ Firmware/Hardware ที่เผยแพร่จริง
ToothPaste คืออะไร ทำไมถึงต้องมีอุปกรณ์แบบนี้?
ปกติเราคัดลอกรหัสผ่านจาก Password Manager แล้ววางในช่องล็อกอินได้ง่ายบนเครื่องของตัวเอง แต่ในบางสถานการณ์ เช่น หน้า BIOS, เครื่องทดสอบที่ไม่สามารถติดตั้งซอฟต์แวร์ หรืออุปกรณ์ที่ต้องใช้คีย์บอร์ด USB เป็นหลัก การใช้ Clipboard ข้ามเครื่องอาจไม่สะดวก
ToothPaste จึงไม่ได้ทำหน้าที่เป็น Password Manager ตัวใหม่ แต่ทำหน้าที่เป็น สะพานเชื่อมข้อความและคำสั่ง ระหว่างอุปกรณ์ที่ใช้ส่งข้อมูล กับเครื่องปลายทางที่รับข้อมูลผ่าน USB ผู้สร้างพัฒนาให้ ESP32-S3 ทำตัวเหมือนคีย์บอร์ดหรือเมาส์ และรับคำสั่งจาก Web App ผ่าน BLE
USB HID และ Bluetooth Low Energy ทำงานร่วมกันอย่างไร?
USB HID (Human Interface Device) เป็นรูปแบบการสื่อสารที่อุปกรณ์อย่างคีย์บอร์ดและเมาส์ใช้กับคอมพิวเตอร์ เมื่อ ESP32-S3 ทำตัวเป็น HID เครื่องปลายทางจึงรับสัญญาณเหมือนมีผู้ใช้กดปุ่มคีย์บอร์ดจริง โดยไม่จำเป็นต้องติดตั้งโปรแกรม ToothPaste บนเครื่องปลายทาง
- อุปกรณ์ฝั่งส่ง: ผู้ใช้เปิด ToothPaste Web App บนอุปกรณ์และ Browser ที่รองรับ
- การเชื่อมต่อ: Web App จับคู่กับดองเกิล ESP32-S3 ผ่าน Bluetooth Low Energy และกระบวนการยืนยันตัวตนของโครงการ
- การส่งข้อมูล: ข้อความหรือคำสั่งถูกส่งไปยังบอร์ดด้วยแพ็กเก็ตที่เข้ารหัสตามรูปแบบของ Firmware
- เครื่องปลายทาง: ESP32-S3 ส่งออกเป็นเหตุการณ์ USB Keyboard/Mouse ตามคำสั่งที่ได้รับ
จุดที่ควรเข้าใจคือ เครื่องปลายทางไม่จำเป็นต้องมี Bluetooth เพราะรับสัญญาณผ่าน USB ส่วน BLE เป็นช่องทางระหว่างอุปกรณ์ที่ใช้ส่งคำสั่งกับ ToothPaste Dongle
Hardware ของ ToothPaste ใช้อะไรบ้าง? V1 กับ V2 ต่างกันอย่างไร?
ฮาร์ดแวร์หลักคือ ESP32-S3 ซึ่งมี BLE และรองรับ USB Device ในตัว ผู้สร้างระบุว่าการทดลองฟังก์ชันหลักสามารถใช้ ESP32-S3 Development Board ได้ ส่วน Custom PCB ถูกพัฒนาขึ้นเพื่อลดขนาดและทำให้สะดวกต่อการพกพา โดยไม่ใช่เงื่อนไขว่าทุกคนต้องผลิต PCB ก่อนจึงจะทดลองได้
| หัวข้อ | ToothPaste V1 | ToothPaste V2 |
|---|---|---|
| Microcontroller | ESP32-S3 | ESP32-S3 |
| การสื่อสาร | BLE + USB HID | BLE + USB HID |
| การจัดการ Crypto | Software Crypto / mbedTLS | มีตัวเลือก Hardware Crypto ผ่าน ATECC608B + CryptoAuthLib |
| การเก็บ Private Key | ขึ้นอยู่กับการจัดการกุญแจใน Software | ตัวเลือก ATECC608B สร้างและเก็บ Private Key ใน Secure Element |
| Firmware | ต้องเลือก Version ให้ตรงฮาร์ดแวร์ | v2.0.0 แจกหลาย Variant ตาม Flash และ Crypto |
Microchip ATECC608B ช่วยแยกการเก็บ Private Key ออกจาก Flash ทั่วไปของ ESP32-S3 ตามแนวทางที่ผู้สร้างอธิบาย แต่ไม่ควรเข้าใจว่าเสียบ ESP32-S3 Dev Board รุ่นใดก็ได้แล้วจะมี Secure Element เพิ่มขึ้นมาเอง
ToothPaste มีประโยชน์กับงานประเภทไหน?
ผู้สร้างยกตัวอย่างการใช้งานในสถานการณ์ที่เครื่องปลายทางรับคีย์บอร์ด USB ได้ แต่ไม่สะดวกหรือไม่สามารถติดตั้ง Password Manager บนเครื่องนั้น เช่น หน้า BIOS, ระบบที่แยกจากเครือข่าย หรืออุปกรณ์สำหรับทดลองและพัฒนา
- ส่งข้อความยาวหรือรหัสผ่าน: ลดการพิมพ์ด้วยมือ แต่ต้องยอมรับความเสี่ยงหากเครื่องปลายทางไม่น่าเชื่อถือ
- Keyboard และ Mouse: ส่งคำสั่ง HID จากเครื่องที่ใช้ควบคุมผ่าน BLE
- Media Controls: ใช้ฟังก์ชันที่ Firmware และ UI รองรับกับอุปกรณ์ของตนเอง
- งาน Maker / Embedded: เรียนรู้ USB HID, Web Bluetooth, ESP-IDF และการจัดการ Crypto ระหว่างอุปกรณ์
- ทดสอบในแล็บที่ได้รับอนุญาต: ศึกษาพฤติกรรมการรับ Input จากอุปกรณ์ HID ภายใต้ขอบเขตที่เจ้าของระบบอนุญาต
ดูภาพสาธิต ToothPaste ใช้งานจริงบน Desktop และ Mobile
Repository ของผู้สร้างมีภาพสาธิตการควบคุมอุปกรณ์ปลายทางผ่าน Web App ทั้งแบบ Desktop และ Mobile โดยเป็น ไฟล์ GIF ไม่ใช่วิดีโอ YouTube จึงใช้ภาพจริงจากผู้สร้างแทนคลิปอื่นที่ไม่เกี่ยวข้อง
ไฟล์ GIF ของโปรเจกต์มีขนาดประมาณ 12–19 MB ต่อไฟล์ จึงซ่อนไว้ภายใต้ View more ไม่โหลดหลายภาพเคลื่อนไหวเป็นชุดตั้งแต่เปิดบทความ และมีลิงก์เปิดไฟล์โดยตรงสำหรับผู้ที่ต้องการดู
ผู้สร้างยังมี GIF สาธิตเพิ่มเติมอีกหนึ่งไฟล์ แต่ไม่ได้โหลดซ้ำในบทความเพื่อจำกัดขนาดหน้า
ToothPaste ส่งข้อมูลอย่างไร และ ATECC608B ช่วยเรื่องอะไร?
README ของผู้พัฒนาอธิบายการใช้ ECDH เพื่อช่วยตกลงกุญแจร่วมกับขั้นตอนจับคู่ และใช้ AES-256 ปกป้องแพ็กเก็ตคำสั่งที่วิ่งระหว่าง Web App กับ ESP32-S3 ผ่าน BLE ส่วน Release v2.0.0 ระบุว่ามีทั้ง Firmware แบบ Software Crypto และ Hardware Crypto
ในรุ่นที่ใช้ ATECC608B ตัว Secure Element จะทำหน้าที่จัดการ Private Key แยกจาก ESP32 Flash ตามที่ผู้สร้างออกแบบ ขณะที่ฝั่ง Browser เก็บข้อมูลบางอย่างไว้ภายในเครื่อง และมีตัวเลือกเข้ารหัสข้อมูลบันทึกด้วยรหัสผ่านที่ใช้กระบวนการ Key Derivation แบบ Argon2
ข้อแตกต่าง: การเข้ารหัสข้อมูลขณะส่งผ่าน BLE, การเก็บ Private Key ใน Secure Element และการป้องกันข้อมูลบันทึกใน Browser เป็นคนละส่วนของระบบ ไม่ควรเหมารวมว่าเปิดใช้งานทุกฟังก์ชันแล้วจะป้องกันภัยคุกคามได้ทุกประเภท
ข้อจำกัดด้านความปลอดภัยที่ต้องรู้ก่อนนำไปใช้กับรหัสผ่านจริง
- USB HID ไม่ใช่ช่องทางลับ: ข้อมูลที่ปลายทางได้รับเป็นการพิมพ์ตามปกติ
- Browser Storage มีความเสี่ยง: README เตือนว่าหากผู้โจมตีเข้าถึงข้อมูลที่เก็บใน IndexedDB ของ Browser ได้ ก็อาจนำกุญแจหรือข้อมูลที่จัดเก็บไปใช้โดยมิชอบได้
- Secure Element มีขอบเขต: ช่วยแยก Private Key ออกจาก Flash แต่ไม่ได้รับประกันความปลอดภัยของ Firmware, Browser หรือเครื่องปลายทางทั้งหมด
- Feature ยังเปลี่ยนแปลง: เป็นโปรเจกต์ที่ผู้สร้างระบุว่ายังพัฒนาและทดสอบต่อเนื่อง ไม่ควรอ้างว่าผ่าน Security Audit อิสระหากไม่มีหลักฐาน
- ใช้เฉพาะอุปกรณ์ที่เป็นเจ้าของหรือได้รับอนุญาต: ความสามารถจำลอง Keyboard สามารถใช้ทดสอบระบบได้ แต่ไม่ควรใช้เพื่อเข้าถึงหรือสั่งงานเครื่องของผู้อื่นโดยไม่ได้รับอนุญาต
อยากทดลอง ToothPaste ต้องเริ่มจากอะไร?
ผู้สร้างระบุว่าใช้ ESP32-S3 Development Board ได้สำหรับการทดลองฟังก์ชันพื้นฐาน และมี Web App สำหรับอัปเดต Firmware ผ่าน Web Serial บน Browser ที่รองรับ แต่ผู้ใช้ต้องตรวจชนิดชิป ขนาด Flash และตัวเลือก Crypto ของ Firmware ให้ตรงกับฮาร์ดแวร์จริง
- เลือกบอร์ดที่รองรับ: ใช้ ESP32-S3 ที่รองรับ USB Device และมีการเชื่อมต่อสำหรับแฟลช Firmware ตามคู่มือ
- อ่าน Release Notes: ตรวจว่าอุปกรณ์ต้องใช้ Firmware แบบ 4MB/8MB, Software Crypto หรือ ATECC รวมถึงค่า GPIO LED ที่ตรงบอร์ด
- ใช้ Web App หรือเครื่องมือ Flash ที่ระบุ: ไปที่หน้า ToothPaste Web App เพื่อดูขั้นตอน Update หรือใช้ไฟล์ Release ผ่านเครื่องมือที่ผู้สร้างอ้างอิง
- จับคู่ BLE: ทำตาม Pairing Flow ของระบบ และทดลองส่งข้อความที่ไม่ใช่ข้อมูลลับกับเครื่องของตนเองก่อน
- ทดสอบ USB HID: ตรวจว่าเครื่องปลายทางรับคีย์บอร์ดและเมาส์ USB ได้ โดยไม่ละเมิดนโยบายของอุปกรณ์นั้น
Web Bluetooth และ Web Serial ไม่รองรับเหมือนกันทุก Browser และทุกระบบปฏิบัติการ แม้ README จะแนะนำ Chrome, Edge และ Brave ก็ตาม จึงควรตรวจการรองรับจริงบนอุปกรณ์ของตนเอง
ฟีเจอร์เสริม: Macro, Script และ ToothPasteDesktop
ToothPaste ไม่ได้จำกัดแค่การพิมพ์ข้อความ ผู้สร้างมีตัวเลือกสำหรับ Keyboard/Mouse, Media Control และการเก็บ Macro หรือ Script ใน Web App ด้วย ส่วน ToothPasteDesktop เป็นโปรเจกต์แยกที่ทดลองเชื่อมต่อการสั่งงานกับเครื่องมือพัฒนาและ AI Agent โดยผู้สร้างยังระบุข้อจำกัดของการสื่อสารและความเสถียรอยู่
สำหรับผู้ที่ต้องปรับรูปแบบ Packet เอง README มีตัวอย่างคำสั่ง Protobuf/Nanopb ต่อไปนี้ โดย ${workspaceFolder} เป็นตัวแปรตัวอย่างจากสภาพแวดล้อมพัฒนา ไม่ใช่เส้นทางที่ใช้ได้กับทุกเครื่อง และไม่ใช่คำสั่งแฟลช Firmware
protoc -I. --nanopb_out=${workspaceFolder}/components/toothPacket toothpacket.proto
ที่มา: Firmware README ผู้ใช้ต้องติดตั้ง Protoc และ Nanopb และปรับเส้นทางให้ตรง Workspace ของตนเองก่อนรัน
ดาวน์โหลด ToothPaste Firmware, PCB, Gerber และไฟล์ 3D
Repository เผยแพร่ไฟล์หลายประเภท โดยต้องแยก Firmware สำหรับบอร์ดแต่ละแบบ ออกจาก Hardware Design V1 และภาพฮาร์ดแวร์ V2 ก่อนนำไปใช้งานจริง
Firmware v2.0.0 — เลือกตาม Flash และ Crypto
| Firmware ที่เผยแพร่ | เหมาะสำหรับ Variant ที่ระบุ | Hyperlink |
|---|---|---|
| 4MB MBEDTLS LED10 | 4MB, Software Crypto, LED GPIO10 ตามการตั้งค่า Firmware | ดาวน์โหลด .bin |
| 4MB MBEDTLS LED48 | 4MB, Software Crypto, LED GPIO48 ตามการตั้งค่า Firmware | ดาวน์โหลด .bin |
| 8MB ATECC | 8MB และ Hardware Crypto ที่มี ATECC พร้อมกำหนดค่า | ดาวน์โหลด .bin |
| 8MB MBEDTLS | 8MB, Software Crypto | ดาวน์โหลด .bin |
อ่าน Release Notes v2.0.0 ก่อนเลือก Firmware และตรวจบอร์ดจริงเสมอ การเลือกผิด Variant อาจทำให้บอร์ดทำงานไม่ตรงกับฮาร์ดแวร์หรือไม่ทำงานตามที่คาดหวัง
PCB และ Gerber ของ V1
- ดาวน์โหลด PDF ของ ToothPaste V1 USB-C
- เปิดโฟลเดอร์ Gerber และ Drill Files สำหรับ V1
- ดาวน์โหลด 3D Model ของ ToothPaste V1 (GLB)
- ดาวน์โหลดไฟล์ 3D Preview จาก Web App (GLB)
- ดาวน์โหลดไฟล์ 3D Preview เพิ่มเติม (GLB)
สำคัญ: Gerber ในโฟลเดอร์ที่ตรวจพบใช้ชื่อ ToothPaste V1 USB-C ไม่ใช่ชุดผลิต V2 ส่วน GLB เป็นไฟล์โมเดล 3 มิติ ไม่ใช่ STL ที่รับประกันว่าพิมพ์เคสได้ทันที และยังไม่พบ STL สำหรับเคส ToothPaste V2 ที่ยืนยันได้
Source Code, Web App และเอกสาร
- GitHub — ToothPaste Source Code และ README
- ดาวน์โหลด Source Code ทั้ง Repository (ZIP)
- Firmware Source สำหรับ ESP32-S3
- Source Code ของ ToothPaste Web App
- เปิด ToothPaste Web App จากผู้สร้าง
- ดู ToothPasteDesktop Repository (โปรเจกต์เพิ่มเติม)
- อ่านเงื่อนไข Open Source License: AGPL-3.0
ในโฟลเดอร์ Web App ยังพบ ไฟล์ Firmware ที่ใช้เป็น Web Asset แต่ไม่ควรสมมติว่าเป็น Release ล่าสุดหรือใช้แทน Firmware v2.0.0 ทุก Variant ได้ ให้ใช้ Release Notes ในการเลือกไฟล์เป็นหลัก
FAQ — คำถามที่พบบ่อยเกี่ยวกับ ToothPaste ESP32-S3
1. ToothPaste คืออะไร?
เป็นโครงการ Open Source ที่ใช้ ESP32-S3 รับข้อมูลผ่าน BLE แล้วส่งออกไปยังเครื่องปลายทางในรูปแบบ USB Keyboard/Mouse
2. ToothPaste เป็น Password Manager หรือไม่?
ไม่ใช่ เป็นเครื่องมือส่งข้อความหรือคำสั่ง HID จากอุปกรณ์ที่ใช้ควบคุมไปยังอีกเครื่องหนึ่ง ไม่ใช่ระบบจัดเก็บรหัสผ่านแทน Password Manager
3. เครื่องปลายทางต้องติดตั้งโปรแกรมหรือ Driver ไหม?
ไม่ต้องติดตั้งโปรแกรมของ ToothPaste หากเครื่องรองรับ USB HID และไม่มีนโยบายห้ามอุปกรณ์ USB ภายนอก
4. ESP32-S3 ทั่วไปใช้ ToothPaste ได้หรือไม่?
README ของผู้สร้างระบุว่า ESP32-S3 Development Board สามารถทดลองฟังก์ชันหลักได้ แต่ต้องเลือก Firmware ให้ตรง Flash, การตั้งค่า LED และรูปแบบ Crypto
5. จำเป็นต้องมี Secure Element ATECC608B ไหม?
ไม่จำเป็นสำหรับการทดลอง Software Crypto ทั่วไป แต่ถ้าจะใช้ Firmware ที่รองรับ Hardware Crypto แบบ ATECC จำเป็นต้องมีฮาร์ดแวร์และการกำหนดค่าที่สอดคล้องกัน
6. ใช้บน Firefox หรือ Safari ได้ไหม?
Web App อาศัย Web Bluetooth และ Web Serial ที่มีข้อจำกัดตาม Browser/OS ผู้สร้างแนะนำ Chrome, Edge หรือ Brave และไม่ได้ยืนยันว่าทำงานครบทุกระบบบน Firefox หรือ Safari
7. ใช้กับคอมพิวเตอร์ที่ไม่มี Internet ได้ไหม?
เครื่องปลายทางไม่ต้องเชื่อม Internet เพื่อรับการพิมพ์ผ่าน USB HID ส่วนฝั่งส่งต้องเข้าถึง Web App และเชื่อม BLE ได้ตามเงื่อนไขของระบบ
8. ToothPaste ป้องกัน Keylogger ได้ไหม?
ไม่ได้ เพราะเครื่องปลายทางได้รับ Keystrokes เหมือนคีย์บอร์ดจริง Malware หรือ Keylogger บนเครื่องนั้นยังอาจบันทึกข้อมูลที่ถูกพิมพ์
9. ToothPaste V1 กับ V2 แตกต่างกันอย่างไร?
V2 เพิ่มตัวเลือก ATECC608B Secure Element และ Hardware Crypto สำหรับจัดการ Private Key แยกจาก ESP32 Flash ส่วน V1 ใช้ Software Crypto ตามเอกสารผู้สร้าง
10. Firmware ล่าสุดที่ยืนยันพบคืออะไร?
GitHub Releases ที่ตรวจพบแสดง v2.0.0 และมีไฟล์ .bin จำนวน 4 Variant ซึ่งต้องเลือกให้ตรงฮาร์ดแวร์
11. มีไฟล์ PCB หรือ Gerber ให้ผลิตเองไหม?
มีไฟล์ Gerber และ PDF ของ ToothPaste V1 USB-C ส่วน Source ที่ตรวจพบไม่ยืนยันชุด Gerber V2 สำหรับสั่งผลิตตรงตามภาพบอร์ด V2
12. มีไฟล์ STL สำหรับพิมพ์เคส ToothPaste หรือไม่?
Source ที่ตรวจพบมีไฟล์ GLB สำหรับโมเดล 3 มิติ แต่ยังไม่พบ STL เคส V2 ที่ยืนยันว่าใช้พิมพ์ได้โดยตรง
13. มีวิดีโอสาธิตการทำงานไหม?
พบ GIF สาธิต Desktop/Mobile จากผู้สร้าง 3 ไฟล์ แต่ยังไม่พบ YouTube หรือ MP4 ที่ยืนยันได้ว่าเป็นสาธิตทางการของโครงการนี้
14. สามารถใช้ ToothPaste กับ AI Agent ได้หรือไม่?
ผู้สร้างมี ToothPasteDesktop เป็นโครงการต่อยอดเกี่ยวกับ TUI/MCP แต่ยังอยู่ระหว่างพัฒนา และไม่ควรถือว่าเป็นระบบควบคุมระยะไกลที่สมบูรณ์หรือผ่านการประเมินความปลอดภัยแล้ว
สรุป: ESP32-S3 ช่วยเชื่อมโลกของ Web Bluetooth และ USB Keyboard
ToothPaste แสดงให้เห็นว่า ESP32-S3 สามารถเป็นตัวกลางระหว่างอุปกรณ์ที่ส่งคำสั่งผ่าน BLE กับเครื่องปลายทางที่รองรับ USB HID ได้ โดยไม่ต้องติดตั้งแอปเฉพาะบนเครื่องปลายทาง โครงการนี้น่าสนใจทั้งในมุม USB, BLE, ESP-IDF, Cryptography และการออกแบบ Hardware แบบพกพา
สำหรับ Maker ที่อยากทดลอง ควรเริ่มจากบอร์ดของตนเอง เลือก Firmware ให้ตรงฮาร์ดแวร์ และทดสอบด้วยข้อความที่ไม่ใช่ข้อมูลลับก่อน ส่วนผู้ที่ต้องการใช้กับรหัสผ่านจริงต้องเข้าใจให้ชัดว่าการเข้ารหัสระหว่างส่งไม่สามารถทดแทนความปลอดภัยของเครื่องปลายทางได้
References / แหล่งข้อมูลต้นฉบับ
- Hackaday — ToothPaste Goes Where Your Password Manager Doesn't (3 พฤศจิกายน 2026)
- Brisk4t — บล็อก ToothPaste ของผู้สร้าง (URL ที่ผู้ใช้ให้ไว้; ไม่สามารถตรวจเนื้อหาได้ครบในรอบนี้)
- Brisk4t — Official ToothPaste GitHub Repository
- GitHub — ToothPaste Firmware v2.0.0 Release Notes
- Firmware README — ESP32-S3 Hardware และ Protobuf
- Hackster — ToothPaste Project โดย Brisk4t
- Microchip — ATECC608B Product Information
สนใจโปรเจกต์ ESP32-S3, USB HID หรือ Embedded Security?
ติดตามโปรเจกต์ Maker และอุปกรณ์ Electronics กับ GlobalByte หรือสอบถามทีมเรื่องการเลือก ESP32-S3 Development Board และอุปกรณ์สำหรับทดลองได้ โดยไม่ได้ยืนยันว่าชุด ToothPaste V2 หรือ Secure Element เฉพาะรุ่นมีอยู่ในสต็อก