2 คะแนน โดย GN⁺ 2025-01-12 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • go-haystack เป็นชุดเครื่องมือที่สร้างด้วย Go/TinyGo สำหรับติดตามอุปกรณ์ Bluetooth ส่วนบุคคลผ่านเครือข่าย Find My ของ Apple
  • ใช้งานร่วมกับ OpenHaystack และ Macless-Haystack เพื่อสร้าง เครือข่าย Find My แบบกำหนดเอง และตั้งค่าได้โดยไม่ต้องมีฮาร์ดแวร์ของ Apple
  • มี เฟิร์มแวร์บีคอน ที่เขียนด้วย TinyGo และแพ็กเกจ TinyGo Bluetooth โดยรองรับฮาร์ดแวร์อย่างบอร์ด nRF SoftDevice, BBC Microbit, Seeed Studio XIAO nRF52840, บอร์ดที่มีโปรเซสเซอร์เสริม ESP32 และ RP2040 Pico-W
  • สามารถรันโค้ดบีคอนเดียวกันบน Linux ที่มีฮาร์ดแวร์ Bluetooth ได้ และรวมถึง Raspberry Pi หรือระบบฝังตัวด้วย
  • ผู้ใช้ต้องเตรียม Apple ID และ 2FA แบบ SMS, anisette-v3-server, เซิร์ฟเวอร์ Macless-Haystack และ CLI haystack จากนั้นจึงลงทะเบียนอุปกรณ์ด้วยขั้นตอนสร้างคีย์ แฟลชเฟิร์มแวร์ และอัปโหลด JSON

บทบาทของ go-haystack

  • go-haystack ช่วยให้ติดตาม อุปกรณ์ Bluetooth ส่วนบุคคลผ่านเครือข่าย Find My ของ Apple ได้
  • ใช้งานร่วมกับ OpenHaystack และ Macless-Haystack เพื่อสร้าง เครือข่าย Find My แบบกำหนดเอง
  • เครื่องมือนี้เขียนด้วย Go/TinyGo และสามารถใช้งานได้โดยไม่ต้องมีฮาร์ดแวร์ของ Apple

สร้างบีคอนด้วยตัวเอง

Linux Beacon และ TinyScan

  • สามารถรัน โค้ดบีคอน บน Linux ที่มีฮาร์ดแวร์ Bluetooth ได้เช่นกัน
    • มีการยกตัวอย่าง Raspberry Pi และระบบฝังตัวอื่น ๆ
    • โค้ดสำหรับ Embedded Linux ใช้โค้ดบีคอนชุดเดียวกับไมโครคอนโทรลเลอร์ และอยู่ในไดเรกทอรี firmware ของรีโพซิทอรี
  • go-haystack ยังมี TinyScan ซึ่งเป็นสแกนเนอร์ฮาร์ดแวร์สำหรับอุปกรณ์ภายในพื้นที่ใกล้เคียง
    • TinyScan ทำงานบนบอร์ดไมโครคอนโทรลเลอร์หลายรุ่นที่มี Bluetooth และจอแสดงผลขนาดเล็ก
    • มีการยกตัวอย่างบอร์ดจาก Adafruit และ Pimoroni
    • โค้ดอยู่ในไดเรกทอรี tinyscan

องค์ประกอบที่ต้องมีสำหรับการติดตั้ง

  • ต้องมี Apple ID และต้องเปิดใช้งาน 2FA
    • รองรับปัจจัยยืนยันตัวตนลำดับที่สองเฉพาะแบบ SMS/ข้อความเท่านั้น
  • รัน anisette-v3-server ด้วย Docker
    • คำสั่งตัวอย่างจะสร้าง Docker network ชื่อ mh-network และรันคอนเทนเนอร์ dadoum/anisette-v3-server บนพอร์ต 6969
  • รันและตั้งค่าเอนด์พอยต์ macless-haystack ในโหมดโต้ตอบ
    • ระหว่างตั้งค่าจะต้องกรอก Apple ID, รหัสผ่าน และ 2FA
    • หากเห็น serving at port 6176 over HTTP แปลว่าการตั้งค่าเสร็จสมบูรณ์
    • หลังตั้งค่าให้หยุดโปรเซสและเริ่มเซิร์ฟเวอร์ใหม่ด้วย docker restart macless-haystack
  • ติดตั้ง go-haystack CLI ด้วยคำสั่งต่อไปนี้
go install github.com/hybridgroup/go-haystack/cmd/haystack@latest

