2 คะแนน โดย GN⁺ 2024-08-20 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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.txt
    
    • generate_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 ความคิดเห็น

 
GN⁺ 2024-08-20
ความคิดเห็นบน Hacker News
  • เป็นโปรเจกต์ที่น่าสนใจ แต่หนึ่งใน dependency ชั้นล่างที่ใช้ที่นี่ดูเหมือนจะไม่ปลอดภัยหากใช้ค่าปริยาย:
    https://github.com/biemster/FindMy/blob/113ebf4017729b92a381...
    ดูเหมือนจะเป็นไลบรารีสำหรับยืนยันตัวตนกับ iCloud และเหมือนจะฮาร์ดโค้ด MacBook device agent ไว้เพื่อผูกคีย์ที่สร้างขึ้นเข้ากับอุปกรณ์
    ถ้าเป็นบัญชีที่ผูกหลายบริการหรือสินทรัพย์ดิจิทัลไว้เยอะ แบบเดียวกับบริการรวมศูนย์ทั่วไป ผมคงไม่ใช้กับบัญชีแบบนั้น และก็จะไม่แปลกใจถ้า Apple แบนบัญชีผู้ใช้ที่ใช้งานแบบนี้
    เพราะมีโค้ด adsid เฉพาะที่ต้องใช้ตอนล็อกอิน ก็คงตามหาได้ไม่ยากนัก

    • ถ้า “เหมือนจะฮาร์ดโค้ด MacBook device agent ไว้เพื่อผูกคีย์ที่สร้างขึ้นเข้ากับอุปกรณ์” หมายความว่าในทางเทคนิคแล้วการลงทะเบียน AirTag ไม่จำเป็นต้องใช้เครื่อง iOS และแค่มีอุปกรณ์ Apple อะไรก็ได้ก็พอเหรอ?
      แต่ก็ไม่เข้าใจว่า Apple ทำไมไม่รองรับแบบเป็นทางการ หรือเพราะอยากดันยอดขายอุปกรณ์ iOS?
      ผมมีอุปกรณ์เดสก์ท็อป/มือถือของ Apple รวมกันราว 5,000 ดอลลาร์ แต่ยังต้องไปซื้อ iPhone มือสองเพิ่มอีกเครื่องแค่เพื่อจะลงทะเบียน AirTag ไม่กี่ชิ้น เลยหงุดหงิดมาก
    • ไม่มีอะไรหรอก เป็นแค่ localhost:
      https://github.com/biemster/FindMy/blob/113ebf4017729b92a381...
    • ไลบรารียืนยันตัวตนสำหรับ iCloud นั้นโดยเนื้อแท้แล้วไม่ปลอดภัยสำหรับผู้ใช้ และแน่นอนว่าไม่ได้ไม่ปลอดภัยสำหรับ Apple, Inc. ผมคิดว่าโปรเจกต์นี้ควรถูก fork แยกเป็นสองผลิตภัณฑ์คนละตัว แม้มันจะฟังดูแย่ก็ตาม
      โดยตั้งใจแล้วผมจะไม่รวมไลบรารีของบุคคลที่สามเด็ดขาด ตอนนี้ก็ยังเอารีลีสทั้งหมดของ VenToy ไปสแกนไวรัสอยู่ และกำลังรอวันที่ช่องโหว่แนว NZ จะโผล่มาจริง
      มันไม่ใช่เรื่องกระบวนการจ่ายเงินของ Apple เท่าไร แต่เป็นเรื่องโมเดล subscription มากกว่า ถ้า Apple ให้ฟีเจอร์ที่มันมองว่าน่าสนใจฟรี ๆ ก็ต้องระวัง เพราะ Apple อาจปิดทางเข้าถึงแล้วเริ่มเก็บเงินจากผู้ใช้ได้
      และยิ่งต้องระวังเป็นสองเท่าถ้าจะทำให้พวกสาย geek โมโห เพราะคนพวกนี้น่ากลัวจริง ๆ หลับไปคืนวันศุกร์แบบหัวเสีย แล้วใช้ทั้งสุดสัปดาห์แกะกล่องดำผลิตภัณฑ์จนทำให้การ implement กลายเป็นเรื่องเล็กน้อยได้
  • แนวคิดนี้ดูเหมือนจะถูกใช้เพื่อหลบเลี่ยงฟีเจอร์ป้องกันการสะกดรอยที่ Apple และเจ้าอื่นใส่ไว้ได้
    เช่น ถ้ามี donor tag จำนวน N ชิ้นแล้วสลับใช้ทุก 24/N ชั่วโมง จากมุมมองของ Apple หรือระบบติดตามอุปกรณ์ เหยื่อก็จะไม่ดูเหมือนถูกแท็กชิ้นเดียวติดตามต่อเนื่องเป็นเวลานาน

    • ถ้ายังไม่ได้แพตช์ ผมเคยได้ยินว่าแค่ใช้ตัวตั้งเวลาเปิดปิดไฟให้แท็กเป็นช่วง ๆ ก็หลบการตรวจจับได้แล้ว
      ใส่แบตเตอรี่ใหญ่ ๆ กับวงจรตั้งเวลาเรียบง่าย แล้วเอาเสียงบี๊บออก ก็จะกลายเป็นอุปกรณ์ติดตามชั้นดี
      จำได้ว่าเคยมีคนพูดถึงเรื่องนี้ในบริบทการติดตามสินค้าที่มีอุปกรณ์ราคาแพงข้างใน การขนส่งอาจกินเวลาหลายเดือน ขณะที่ AirTag ประหยัดพลังงานมาก ใช้แบตใหญ่แล้วอยู่ได้นาน และโซลูชัน GPS เดิมก็ไม่เพียงพอ
    • ทำไมต้องมี donor tag? ใน README ของโปรเจกต์นี้ก็มีวิธีสร้างแท็กอยู่แล้ว
    • ถ้าต้องคอยสลับแท็กตลอด แบบนั้นสุดท้ายแล้วการตามไปเองจะใช้แรงหรือเงินน้อยกว่าหรือเปล่า?
      หรือไม่ก็ใช้ GPS tag ที่ไม่พึ่ง “เครือข่าย” AirTag ไปเลย ก็ไม่ต้องมาหมุนเวียนสลับกันด้วย
  • ทุกวันนี้ก็ยังใช้ Flipper สัปดาห์ละหลายครั้งอยู่เลย รอเวอร์ชันถัดไปที่รองรับ Wi-Fi และความถี่อื่น ๆ

    • ใช้ทำอะไรอยู่?
    • WiFi dev board อย่างเดียวไม่พอเหรอ?
  • มีใครลองทดสอบไหมว่าแอป “Find My” จะตอบสนองอย่างไรถ้าเห็นแท็กเดียวกันจากมากกว่าหนึ่งตำแหน่ง?

    • เซิร์ฟเวอร์ของ Apple ไม่รู้อะไรเกี่ยวกับตำแหน่งเลย ดังนั้นจะเฉลี่ยตำแหน่งหรือไม่นั้นขึ้นอยู่กับตัว implementation ซึ่งในที่นี้คือแอป FindMy
    • ถ้าผมไม่ได้พลาดอะไรไป มันก็น่าจะใช้แค่ตำแหน่งล่าสุดไม่ใช่เหรอ?
  • ผมใช้อยู่และมันยอดเยี่ยมมาก แทบไม่กินไฟเลยจริง ๆ
    ถ้าคุยกับเครือข่าย Find My Device ของ Google ได้ด้วยก็คงดี แต่ตอนนี้บนเครือข่ายของ Apple ก็ทำงานได้ดีมากอยู่แล้ว

  • น่าจะดีถ้าพอร์ตสิ่งนี้ไปลงอุปกรณ์ BLE ราคาถูก อย่าง ESP32-C3 ได้ เพราะเอา Flipper มาใช้เป็น AirTag มันค่อนข้างแพง

  • น่าเสียดายที่ต้องมี donor tag สำหรับปลอมตัว และแท็กนั้นก็จะใช้งานไม่ได้ระหว่างที่ใช้สิ่งนี้ หรือไม่ก็ต้องใช้ OpenHaystack ซึ่งต้องมี Mac ถึงจะดึงข้อมูลได้

    • ไม่จริง ผมใช้งานบนเครื่อง Linux แบบไม่มี AirTagและมันก็ทำงานได้ดี
  • ใน README.md ควรมีลิงก์สักอันเพื่อให้รู้ว่านี่คืออะไร: https://flipperzero.one/

  • ถ้าจะใช้สิ่งนี้ ต้องมี แอป Android อะไรบ้าง? ถ้าเป็นไปได้อยากได้แอปที่ไม่ต้องพึ่ง Google Services

    • โปรเจกต์นี้ทำมาสำหรับ Flipper Zero ไม่ใช่มือถือ
    • รู้ว่าต้องมี Flipper และผมก็มีอยู่เครื่องหนึ่ง
      แต่จะใช้แอป Android ตัวไหนในการ “หา” มันจริง ๆ ได้บ้าง? ผมไม่มี iPhone หรืออุปกรณ์ Samsung
    • ไม่มี แค่มีคอมพิวเตอร์ที่มี Python, git และ Docker ก็พอ