- จากประเด็นถกเถียงเรื่องการแบน Flipper Zero ในแคนาดา บทความนี้จับและวิเคราะห์ สัญญาณ RF ของกุญแจรีโมตรถยนต์ จริง เพื่อตรวจสอบว่าการโจมตีแบบเล่นซ้ำสัญญาณอย่างง่ายทำได้ไกลแค่ไหน
- RTL-SDR สามารถรับข้อมูล I/Q ดิบในช่วง 24~1750MHz เพื่อ แสดงภาพ บันทึก และวิเคราะห์ ได้ ส่วน CC1101 ของ Flipper Zero ส่งและรับได้ แต่ต้องตั้งค่า RF ให้ถูกต้อง
- ที่ 433.92MHz พบ เบิร์สต์สั้น 3 ชุด ทุกครั้งที่กดปุ่ม และพีกสองจุดที่อยู่สองฝั่งของความถี่กลางถูกตีความว่าเป็น 2-FSK ซึ่งส่งค่า 0 และ 1 บนความถี่ต่างกัน
- เมื่อใช้ Universal Radio Hacker โดยตั้งค่า FSK, 50 samples/symbol และ Manchester II decoding โครงสร้างที่ปรากฏคือเบิร์สต์ยาวที่ไม่มีข้อมูล แพ็กเก็ตหลัก 3 ชุด และแพ็กเก็ตสุดท้ายแบบสั้น
- ในสัญญาณสามารถระบุพื้นที่เอนโทรปีสูงสำหรับ rolling code, เคาน์เตอร์ที่เพิ่มขึ้น, ไบต์คำสั่ง lock/unlock, ลำดับแพ็กเก็ต, XOR checksum และ syncword จนนำไปสู่ข้อสรุปว่าการเล่นซ้ำสัญญาณอย่างเดียวทำให้ขโมยรถส่วนใหญ่ได้ยาก
เป้าหมายและบริบทของการทดลอง
- ผู้เขียนสำรวจโปรโตคอลสื่อสารไร้สายด้วยดองเกิล RTL-SDR มาหลายปีแล้ว และครั้งนี้มุ่งเน้นว่า กุญแจรีโมตรถยนต์ ส่งข้อมูลอย่างไร รวมถึงความเป็นไปได้ของการโจมตีแบบเล่นซ้ำสัญญาณ
- ก่อนหน้านี้เคยจับสัญญาณกุญแจรีโมตมาแล้ว แต่การเข้าถึงรถยนต์สำหรับทดสอบมีจำกัด จึงยังไม่ได้นำไปสู่การวิเคราะห์ที่มีความหมาย
- การทดลองครั้งนี้เป็นขั้นตอนเตรียมการเพื่อ รีเวิร์สเอนจิเนียร์และเล่นซ้ำ สัญญาณกุญแจรีโมตจริง โดยไล่ตั้งแต่แนวคิด RF พื้นฐานไปจนถึงลำดับการวิเคราะห์
- ยังพูดถึงประเด็นว่า ต่างจากการแบน Flipper Zero ในแคนาดา รถยนต์ส่วนใหญ่ไม่ได้ถูกขโมยได้ง่ายด้วยการโจมตีแบบเล่นซ้ำสัญญาณอย่างเดียว
- มีการกล่าวถึง RollingPwn ในฐานะกรณียกเว้นที่เกี่ยวกับ Honda
ฮาร์ดแวร์ที่ใช้
-
RTL-SDR
- สามารถเปลี่ยนดองเกิล USB ทีวี/วิทยุภาคพื้นดินราคาประมาณ 10 ดอลลาร์ให้เป็น ตัวรับ RF อเนกประสงค์ เพื่อตรวจสอบและถอดรหัสสัญญาณในช่วง 24~1750MHz ได้
- RTL-SDR มีความสามารถสูงเพราะชิป RTL2832U ที่ใช้งาน SDR ได้
- โดยทั่วไปจะข้ามการประมวลผลสัญญาณที่ทำในฮาร์ดแวร์ และให้โฮสต์เข้าถึง ข้อมูล I/Q ดิบโดยตรง
- เมื่อได้รับข้อมูลดิบแล้ว แม้ยังไม่รู้การตั้งค่าเฉพาะ เช่น วิธีมอดูเลชัน แบนด์วิดท์ หรืออัตราข้อมูล ก็ยังสามารถรับสัญญาณ แสดงภาพ บันทึก แล้วนำมาวิเคราะห์เองได้
-
Flipper Zero และ CC1101
- ส่วนสำคัญของ Flipper Zero สำหรับการทดลองนี้คือ โมดูล Sub-GHz
- โมดูลดังกล่าวใช้ชิป CC1101 และรองรับความถี่ต่ำกว่า 1GHz ที่ใช้ในอุปกรณ์ไร้สายสำหรับผู้บริโภคทั่วไป
- โมดูล CC1101 ยังซื้อแยกได้ในราคาตั้งแต่ 5 ดอลลาร์ขึ้นไป เพื่อนำไปใช้กับ Arduino, Raspberry Pi หรืออะแดปเตอร์ USB-to-TTL ได้
-
ความแตกต่างระหว่าง CC1101 กับ RTL2832U
- CC1101 ของ Flipper Zero เป็น ทรานซีฟเวอร์ จึงส่งและรับสัญญาณได้ทั้งคู่
- RTL2832U ของ RTL-SDR รับและวิเคราะห์สัญญาณดิบได้ แต่ส่งสัญญาณไม่ได้
- CC1101 ไม่รองรับ SDR จึงคืนกลับมาเฉพาะข้อมูลที่ประมวลผลเสร็จแล้ว และจะมีประโยชน์ก็ต่อเมื่อตั้งค่า RF ของสัญญาณที่จะส่งให้ถูกต้อง
- มีอุปกรณ์ SDR ที่ส่งและรับได้เช่นกัน แต่ราคาค่อนข้างสูง
แนวคิดพื้นฐานสำหรับอ่านสัญญาณ RF
- การส่งสัญญาณด้วยความถี่วิทยุส่งสัญญาณผ่าน คลื่นวิทยุ ซึ่งเป็นคลื่นแม่เหล็กไฟฟ้า
- ใช้ คลื่นพาหะ ที่มีความถี่สูงกว่าสัญญาณเดิมที่ต้องการส่ง เพื่อเพิ่มความน่าเชื่อถือในการส่งผ่านอากาศ
- ความถี่คือจำนวนครั้งที่คลื่นพาหะเกิดขึ้นใน 1 วินาที และโดยทั่วไปใช้กำหนดช่องสื่อสาร
- การมอดูเลชันคือวิธีแสดงข้อมูลบนคลื่นวิทยุ
- AM แสดงข้อมูลด้วยการเปลี่ยนแปลงแอมพลิจูด
- FM แสดงข้อมูลด้วยการเปลี่ยนแปลงความถี่
- แบนด์วิดท์คือช่วงความถี่ที่สัญญาณ RF ที่ถูกมอดูเลตครอบครอง และเกี่ยวข้องกับปริมาณข้อมูลที่สัญญาณสามารถบรรทุกได้
สัญญาณกุญแจรีโมตที่ตรวจสอบด้วย SDR#
-
เครื่องมือและความถี่
- SDR# เป็นแอปพลิเคชัน DSP ฟรีที่เขียนด้วย C# รองรับการแสดงสเปกตรัมแบบเรียลไทม์สำหรับ SDR และการดีมอดูเลตมอดูเลชันทั่วไปบางประเภท
- เชื่อมต่อดองเกิล RTL-SDR และใช้ไดรเวอร์ WinUSB แทนไดรเวอร์ DVB-T เริ่มต้น
- เมื่อจูนไปที่ 433.92MHz จะเห็นกิจกรรมของรีโมตระยะใกล้ได้
- 433.92MHz ถูกแนะนำว่าเป็นความถี่มาตรฐานแบบไม่ต้องมีใบอนุญาตที่ใช้ในสหภาพยุโรป ประเทศรอบข้าง และโมร็อกโกซึ่งเป็นที่อยู่อาศัยของผู้เขียน
-
รูปแบบที่สังเกตได้
- ทุกครั้งที่กดปุ่มกุญแจรีโมตรถยนต์ จะเกิด เบิร์สต์สั้นต่อเนื่อง 3 ชุด
- มีพีกขนาดใหญ่สองจุดปรากฏที่สองฝั่งของ 433.92MHz ตรงกลางสเปกตรัม
- หลังตรวจสอบวิธีมอดูเลชันทั่วไปแล้ว รูปแบบนี้ดูเข้ากับ 2-FSK
- พีกเล็ก ๆ ที่เห็นบนหน้าจอถือว่าเป็นความถี่ไม่พึงประสงค์ที่เกิดจากฮาร์ดแวร์ส่งสัญญาณราคาถูกและระยะใกล้ระหว่างรีโมตกับเสาอากาศ จึงละไว้
-
การตีความ 2-FSK
- FSK คือ Frequency-Shift Keying เป็นการมอดูเลตความถี่ที่เข้ารหัสข้อมูลด้วยการสลับความถี่คลื่นพาหะระหว่างความถี่แบบไม่ต่อเนื่องหลายค่า
- “2” ใน 2-FSK หมายถึงจำนวนช่องที่ใช้ในการเข้ารหัส
- ในกรณีนี้ ค่า 0 และ 1 ถูกเข้ารหัสด้วยความถี่สองค่าที่ต่างกัน จึงอธิบายพีกสองจุดที่สังเกตได้
ดึงบิตและไบต์ด้วย Universal Radio Hacker
-
การวิเคราะห์ด้วย URH
- Universal Radio Hacker เป็นชุดเครื่องมือโอเพนซอร์สสำหรับสำรวจโปรโตคอลไร้สาย และรองรับ SDR หลายรุ่นโดยตรง
- URH มีการดีมอดูเลตสัญญาณและการตรวจจับพารามิเตอร์มอดูเลชันอัตโนมัติ ใช้เพื่อระบุบิตและไบต์ที่ส่งผ่านอากาศ
- ตอนแรกหา parameter ที่ถูกต้องไม่พบ ทำให้ได้ผลลัพธ์ผิด
- เมื่อบันทึกสัญญาณซ้ำหลายชุดพร้อมกัน อัตราความสำเร็จของการตรวจจับอัตโนมัติก็เพิ่มขึ้น และในกรณีนี้พบว่าการตั้งค่าที่ถูกต้องคือ 50 samples/symbol, FSK
-
โครงสร้างเบิร์สต์และ Manchester decoding
- เมื่อขยายสัญญาณก็ยืนยันเบิร์สต์ 3 ชุดที่เห็นใน SDR# อีกครั้ง
- เบิร์สต์ที่สองยังประกอบด้วยส่วนแยก 3 ส่วนอีกที ทำให้มีส่วนที่ต้องวิเคราะห์ทั้งหมด 5 ส่วน
- เมื่อตัดบิตสตรีมอัตโนมัติจากแต่ละส่วนและแปลงเป็นเลขฐานสิบหก พบรูปแบบซ้ำ แต่มีเลขฐานสิบหก 5 ตัวเดิมและไบต์
0x55จำนวนมากซ้ำกัน จึงต้องประมวลผลเพิ่มเติม - หลังลองอัลกอริทึมถอดรหัสหลายแบบในแท็บ Analysis ของ URH พบว่า Manchester II เปลี่ยนไบต์
0x55ให้เป็น null และไม่สร้างข้อผิดพลาดในการถอดรหัส
-
บทบาทของ Manchester encoding
- Manchester เป็นวิธีมอดูเลชันดิจิทัลอย่างง่ายที่ทำให้สัญญาณไม่ค้างอยู่ในสถานะ logic low หรือ high นานเกินไป
- เปลี่ยนสัญญาณข้อมูลให้เป็นสัญญาณที่รวมข้อมูลกับการซิงโครไนซ์เข้าด้วยกัน ซึ่งมีประโยชน์ต่อ clock recovery
- สื่อแอนะล็อกไวต่อสัญญาณรบกวนและการแทรกแซง คุณสมบัตินี้จึงช่วยเมื่อส่งข้อมูลดิจิทัล
- ใน Manchester ข้อมูลไบนารีจะถูกเข้ารหัสเป็นบิตสองบิตที่ตรงข้ามกัน
- ตัวอย่าง:
0เป็น01,1เป็น10หรือใช้กลับกันตามธรรมเนียม
โครงสร้างแพ็กเก็ตและการคาดคะเน rolling code
-
โครงสร้างที่เห็นทุกครั้งที่กดปุ่ม
- จากการเปรียบเทียบ capture หลายครั้งด้วยมือ พบว่าการกดปุ่มแต่ละครั้งมีโครงสร้างคงที่
- มีเบิร์สต์ยาว 1 ชุดที่ไม่มีข้อมูล และเมื่อถอดรหัสจะได้ null byte 100 ไบต์
- มีเบิร์สต์ 3 ชุดที่คล้ายกันมาก แต่มี 2 ไบต์เปลี่ยนไปบางส่วน
- ต่อด้วยเบิร์สต์สุดท้าย 1 ชุดที่ค่อนข้างคล้ายกับ 3 ชุดก่อนหน้า แต่สั้นกว่า
- มองเบิร์สต์ตรงกลาง 3 ชุดเป็น แพ็กเก็ต หลักและวิเคราะห์ละเอียดขึ้น
- พบ ID ที่เพิ่มขึ้น ซึ่งดูเหมือนเพิ่มขึ้นทีละ 1 ในสัญญาณใหม่แต่ละครั้ง
-
กลไก rolling code
- rolling code ใช้ในระบบ keyless entry เพื่อป้องกันการโจมตีแบบเล่นซ้ำสัญญาณอย่างง่าย
- ป้องกันวิธีที่ผู้โจมตีบันทึกการส่งสัญญาณไว้แล้วนำมาเล่นซ้ำภายหลังเพื่อให้ตัวรับปลดล็อก
- รถยนต์และรีโมตตกลงใช้อัลกอริทึมที่ปลอดภัยทางคริปโตกราฟีเพื่อสร้าง rolling code สำหรับการยืนยันตัวตน
- คีย์ถูกสร้างและติดตามโดยใช้เคาน์เตอร์ และเคาน์เตอร์ของรีโมตกับรถยนต์ต้องคงสถานะซิงโครไนซ์กัน
- validity window ช่วยให้รีโมตไม่หลุดจากการซิงโครไนซ์ แม้รถยนต์ไม่ได้รับสัญญาณ
- ในการใช้งานจำนวนมาก อนุญาตให้กดปุ่มนอกระยะได้สูงสุด 255 ครั้ง หลังจากนั้นต้องซิงโครไนซ์รีโมตใหม่ด้วยตนเอง
-
การระบุฟิลด์ในสัญญาณ
- เนื่องจาก rolling code ปลอดภัยทางคริปโตกราฟี ส่วนที่มี เอนโทรปีสูงที่สุด ในสัญญาณจึงถูกระบุว่าเป็นพื้นที่ที่เกี่ยวข้องกับ implementation นี้
- ID ที่เพิ่มขึ้นซึ่งพบก่อนหน้านี้ถูกคาดว่าเป็นเคาน์เตอร์ของระบบ rolling code
- เมื่อเปรียบเทียบสัญญาณ lock และ unlock ก็ระบุไบต์ที่แสดงคำสั่งได้
8= unlock4= lock
ลำดับแพ็กเก็ต, checksum และ syncword
-
ค่าที่ดูเหมือนลำดับแพ็กเก็ต
- หนึ่งในพื้นที่แปรผันที่เหลือมีค่าเดิมซ้ำในสัญญาณอื่น ๆ ที่จับได้ด้วย
- เมื่อดูค่า 3 ค่าเป็นเลขฐานสอง บิตบนสุดเพิ่มขึ้นเหมือนลำดับ
0x6:01100xA:10100xE:1110- หากดูไปจนถึงแพ็กเก็ตสุดท้ายลำดับที่ 4 จะได้รูปแบบ
0x13:10011 ซึ่งสอดคล้องกับการตีความว่ามีลำดับแพ็กเก็ตอยู่ - การเปลี่ยนแปลงของบิตต่ำสุดถูกตัดออกจากการพิจารณานี้
-
XOR checksum
- ไบต์สุดท้ายเปลี่ยนไปในแต่ละแพ็กเก็ต และเปลี่ยนเหมือนสุ่มระหว่างสัญญาณทั้งหมดด้วย
- เนื่องจากเป็นไบต์ท้ายของแพ็กเก็ตและเปลี่ยนไม่สม่ำเสมอ จึงอาจเป็น checksum
- เมื่อนำไบต์นี้ไป XOR กับไบต์ลำดับที่วิเคราะห์ก่อนหน้า จะได้ค่าคงที่ในแต่ละตัวอย่าง
- ตัวอย่าง 1:
0x06 ^ 0xB9 = 0xBF0x0A ^ 0xB5 = 0xBF0x0E ^ 0xB1 = 0xBF
- ตัวอย่าง 2:
0x06 ^ 0xCC = 0xCA0x0A ^ 0xC0 = 0xCA0x0E ^ 0xC4 = 0xCA
- เมื่อนำ XOR ไปใช้กับไบต์ทั้งหมดของแพ็กเก็ต ค่าได้จะคลาดเคลื่อนอยู่ 1 เสมอ จึงมีความเป็นไปได้สูงว่า 2 ไบต์แรกถูกยกเว้นจาก checksum
- 2 ไบต์แรกถูกตีความว่าทำหน้าที่เป็น syncword เพื่อซิงโครไนซ์ตัวรับและบอกจุดเริ่มต้นของข้อมูล
องค์ประกอบสัญญาณสุดท้ายและขั้นตอนถัดไป
- เบิร์สต์ยาวตอนต้นทำหน้าที่ปลุก ตัวรับวิทยุ ที่อยู่ในโหมดพลังงานต่ำขณะไม่ใช้งาน ให้พร้อมรับข้อมูล
- เหตุผลที่รีโมตส่งแพ็กเก็ต 3 ชุดที่มีข้อมูลเกือบเหมือนกัน คือเพื่อเพิ่มความน่าเชื่อถือ เผื่อการส่งชุดใดชุดหนึ่งเสียหายระหว่างทาง
- ผลการติดป้ายกำกับสุดท้ายตีความสัญญาณกุญแจรีโมตรถยนต์ออกเป็น syncword, พื้นที่ที่เกี่ยวข้องกับ rolling code, เคาน์เตอร์, ไบต์คำสั่ง, ลำดับแพ็กเก็ต, XOR checksum และอื่น ๆ
- ขั้นตอนถัดไปคือการผนวกรูปแบบสัญญาณนี้เข้ากับ Flipper Zero เพื่อรองรับการอ่าน การ serialize ใหม่ และการเล่นซ้ำ
- หากมีข้อมูลไม่ถูกต้องหรือจุดที่ปรับปรุงได้ สามารถส่ง pull request บน GitHub ได้
1 ความคิดเห็น
ความคิดเห็นใน Hacker News
ต้องรีเวิร์สเอนจิเนียร์ รีโมตรถยนต์ ราคาถูกที่ซื้อจาก AliExpress เพื่อทำโปรเจ็กต์อิเล็กทรอนิกส์ แต่ด้วยออสซิลโลสโคปกับ Wikipedia ก็ทำสำเร็จได้เพราะนั่งงมอยู่นานพอ
ครั้งหน้าคิดว่าจะลองใช้วิธีจากโพสต์บล็อกนี้ แล้วพัฒนาตัวเองให้เป็นแฮ็กเกอร์ที่เก่งขึ้น
มี GNU Radio flow graph สำหรับจุดประสงค์คล้ายกันด้วย: https://github.com/bastibl/gr-keyfob
สไลด์ประกอบ: https://www.fleark.de/keyfob.pdf
ถ้ามีการสร้างและติดตามกุญแจด้วยตัวนับระหว่างรีโมตกับรถเพื่อคงการซิงก์ไว้ ก็สงสัยมาตลอดว่า รีโมตแบบเรียนรู้ เลี่ยงเรื่องนี้ได้อย่างไร
รถผมมีปุ่มเปิดประตูโรงรถในตัวอยู่สองสามปุ่ม และน่าจะตั้งค่าโดยเอารถเข้าโหมดเรียนรู้แล้วกดปุ่มบนรีโมตโรงรถ ดูเหมือนน่าจะเป็นความสามารถที่ซับซ้อนกว่าการเล่นสัญญาณซ้ำธรรมดา คือถอดรหัสสัญญาณ แยกชนิด แล้วเริ่มจับคู่กับตัวเปิดประตูหรือเปล่า
เท่าที่เข้าใจคือทำงานร่วมกับหลายบริษัทเพื่อรองรับทั้ง fixed code และ rolling code และให้จับคู่กับประตูโรงรถนั้นได้ Chamberlain[0] ซึ่งเป็นผู้ผลิตประตูโรงรถรายใหญ่ที่สุดในสหรัฐฯ เป็นเจ้าของหลายแบรนด์ และใช้ rolling code algorithm ที่รู้จักและถอดรหัสได้[1]
[0] https://www.chamberlain.com/
[1] https://github.com/argilo/secplus
กระบวนการนี้ใกล้เคียงกับการบอกตัวเปิดประตูว่า “ได้ยินเสียงรีโมตตัวใหม่นี้ไหม? อนุญาตให้ตัวนี้เปิดประตูได้ด้วย” ดูเหมือนว่าปุ่มฝั่งรถจะวนใช้โปรโตคอลยอดนิยมอยู่ไม่กี่แบบ และในทางปฏิบัติ ของที่ใช้แพร่หลายในสหรัฐฯ ก็น่าจะมีแค่ตระกูล Chamberlain/Liftmaster หรือ Genie ราว 4-5 แบบ
รีโมตแบบเรียนรู้สำหรับระบบลักษณะนี้อาจทำงานได้ด้วยการอัดสัญญาณแล้วเล่นกลับตรง ๆ แต่ถ้าระหว่างอัดมีสัญญาณอื่นในย่านเดียวกัน เช่น กริ่งไร้สาย ปะปนเข้ามา ก็อาจเผลอเล่นสิ่งแปลกปลอมกลับไปด้วย อย่างน้อยจึงต้องมีการตัดเอาเฉพาะส่วนที่เป็นสัญญาณเปิดประตูจริงออกมา และทางที่ดีกว่าคือถอดรหัสสัญญาณเพื่อหาโค้ด แล้วสร้างสัญญาณใหม่ที่สะอาดทุกครั้ง
บริษัททำตัวเปิดประตูโรงรถสำหรับบ้านในสหรัฐฯ แทบทั้งหมดเปลี่ยนรุ่นใหม่ไปเป็น rolling code ตั้งแต่ทศวรรษ 1990 ดังนั้นถ้าติดตั้งมาไม่เกินราว 25 ปี ก็แทบจะแน่นอนว่าใช้ rolling code โดยทั่วไปรีโมตจะสร้างลำดับ pseudo-random จาก seed ที่มีอยู่ และส่งค่าถัดไปทุกครั้งที่กด ส่วนตัวเครื่องในโหมดเรียนรู้จะดูค่าต่อเนื่องหลายค่าเพื่อเดา seed นั้น แล้วเพิ่มเข้าไปในรายการรีโมต
ระหว่างใช้งาน ตัวเครื่องจะถอดรหัสค่าที่รับมาแล้วตรวจว่าตกอยู่ในช่วงที่คาดไว้ของรีโมตที่รู้จักหรือไม่ ถ้าใช่ก็เปิดประตูและอัปเดตตำแหน่งของรีโมตตัวนั้น โดยจะเผื่อช่วงไว้บ้างเพื่อไม่ให้เกิดกรณีเด็กกดปุ่มเล่นหลายครั้งระหว่างเดินทาง แล้วกลับถึงบ้านแต่เปิดไม่ได้
รีโมตแบบเรียนรู้ที่โคลนรีโมต rolling code เดิมก็เป็นไปได้ในทางหลักการ แต่ในมุมของตัวเครื่อง ต้นฉบับกับตัวโคลนคือรีโมตอันเดียวกัน ถ้าฝั่งใดฝั่งหนึ่งไม่ได้ใช้เป็นเวลานาน ขณะที่อีกฝั่งดันค่าลำดับเลยช่วงเผื่อออกไป ก็อาจทำให้อีกฝั่งใช้งานไม่ได้ และการจับคู่ใหม่ก็อาจยุ่งตามรายละเอียดการออกแบบของระบบ
รีโมตอเนกประสงค์สำหรับ rolling code ที่เคยเห็นจริง ๆ ไม่ได้เรียนรู้จากรีโมตเดิม แต่เป็นการบอกชนิดของตัวเครื่องให้รีโมตรู้ แล้วจับคู่กับตัวเครื่องใหม่เหมือนรีโมตจากผู้ผลิต อินเทอร์เฟซผู้ใช้มักแย่มาก จนมีแนวโน้มว่าจะต้องหาเลขจากตารางในคู่มือ กดปุ่มลับ แล้วกดปุ่มที่จะตั้งโปรแกรมตามจำนวนครั้งของเลขนั้น
ถ้าระบุได้อัตโนมัติว่าระบบ rolling code เป็นแบบไหนจากสัญญาณของรีโมตเดิมก็คงดี แต่แบบนั้นต้องมีตัวรับสัญญาณ ซึ่งแทบไม่มีประโยชน์อย่างอื่น จึงยากจะคุ้มค่า คำสั่งจับคู่และเปิด/ปิดประตูโรงรถโดยพื้นฐานแล้วเป็นการสื่อสารทางเดียวจากรีโมตไปยังตัวเครื่อง
ผู้เขียนถอดรหัสได้ทั้งหมดแล้ว แต่จริง ๆ ยังไม่ได้เปิดประตูรถ ต้องเจาะ rolling code ให้ได้ก่อน และไม่สามารถทำแบบบวก 1 แล้วส่งกลับไปใหม่ได้
จากภายนอก rolling code ถัดไปควรดูเหมือนค่าที่สุ่มมา
อยากให้ผู้ผลิตรถเริ่มทำรีโมตขนาดเล็กมากที่ใส่กระเป๋าสตางค์ได้ หรืออาจเป็น รีโมต RFID
หรือหวังว่าจะมีอุปกรณ์คล้าย Flipper ขนาดเท่าบัตรเครดิตมาทำหน้าที่เดียวกัน เอาจริง ๆ กุญแจรถเป็นของที่ใหญ่รองจากมือถือในกระเป๋าผม และอย่างน้อยในแง่ความหนาก็กวนใจพอสมควร
นาน ๆ ทีได้เจอบทความที่อ่านแล้วเข้าใจ รู้สึกสดชื่นดี
การที่เข้าถึงอุปกรณ์โปรแกรมกุญแจได้ง่ายขึ้น ทำให้แนวโน้มที่ สิทธิ์การโปรแกรมกุญแจ ถูกย้ายไปอยู่หลัง “ระบบความปลอดภัย” ที่เข้มขึ้นเป็นเรื่องน่าสนใจ
ผู้ผลิตเป็นคนกำหนดว่าอะไรถือเป็นส่วนหนึ่งของระบบ “ความปลอดภัย” และมันอาจขยายไปได้ไกลกว่ากุญแจจนรวมถึงโมดูลอีกมากมาย จะมีผลกับอาชญากรที่ขึ้นชื่อเรื่องทำตามกฎอย่างเคร่งครัดหรือไม่ก็ยังถกเถียงกันได้ (/s) แต่กับผู้ประกอบการบางรายย่อมกระทบแน่นอน
คนที่มีประวัติอาชญากรรมอาจถูกกันออกจากระบบนี้ หลังพ้นโทษแล้ว เส้นทางการเริ่มธุรกิจส่วนตัวจนประสบความสำเร็จเป็นหนึ่งในทางสำคัญสำหรับอดีตผู้ต้องโทษ แต่ภายใต้ระบบนี้อาจกลายเป็นเรื่องตีบตัน
https://wp.nastf.org/?page_id=367
https://wp.nastf.org/wp-content/uploads/2023/07/ApplicationC...
จำเป็นด้วยหรือที่จะต้องดักสัญญาณ ถอดรหัส แล้วเข้ารหัสใหม่? ใช้เสาอากาศใหญ่ทำ man-in-the-middle ระหว่างรีโมตกุญแจกับรถ ให้ทั้งสองฝั่งเชื่อว่าอยู่ใกล้กันกว่านี้ก็พอ
ทุกวันนี้แค่เข้าไปในรถได้ก็ใช้ เครื่องมือ OBD ตั้งโปรแกรมกุญแจดอกใหม่แล้วขับออกไปได้เลย แบบนี้น่าสนใจกว่าและไม่ปลอดภัยร้ายแรงกว่ามาก
Flipper รุ่นพื้นฐานก็รับสัญญาณดิบได้
อาจพอทำให้มันส่งออกข้อมูล FSK หรือ OOK ดิบที่ถูกดีมอดูเลตแล้วได้โดยไม่ต้องมีการประมวลผลเพิ่ม แต่ถ้าจะเอา raw IQ samples จริง ๆ นั้นน่าสงสัยมาก