ขั้นตอนการใช้งาน

  • อุปกรณ์ในระยะใกล้สามารถสแกนได้ด้วย haystack scan
    • เอาต์พุตจะมีที่อยู่ Bluetooth, ค่าสัญญาณ, ข้อมูลในรูปแบบตัวระบุ และสถานะแบตเตอรี่
  • หากต้องการเพิ่มอุปกรณ์ใหม่ ให้สร้างคีย์สำหรับอุปกรณ์ก่อน
haystack keys DEVICENAME
  • เมื่อสร้างคีย์แล้ว จะมีการบันทึกไฟล์ DEVICENAME.keys และไฟล์ DEVICENAME.json สำหรับการตั้งค่า Haystack
    • ให้แทนที่ DEVICENAME ด้วยชื่ออุปกรณ์จริง
  • แฟลชลงฮาร์ดแวร์โดยระบุ TinyGo target และชื่ออุปกรณ์
haystack flash DEVICENAME nano-rp2040
  • คำสั่งนี้จะใช้ TinyGo คอมไพล์เฟิร์มแวร์ที่ฝังคีย์ไว้และแฟลชลงอุปกรณ์
  • สุดท้ายให้อัปโหลดไฟล์ JSON ของอุปกรณ์นั้นไปยังอินสแตนซ์ macless-haystack ที่กำลังรันอยู่ผ่านเว็บ UI
    • เปิด Macless-Haystack web app ในเว็บเบราว์เซอร์ แล้วเลือกไฟล์ DEVICENAME.json ผ่านลิงก์ “Accessories” และปุ่ม “+”
    • เว็บแอปนี้เป็น single-page application ที่อ่านและเขียนเฉพาะข้อมูลในเครื่อง

การแสดงข้อมูลตำแหน่ง

  • เมื่ออุปกรณ์เข้าไปอยู่ในระยะของ iPhone เครื่องใดเครื่องหนึ่ง ข้อมูล Macless-Haystack จะเริ่มปรากฏบนเว็บ UI เมื่อเวลาผ่านไป
  • อาจต้องใช้เวลาสักระยะกว่าข้อมูลแรกจะปรากฏ

