FindMy Flipper - อีมูเลเตอร์ AirTag และ SmartTag
(github.com/MatthewKuKanich)- FindMy Flipper คือแอปที่ขยายความสามารถ Bluetooth ของ FlipperZero ให้ทำงานเหมือน Apple AirTag, Samsung SmartTag และ Tile Tracker
- ใช้ BLE beacon ของ FlipperZero เพื่อบรอดแคสต์สัญญาณ SmartTag และสามารถคัดลอกแท็กเดิมหรือสร้างคู่คีย์ OpenHaystack เพื่อทำงานร่วมกับเครือข่าย Apple FindMy ได้
- วิธีคัดลอกแท็กเดิมสามารถนำ MAC address และ payload ของ AirTag, Samsung SmartTag, Tile Tracker มาใช้เพื่อติดตามผ่านแอปเนทีฟได้ แต่สำหรับ AirTag หากใส่แบตเตอรี่กลับเข้าไป คีย์อาจถูกหมุนเวียน ทำให้คีย์ปัจจุบันของ Flipper ใช้ไม่ได้
- วิธีสร้างคีย์ AirTag ทำได้โดยไม่ต้องมี AirTag จริงหรืออุปกรณ์ Apple แต่ต้องใช้ Docker Desktop, Python, Git และใช้คอมพิวเตอร์กับการยืนยันตัวตนด้วย Apple ID เพื่อรับข้อมูลตำแหน่ง
- แอปรองรับการทำงานเบื้องหลังและการปรับช่วงเวลาของ beacon/กำลังส่ง โดยผู้ใช้ควรเคารพ กฎหมายความเป็นส่วนตัว ที่เกี่ยวข้องกับอุปกรณ์ติดตามและกรรมสิทธิ์ของอุปกรณ์ต้นฉบับ
แอปที่ทำให้ FlipperZero ใช้เหมือนแท็กติดตาม
- FindMy Flipper คือแอปที่ทำให้ FlipperZero อีมูเลต Apple AirTag, Samsung SmartTag และ Tile Tracker ได้
- ใช้ BLE beacon ของ FlipperZero เพื่อบรอดแคสต์สัญญาณ SmartTag ที่สามารถถูกตรวจพบใน FindMy Network
- ฟีเจอร์เป้าหมายมีดังนี้
- คัดลอก Apple AirTag, Samsung SmartTag, Tile Tracker ที่มีอยู่ไปยัง FlipperZero
- สร้าง คู่คีย์ OpenHaystack สำหรับเครือข่าย FindMy โดยไม่ต้องมี AirTag จริง
- ติดตามตำแหน่งของ FlipperZero อย่างต่อเนื่อง
ฟีเจอร์หลัก
-
การอีมูเลตแท็ก
- สามารถคัดลอก MAC address และ payload ของแท็กเดิมได้
- สามารถสร้างคู่คีย์สำหรับเครือข่าย FindMy ได้โดยไม่ต้องมี AirTag จริง
-
การปรับแต่งโดยผู้ใช้
- สามารถปรับช่วงเวลาการบรอดแคสต์ beacon ได้
- สามารถเปลี่ยนกำลังส่งเพื่อปรับสมดุลระหว่างการมองเห็นและอายุแบตเตอรี่ได้
-
การทำงานเบื้องหลัง
- แอปได้รับการปรับให้เหมาะกับการทำงานเบื้องหลัง
- ออกแบบมาเพื่อคงการติดตามไว้ด้วยการใช้แบตเตอรี่ต่ำ โดยไม่หยุดการใช้งาน FlipperZero ตามปกติ
วิธีติดตั้ง
- การติดตั้งทำได้ 2 วิธี
- ใช้รีลีส/เฟิร์มแวร์ FAP ที่คอมไพล์ไว้ล่วงหน้าสำหรับอุปกรณ์ของคุณ
- บิลด์เฟิร์มแวร์เองด้วย
fbt/ufbt
- ปัจจุบันเฟิร์มแวร์ทั้งหมดควรทำงานได้จาก branch main รวมถึงไอคอนด้วย
วิธีรับข้อมูล SmartTag
- วิธีรับข้อมูลสำหรับอีมูเลตแท็กมี 2 แบบ
-
Option A: คัดลอกแท็กเดิม
- Option B: สร้างคีย์ AirTag
-
-
Option A: คัดลอกแท็กเดิม
- การคัดลอกแท็กเดิมเป็นวิธีที่แนะนำ และสามารถติดตามได้โดยไม่ต้องตั้งค่าเพิ่มเติม
- สามารถใช้แท็ก Apple, Samsung, Tile ได้โดยคัดลอก MAC address และ payload ของแท็กจริง
- วิธีนี้ทำให้ติดตามผ่านแอปเนทีฟ เช่น Apple FindMy, Samsung SmartThing, Tile App ได้
- ขั้นตอนพื้นฐานมีดังนี้
- จับคู่ AirTag, Samsung SmartTag, Tile Tracker กับอุปกรณ์ก่อน
- แยกแท็กออกจากอุปกรณ์ที่ลงทะเบียนไว้ประมาณ 15 นาที เพื่อเข้าสู่โหมด Lost
- ใช้ nrfConnect บน Android หรือ ESP32
- สำหรับ nrfConnect มีคำแนะนำให้ใช้เวอร์ชัน Android เพราะเวอร์ชัน Apple ไม่แสดง Raw data ที่จำเป็น
- หากใช้ ESP32-WROOM หรือ ESP32-S3 จะสามารถรับข้อมูลที่ต้องการได้โดยไม่ต้องใช้ Android
- เครื่องมือที่เกี่ยวข้องสามารถใช้ ESP32-AirTag-Scanner ได้
- ขั้นตอนสแกนรวมถึงการตัดรายการอื่นนอกจากแบรนด์ของแท็กออกจากฟิลเตอร์ ปรับ RSSI เป็น -40 dBm แล้วรอจนกว่า SmartTag จะปรากฏเป็นอุปกรณ์ “FindMy”
- ต้องถอดแบตเตอรี่ของแท็กทันทีหลังจับ payload และ MAC address ได้
- หากใส่แบตเตอรี่กลับเข้าไปใน AirTag คีย์อาจถูกหมุนเวียนกับเซิร์ฟเวอร์ของ Apple
- หากคีย์ถูกหมุนเวียน คีย์ปัจจุบันของ Flipper จะใช้ไม่ได้
- หากต้องการใช้งานต่อบน Flipper ต้องปิด AirTag ไว้หรือถอดแบตเตอรี่ออก
- ไม่สามารถใช้ AirTag และ Flipper พร้อมกันได้ และหากจำเป็นสามารถทำขั้นตอนซ้ำเพื่อกู้ฟังก์ชันของ Flipper กลับมาได้
- นำ payload และ MAC Address ที่จับได้ไปกรอกในแอป FlipperZero
-
Option B: สร้างคีย์ AirTag
- การสร้างคีย์ AirTag เป็นวิธีอีมูเลต AirTag โดยไม่ต้องใช้อุปกรณ์ Apple หรือ AirTag
- วิธีนี้ทำงานด้วยการสร้างคีย์ และต้องใช้คอมพิวเตอร์เพื่อดาวน์โหลดข้อมูลตำแหน่ง
- ส่วนประกอบที่ต้องใช้มีดังนี้
- Docker Desktop
- Python
- Git
- หลังจาก clone repository แล้ว ให้ทำงานในโฟลเดอร์
AirTagGeneration
git clone https://github.com/MatthewKuKanich/FindMyFlipper.git cd AirTagGeneration- เปิด Docker Desktop แล้วตั้งค่าเซิร์ฟเวอร์ด้วยคำสั่งต่อไปนี้
docker run -d --restart always --name anisette-v3 -p 6969:6969 dadoum/anisette-v3-server:latest- เซิร์ฟเวอร์นี้อีมูเลตสภาพแวดล้อมที่หลอกเซิร์ฟเวอร์ยืนยันตัวตนของ Apple
- สร้างและเปิดใช้งาน Python virtual environment แล้วติดตั้ง dependency
python3 -m venv venv pip3 install -r requirements.txtgenerate_keys.pyสร้างคีย์ที่จำเป็นสำหรับ AirTag และบันทึกไว้ในโฟลเดอร์keysใหม่- ไฟล์
.keysที่สร้างขึ้นสามารถย้ายไปยัง FlipperZero แล้วนำเข้าในแอปได้ - เลือก “register tag” ในเมนู config ของแอป
- เลือกประเภทแท็ก
- นำเข้า
.keysหรือ.txtหรือกรอกด้วยตนเอง - หากกรอกด้วยตนเอง ให้กรอก MAC และ payload ตามลำดับ
- กดบันทึกเพื่อลงทะเบียน
request_reports.pyขอข้อมูลตำแหน่งแบบเรียลไทม์ด้วยการยืนยันตัวตนผ่าน Apple ID และรหัสผ่าน- ข้อมูลล็อกอิน Apple จะถูกบันทึกไว้ในไฟล์ auth ทำให้ไม่ต้องกรอกซ้ำภายหลัง
RequestReport&Map.pyแสดงข้อมูลตำแหน่งในช่วง 24 ชั่วโมง ที่ผ่านมาเป็นแผนที่แบบโต้ตอบ- ขอรายงานตำแหน่งด้วยคีย์โฆษณาแบบแฮชในโฟลเดอร์
keys - ถอดรหัสข้อมูลด้วย private key จากไฟล์
.keysเดียวกัน - แสดงข้อมูลที่ถอดรหัสแล้วในเทอร์มินัล
- แสดงพิกัดบนแผนที่และเชื่อมเส้นทางการเคลื่อนที่
- แสดง metadata ของตำแหน่งและบันทึกเป็นไฟล์ HTML ที่ตั้งชื่อตามวันที่ของรายงาน
การตั้งค่าและปรับแต่งแอป FlipperZero
- หลังเปิดแอป สามารถใช้
Import Tag From FileหรือRegister Tag Manuallyในเมนู config ได้ - มี flow สำหรับวางไฟล์
.keysไว้ในโฟลเดอร์apps_data->findmyหรือAppsData/FindMyFlipperบน SD card ของ FlipperZero แล้วนำเข้า - ไฟล์
.txtที่บันทึกจาก nrfConnect ก็สามารถใส่ไว้ในโฟลเดอร์เดียวกันเพื่อนำเข้าได้ - รายการที่ปรับได้มีดังนี้
- Beacon Interval: ปรับความถี่ที่ FlipperZero บรอดแคสต์การมีอยู่ของตน
- Transmit Power: ปรับความแรงสัญญาณเพื่อสร้างสมดุลระหว่างระยะติดตามกับอายุแบตเตอรี่
ความเข้ากันได้ ทางเลือก และความรับผิดชอบ
- อุปกรณ์/บริการที่รองรับมีดังนี้
- อุปกรณ์ Apple สำหรับติดตาม AirTag ผ่านเครือข่าย FindMy
- อุปกรณ์และเว็บเบราว์เซอร์ที่รองรับการติดตาม Samsung SmartTag
- Tile Tracker ผ่าน Tile App
- หากต้องการติดตามด้วย OpenHaystack ต้องใช้ macOS ต่ำกว่า 14
- บน macOS 14 ขึ้นไปมีปัญหาความเข้ากันได้กับ Mail plugin
- มีการเสนอ macless-haystack เป็นทางเลือก
- แม้ใช้วิธีนี้ ก็ควรใช้เฉพาะ
generate_keys.pyในโฟลเดอร์AirTagGenerationเท่านั้น - สคริปต์สร้างคีย์ของ repository นั้นมีรูปแบบไฟล์คีย์ต่างกัน และไฟล์ฝั่ง FindMy Flipper มีข้อมูลที่จำเป็นสำหรับการนำเข้า FlipperZero อย่างถูกต้อง
- แม้ใช้วิธีนี้ ก็ควรใช้เฉพาะ
- แอปนี้มีวัตถุประสงค์เพื่อการใช้งานส่วนบุคคลและการศึกษา
- ผู้ใช้ต้องปฏิบัติตาม กฎหมายความเป็นส่วนตัว และข้อบังคับท้องถิ่นที่เกี่ยวข้องกับอุปกรณ์ติดตาม
- การคัดลอกและอีมูเลตแท็กติดตามควรใช้อย่างรับผิดชอบโดยเคารพกรรมสิทธิ์ของอุปกรณ์ต้นฉบับ
- โปรเจกต์นี้ไม่มีความเกี่ยวข้องกับ Apple Inc. หรือ Samsung
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
เป็นโปรเจกต์ที่น่าสนใจ แต่หนึ่งใน dependency ชั้นล่างที่ใช้ที่นี่ดูเหมือนจะไม่ปลอดภัยหากใช้ค่าปริยาย:
https://github.com/biemster/FindMy/blob/113ebf4017729b92a381...
ดูเหมือนจะเป็นไลบรารีสำหรับยืนยันตัวตนกับ iCloud และเหมือนจะฮาร์ดโค้ด MacBook device agent ไว้เพื่อผูกคีย์ที่สร้างขึ้นเข้ากับอุปกรณ์
ถ้าเป็นบัญชีที่ผูกหลายบริการหรือสินทรัพย์ดิจิทัลไว้เยอะ แบบเดียวกับบริการรวมศูนย์ทั่วไป ผมคงไม่ใช้กับบัญชีแบบนั้น และก็จะไม่แปลกใจถ้า Apple แบนบัญชีผู้ใช้ที่ใช้งานแบบนี้
เพราะมีโค้ด
adsidเฉพาะที่ต้องใช้ตอนล็อกอิน ก็คงตามหาได้ไม่ยากนักแต่ก็ไม่เข้าใจว่า Apple ทำไมไม่รองรับแบบเป็นทางการ หรือเพราะอยากดันยอดขายอุปกรณ์ iOS?
ผมมีอุปกรณ์เดสก์ท็อป/มือถือของ Apple รวมกันราว 5,000 ดอลลาร์ แต่ยังต้องไปซื้อ iPhone มือสองเพิ่มอีกเครื่องแค่เพื่อจะลงทะเบียน AirTag ไม่กี่ชิ้น เลยหงุดหงิดมาก
https://github.com/biemster/FindMy/blob/113ebf4017729b92a381...
โดยตั้งใจแล้วผมจะไม่รวมไลบรารีของบุคคลที่สามเด็ดขาด ตอนนี้ก็ยังเอารีลีสทั้งหมดของ
VenToyไปสแกนไวรัสอยู่ และกำลังรอวันที่ช่องโหว่แนว NZ จะโผล่มาจริงมันไม่ใช่เรื่องกระบวนการจ่ายเงินของ Apple เท่าไร แต่เป็นเรื่องโมเดล subscription มากกว่า ถ้า Apple ให้ฟีเจอร์ที่มันมองว่าน่าสนใจฟรี ๆ ก็ต้องระวัง เพราะ Apple อาจปิดทางเข้าถึงแล้วเริ่มเก็บเงินจากผู้ใช้ได้
และยิ่งต้องระวังเป็นสองเท่าถ้าจะทำให้พวกสาย geek โมโห เพราะคนพวกนี้น่ากลัวจริง ๆ หลับไปคืนวันศุกร์แบบหัวเสีย แล้วใช้ทั้งสุดสัปดาห์แกะกล่องดำผลิตภัณฑ์จนทำให้การ implement กลายเป็นเรื่องเล็กน้อยได้
แนวคิดนี้ดูเหมือนจะถูกใช้เพื่อหลบเลี่ยงฟีเจอร์ป้องกันการสะกดรอยที่ Apple และเจ้าอื่นใส่ไว้ได้
เช่น ถ้ามี donor tag จำนวน N ชิ้นแล้วสลับใช้ทุก
24/Nชั่วโมง จากมุมมองของ Apple หรือระบบติดตามอุปกรณ์ เหยื่อก็จะไม่ดูเหมือนถูกแท็กชิ้นเดียวติดตามต่อเนื่องเป็นเวลานานใส่แบตเตอรี่ใหญ่ ๆ กับวงจรตั้งเวลาเรียบง่าย แล้วเอาเสียงบี๊บออก ก็จะกลายเป็นอุปกรณ์ติดตามชั้นดี
จำได้ว่าเคยมีคนพูดถึงเรื่องนี้ในบริบทการติดตามสินค้าที่มีอุปกรณ์ราคาแพงข้างใน การขนส่งอาจกินเวลาหลายเดือน ขณะที่ AirTag ประหยัดพลังงานมาก ใช้แบตใหญ่แล้วอยู่ได้นาน และโซลูชัน GPS เดิมก็ไม่เพียงพอ
หรือไม่ก็ใช้ GPS tag ที่ไม่พึ่ง “เครือข่าย” AirTag ไปเลย ก็ไม่ต้องมาหมุนเวียนสลับกันด้วย
ทุกวันนี้ก็ยังใช้ Flipper สัปดาห์ละหลายครั้งอยู่เลย รอเวอร์ชันถัดไปที่รองรับ Wi-Fi และความถี่อื่น ๆ
มีใครลองทดสอบไหมว่าแอป “Find My” จะตอบสนองอย่างไรถ้าเห็นแท็กเดียวกันจากมากกว่าหนึ่งตำแหน่ง?
ผมใช้อยู่และมันยอดเยี่ยมมาก แทบไม่กินไฟเลยจริง ๆ
ถ้าคุยกับเครือข่าย Find My Device ของ Google ได้ด้วยก็คงดี แต่ตอนนี้บนเครือข่ายของ Apple ก็ทำงานได้ดีมากอยู่แล้ว
น่าจะดีถ้าพอร์ตสิ่งนี้ไปลงอุปกรณ์ BLE ราคาถูก อย่าง ESP32-C3 ได้ เพราะเอา Flipper มาใช้เป็น AirTag มันค่อนข้างแพง
น่าเสียดายที่ต้องมี donor tag สำหรับปลอมตัว และแท็กนั้นก็จะใช้งานไม่ได้ระหว่างที่ใช้สิ่งนี้ หรือไม่ก็ต้องใช้ OpenHaystack ซึ่งต้องมี Mac ถึงจะดึงข้อมูลได้
ใน
README.mdควรมีลิงก์สักอันเพื่อให้รู้ว่านี่คืออะไร: https://flipperzero.one/ถ้าจะใช้สิ่งนี้ ต้องมี แอป Android อะไรบ้าง? ถ้าเป็นไปได้อยากได้แอปที่ไม่ต้องพึ่ง Google Services
แต่จะใช้แอป Android ตัวไหนในการ “หา” มันจริง ๆ ได้บ้าง? ผมไม่มี iPhone หรืออุปกรณ์ Samsung