ฉันสงสัยว่าอินเตอร์เฟส USB ของ Uno ให้หมายเลขซีเรียลที่ไม่ซ้ำใคร หมายเลขใด ๆ จะเป็นส่วนหนึ่งของรหัสที่อัปโหลดไปยังชิปซึ่งจะเหมือนกันระหว่าง Unos หลาย ๆ อัน
วิธีหนึ่งคือชิป "หมายเลขซีเรียลของซิลิคอน" DS2401 ซึ่งใช้อินเทอร์เฟซ One-wire ที่จะต้องมีเพียงหนึ่งขาฟรีและรหัสบางอย่าง (รหัสจะเป็นปัญหาอาจเป็นไปได้)
วิธีที่ล่วงล้ำน้อยที่สุดและน่าจะเป็นวิธีที่น่าเชื่อถือที่สุดก็คือการอ่านโค้ดกลับมาและตรวจสอบผลรวม นั่นคือสิ่งที่ฉันทำกับฉันชิปตรวจจับลายเซ็น อย่างไรก็ตามจะตรวจพบลายเซ็น bootloader (ตามที่เขียนในปัจจุบัน) เท่านั้น การเปลี่ยนแปลงเล็กน้อยอย่างเป็นธรรมและมันสามารถ MD5- ผลรวมรหัสร่างทั้งหมด
ตัวอย่างผลลัพธ์:
Signature detector.
Written by Nick Gammon.
Signature = 1E 95 0F
Fuses
Low = FF High = D6 Ext = FF Lock = CF
Processor = ATmega328P
Flash memory size = 32768
Bootloader in use: Yes
EEPROM preserved through erase: Yes
Watchdog timer always on: No
Bootloader is 512 bytes starting at 7E00
Bootloader:
7E00: 02 01 02 03 0405 06 07 08 09 0A 0B 0C 0D 0E 0F
7E10: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
7E20: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
7E30: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
...
7FB0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
7FC0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
7FD0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
7FE0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
7FF0: 02 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
MD5 sum of bootloader = 56 72 75 2D 5D B5 0D BA 25 10 DF BE 87 D2 A1 27
ผลรวม MD5 นั้น (บรรทัดสุดท้าย) เป็นลายเซ็นของ bootloader นั้น ในความเป็นจริงแล้วเวอร์ชันล่าสุดจะค้นหาในตาราง:
MD5 sum of bootloader = FB F4 9B 7B 59 73 7F 65 E8 D0 F8 A5 08 12 E7 9F
Bootloader name: optiboot_atmega328
ดังนั้นสิ่งที่คุณสามารถทำได้คือเมื่ออัปโหลดร่างสร้างผลรวม MD5 ของรหัสฐานสิบหก มีวิธีการที่ค่อนข้างง่ายในการทำเช่นนั้น จากนั้นคุณสามารถดำเนินการ "แท็ก git" ในซอร์สโค้ดของคุณและจากนั้น (โดยใช้กระบวนการอัตโนมัติหรือกระบวนการด้วยตนเอง) โปรดจำไว้ว่าผลรวม MD5 เฉพาะของรหัสเลขฐานสิบหกแสดงถึงรหัสร่างในช่วงเวลาหนึ่ง
ฐานข้อมูลบางประเภทเช่น:
Chip: Uno
MD5 sum: D8 8C 70 6D FE 1F DC 38 82 1E CE AE 23 B2 E6 E7
Sketch: My_robot_sketch_42.ino
Git tag: version666
ตอนนี้เพื่อค้นหาแหล่งที่มาจากบอร์ดคุณต้องสร้างผลรวมของรหัส MD5 (โดยอ่านจากบอร์ด) จากนั้นค้นหาในฐานข้อมูลของคุณ