1 ความคิดเห็น

 
GN⁺ 2025-01-12
ความเห็นจาก Hacker News
  • เจ๋งมาก ทั้งความพยายามแบบนี้และเครือข่าย Find Myทำให้ทึ่งทุกครั้งที่เห็น แต่เหตุผลที่ผมยังไม่ใช้วิธีนี้เองก็เพราะคิดว่าสักวันหนึ่ง Apple อาจยอมรับการอาศัยเครือข่ายแบบนี้อย่างเป็นทางการ หรือในทางกลับกันก็อาจแบนApple IDที่มีประวัติเกี่ยวข้องก็ได้
    ตอนนี้ Apple น่าจะรู้เรื่องนี้อยู่แล้ว แต่ก็ยังไม่แสดงจุดยืนไปทางไหน ผมคงขอดูอยู่ห่าง ๆ ไปก่อน จนกว่า Apple จะรองรับอย่างเป็นทางการมากกว่านี้ หรือมีวิธีที่ไม่ผูกกับ Apple ID/บัญชีของผมโดยตรง

    • กระบวนการขอตำแหน่งของแท็กตัวใดตัวหนึ่งไม่ได้ผูกกับApple Account ถ้าล็อกอินเข้า macless haystack ตาม README ก็ใช้แค่บัญชีเผาทิ้งได้
    • ผมคิดว่าการที่ Apple จะปล่อยผ่านเรื่องนี้ก็มีผลดีอยู่เหมือนกัน ยิ่งเครือข่ายนี้กว้างขึ้น การยอมรับใช้งานก็ยิ่งเพิ่มขึ้น และถ้ามอง P2P เป็นโครงสร้างชั้นบน ก็เป็นประเด็นที่ใหญ่กว่าผู้ขายรายใดรายหนึ่ง ดังนั้นการยอมให้การใช้งานเพิ่มขึ้นไม่ว่าด้วยวิธีไหนก็อาจเป็นการประนีประนอมที่รับได้
      โดยเฉพาะเมื่อ Apple ไม่ต้องลงแรงเอง คิดว่าท้ายที่สุดบริษัทคงอยากใช้ประโยชน์จากความหนาแน่นของ meshมากขึ้น แทนที่จะกดการยอมรับใช้งานตั้งแต่ตอนนี้
  • ช่วงหน้าร้อนปีที่แล้วผมไปเที่ยวพักร้อนกับภรรยาที่โปรตุเกส แล้วภรรยาดันลืมกระเป๋าสตางค์ไว้ใน Uber ระหว่างไปสนามบิน คนขับหาเจอแล้วเอาเงิน 20 ดอลลาร์กับเครื่องประดับบางชิ้นไป ก่อนจะเอาไปทิ้ง แต่คืนนั้นเราก็ตามไปจนถึงลานจอดรถร้างได้ด้วยAirTagแล้วหาเจอผ่านแอป Location
    หลังจากนั้นผมก็ใส่ AirTag ไว้ในกระเป๋าทุกใบ และเปลี่ยนแบตเตอรี่ตามรอบตลอด

    • ผมก็ใส่AirTagไว้ในกระเป๋าทุกใบเหมือนกัน หลายปีก่อนผมเคยต้องรอกระเป๋าที่เพิ่งรู้ว่ามันอยู่ในพื้นที่รับกระเป๋าหายของสนามบิน Sydney หลังจากติดต่อสายการบินกับสนามบินอยู่นานหลายชั่วโมง
      ตอนนั้นมีผู้ชายอีกคนบอกว่าของเขาก็อยู่ที่นั่นเหมือนกัน หนึ่งเดือนก่อนหน้านั้นเขาต้องอพยพลงจากเครื่องที่ New Zealand แล้วลืม iPad ไว้ในช่องหลังเบาะ ก่อนจะตามมันมาถึง Sydney ได้ผ่าน Find My เขาบอกว่าตัวเองบินระหว่างประเทศเดือนละหลายครั้ง และ AirTag เป็นของที่ดีที่สุดที่เขามี หลังจากนั้นเขาก็ซ่อนแท็กหลอกไว้ในรถทุกคัน ทุกกระเป๋า และในของมีค่าที่เสี่ยงโดนขโมยอีกหลายชิ้น
    • คุณรู้ได้ยังไงว่านั่นเป็นฝีมือคนขับ ไม่ใช่ผู้โดยสารคนอื่นที่ขึ้นรถต่อจากนั้น?
  • อ่านแล้วยังไม่ค่อยเข้าใจ มันใช้คู่กับApple AirTagได้หรือเปล่า หรือว่าต้องสร้างอุปกรณ์ติดตามขึ้นมาเอง?

  • https://media.ccc.de/v/38c3-find-my-101

  • ต่อไปถ้ารู้ตำแหน่งของ beacon ได้แม่นยำระดับต่ำกว่า 1 ลูกบาศก์เมตรก็คงดี
    ภรรยาผมเป็น ADD เลยทำของหายบ่อย Tile ก็เสียงไม่ดังพอและไม่เสถียร แถมเราก็ไม่มี iPhone เลยใช้ AirTag ไม่ได้ ผมเหนื่อยเกินกว่าจะไปเรียนคณิตศาสตร์ที่ต้องใช้ในการหาตำแหน่งของ Bluetooth beacon แล้ว แต่ถ้าทำได้ก็คงดี อยากมีโปรเจ็กต์ซอฟต์แวร์แนว “แค่เพิ่มบอร์ด Bluetooth เล็ก ๆ อีก 4 ตัว” แต่ดูเหมือนมันจะไม่ใช่ปัญหาคัน ๆ ที่นักพัฒนาโอเพนซอร์สส่วนใหญ่สนใจแก้

    • AirTag กับiPhone 11 ขึ้นไปแก้ปัญหานี้ได้ตรงจุดเลย หา AirTag ได้แม่นถึงในระยะไม่เกิน 1 ฟุต
      มันไม่ได้ใช้ความแรงของสัญญาณ Bluetooth แต่ใช้Ultra-wideband (UWB) เพื่อระบุตำแหน่งอย่างแม่นยำ ทำงานแบบ time-of-flight โดยอาศัยการหน่วงเวลาที่ระดับความเร็วแสงเหมือน GPS พอเปิดแอป Find My ก็จะรู้ระยะที่แม่นยำถึง AirTag ได้อย่างรวดเร็ว และเมื่อเดินไปมา มันก็คำนวณได้ด้วยว่าควรไปทางไหนจากการเปลี่ยนแปลงของตำแหน่งที่สังเกตได้ เป็นเทคโนโลยีที่เจ๋งมาก ในแอป Find My ต้องใช้ฟังก์ชัน “Find” ไม่ใช่ “Play Sound” และต้องมี iPhone 11+ ที่มีชิป UWB H1 ค่าใช้จ่ายอาจใกล้เคียงกับการติดตั้งบอร์ด Bluetooth หลายตัวไว้ในบ้าน แต่แม่นยำกว่ามาก เพียงแค่ความสนุกในการแฮ็กลดลงหน่อย
      https://en.wikipedia.org/wiki/Ultra-wideband#Real-time_locat...
    • บ้านผมก็ใช้ Android กันทั้งคู่ แต่ก็คิดอยู่ว่าอาจซื้อiPhone 11 หรือ 12 miniจอแตกสักเครื่องไว้ใช้สำหรับค้นหา AirTag แบบแม่นยำโดยเฉพาะ
      อย่างน้อยก็ดูเหมือนไม่มีทางเลือกอื่นที่เทียบได้ครบทั้งเรื่องตำแหน่งแม่นยำด้วย UWB ความหาซื้อได้ ราคาเหมาะสม และความเสถียร ในทางกลับกัน Android บางรุ่นก็ดูเหมือนมีรองรับ UWB ที่อาจใช้กับ UWB ของ Tile ได้: https://www.zdnet.com/article/how-to-enable-uwb-on-android-a...
    • หวังว่าในอีกไม่กี่ปีข้างหน้าBluetooth Channel Soundingจะเริ่มแพร่หลายมากขึ้น เพราะว่ากันว่าจะให้ความสามารถประเมินระยะใกล้เคียงกันกับ UWB แม้จะไม่แม่นเท่า แต่ใช้ได้กับอุปกรณ์ BLE ทุกตัว
      https://www.bluetooth.com/learn-about-bluetooth/feature-enha...
    • ผมก็เป็น ADHD และทำของหายตลอดเหมือนกัน แต่แท็ก Pebblebeeช่วยได้จริง ผมติดแท็กไว้กับกุญแจ และใส่การ์ดไว้ในกระเป๋าสตางค์ เสียงดังพอที่จะได้ยินข้ามชั้นในบ้านเก่าที่มีกำแพงอิฐหนา
    • “คณิตศาสตร์ที่ต้องใช้” ที่พูดถึงตรงนี้น่าจะหมายถึงการtriangulation หาตำแหน่งด้วย beacon แบบติดตั้งอยู่กับที่ แม้แต่ Apple เองก็ยังใช้วิธีส่งตำแหน่งของมือถือที่รับสัญญาณได้กลับมา เลยมีเรื่องเล่าว่าตำรวจไปผิดบ้านเพราะหูฟังที่เด็กบ้านข้าง ๆ เก็บได้บนรถบัส
      ผมเคยลองเล่นกับ beacon มาก่อน ซึ่งตัวการทำให้มันทำงานจริง ๆ ค่อนข้างง่าย ผมเขียนโปรแกรมเล็ก ๆ ให้แล็ปท็อปทำตัวเป็น beacon แล้วใช้แอป “Bluetooth tracker” อะไรก็ได้บนมือถือเพื่อดูระยะคร่าว ๆ ถึง beacon นั้น จากนั้นก็แค่เดินไปมาพร้อมดูระยะเท่านั้นเอง
  • ตอนนี้ดูเหมือนว่าจะใช้ได้แม้ ไม่มี Mac ใช่ไหม? ถ้าอย่างนั้นก็สุดยอดมาก ตัวติดตามของ Apple ราคาแค่ไม่กี่ยูโรเอง แน่นอนว่าหมายถึงผลิตภัณฑ์ของผู้ผลิตภายนอก

  • ไม่รู้ว่ามีแค่ผมหรือเปล่า แต่ฟีเจอร์เครือข่าย Find My ทั้งหมดนี้ดูเหมือน ฝันร้ายด้านความปลอดภัย เลย เข้าใจเรื่องประโยชน์ใช้งานนะ แต่หน่วยงานบางแห่งจะไม่สามารถยื่นเรื่องขอ Apple ให้บอกได้หรือว่าคนนี้อยู่ที่ไหนแม้ไม่มีสัญญาณเซลลูลาร์?
    ยังไงก็ตาม นี่เป็นเหตุผลที่ผมตัดสินใจออกจาก ecosystem ของ Apple และในมุมการเฝ้าติดตามมันดูเหมือนฝันร้าย

    • ระบบนี้ถูกออกแบบมาเพื่อทำให้เรื่องแบบนั้นเป็นไปไม่ได้โดยเฉพาะ
      ตัวแท็กไม่รู้ตำแหน่งของตัวเอง และจะกระจายแค่ กุญแจสาธารณะแบบหมุนเวียน ของตัวเองเท่านั้น เนื่องจากกุญแจเปลี่ยนแบบสุ่ม เจ้าของที่ถูกต้องตามกฎหมายอย่างคุณจึงคาดเดาได้ แต่บุคคลที่สามจะตามแท็กได้ง่าย ๆ นั้นยาก อุปกรณ์อื่นจะเห็นกุญแจนั้นแล้วแชร์ตำแหน่งของตัวเองโดยเข้ารหัสด้วยกุญแจสาธารณะของแท็ก ดังนั้นการดึงข้อมูลออกมาจึงทำได้ยากมาก และแทบเป็นไปไม่ได้เลย เว้นแต่ Apple จะถูกบังคับให้ปรับระบบใหม่และปล่อยอัปเดตอันตรายออกมา ซึ่งโดยปกติแล้วระดับนั้นก็มักเกินกว่าขอบเขตของหมายเรียกทั่วไป
    • เป็นไปไม่ได้ Apple ไม่รู้ว่าใครถือแท็กไหนอยู่ มันถูกสร้างขึ้นด้วย การออกแบบที่ยึดความเป็นส่วนตัวเป็นศูนย์กลาง แม้ผมจะรู้ว่า Apple พูดเรื่องความเป็นส่วนตัวพร้อมมีเป้าหมายอื่นอยู่บ้าง แต่ผมเคยอ่านเอกสารการออกแบบทางเทคนิคแล้ว และอันนี้ทำไว้ดีมาก
      ผมสงสัยว่า Samsung กับ Google จะทำได้ถึงระดับนี้กับตัวติดตามของตัวเองหรือเปล่า
    • https://support.apple.com/guide/security/find-my-security-se...
    • ต้องบอกว่าใน Find My มี “เครือข่าย” อยู่สองแบบที่ต่างกัน แบบหนึ่งคือเครือข่ายที่อุปกรณ์ Apple เครื่องอื่นช่วยหาของของฉัน ส่วนอีกแบบคือเครือข่ายที่อุปกรณ์ของฉันอัปโหลดตำแหน่งของตัวเองไปยัง Apple โดยตรง
      แอป Find My จะรวมสองอย่างนี้เข้าด้วยกันแล้วแสดงตำแหน่งล่าสุด เท่าที่ผมดู โปรเจ็กต์นี้น่าจะใช้แค่อย่างแรก และฝั่งนี้ตามการออกแบบแล้วต้องมี แบ็กดอร์ แบบชัดเจนถึงจะทำได้ แต่ถ้าคุณพยายามป้องกันตัวเองจากหน่วยงานรัฐ เครือข่ายแบบหลังอาจเป็นสิ่งที่ควรกังวลมากกว่า
    • ถ้ากังวลว่ามันเป็นฝันร้ายด้านความปลอดภัย คุณปิดได้ใน settings: Settings → your_name → Find My → device → toggle off
      ถ้าปิดแล้วคุณก็ยังไม่เชื่อว่ามันจะถูกปิดจริง ๆ คุณก็คงต้องทบทวนอุปกรณ์อิเล็กทรอนิกส์ทุกชิ้นที่มีอย่างจริงจัง คุณเชื่อเฟิร์มแวร์ของโทรศัพท์ Android ไหม? แล้วชิปโมเด็มที่ไม่ใช่โอเพนซอร์สล่ะ? ซิมการ์ดที่รัน Java ล่ะ? ในรีโมตทีวีมีไมโครโฟนที่คุณไม่รู้ตัวหรือเปล่า? ที่จริงรีโมตจำนวนมากมีนะ แม้แต่ในเครื่องปิ้งขนมปังก็อาจมีชิปที่แรงกว่าคอมพิวเตอร์ยุค DOS ที่ต่อเน็ตได้เสียอีก ของผมก็เป็นแบบนั้น แล้วคุณจะรู้ได้ยังไงว่ามันไม่ได้เชื่อม Wi-Fi ใกล้ ๆ แล้วส่งข้อมูลออกไป? หลังเหตุการณ์ China/iCloud ผมไม่ได้ไว้ใจ Apple แบบเต็มร้อย แต่ในบรรดาบริษัทเทคยักษ์ใหญ่ทั้งหมด พวกเขาก็ยังเป็นฝ่ายที่ผมไว้ใจมากที่สุด