- 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 ความคิดเห็น
ความเห็นจาก Hacker News
เจ๋งมาก ทั้งความพยายามแบบนี้และเครือข่าย Find Myทำให้ทึ่งทุกครั้งที่เห็น แต่เหตุผลที่ผมยังไม่ใช้วิธีนี้เองก็เพราะคิดว่าสักวันหนึ่ง Apple อาจยอมรับการอาศัยเครือข่ายแบบนี้อย่างเป็นทางการ หรือในทางกลับกันก็อาจแบนApple IDที่มีประวัติเกี่ยวข้องก็ได้
ตอนนี้ Apple น่าจะรู้เรื่องนี้อยู่แล้ว แต่ก็ยังไม่แสดงจุดยืนไปทางไหน ผมคงขอดูอยู่ห่าง ๆ ไปก่อน จนกว่า Apple จะรองรับอย่างเป็นทางการมากกว่านี้ หรือมีวิธีที่ไม่ผูกกับ Apple ID/บัญชีของผมโดยตรง
โดยเฉพาะเมื่อ Apple ไม่ต้องลงแรงเอง คิดว่าท้ายที่สุดบริษัทคงอยากใช้ประโยชน์จากความหนาแน่นของ meshมากขึ้น แทนที่จะกดการยอมรับใช้งานตั้งแต่ตอนนี้
ช่วงหน้าร้อนปีที่แล้วผมไปเที่ยวพักร้อนกับภรรยาที่โปรตุเกส แล้วภรรยาดันลืมกระเป๋าสตางค์ไว้ใน Uber ระหว่างไปสนามบิน คนขับหาเจอแล้วเอาเงิน 20 ดอลลาร์กับเครื่องประดับบางชิ้นไป ก่อนจะเอาไปทิ้ง แต่คืนนั้นเราก็ตามไปจนถึงลานจอดรถร้างได้ด้วยAirTagแล้วหาเจอผ่านแอป Location
หลังจากนั้นผมก็ใส่ AirTag ไว้ในกระเป๋าทุกใบ และเปลี่ยนแบตเตอรี่ตามรอบตลอด
ตอนนั้นมีผู้ชายอีกคนบอกว่าของเขาก็อยู่ที่นั่นเหมือนกัน หนึ่งเดือนก่อนหน้านั้นเขาต้องอพยพลงจากเครื่องที่ New Zealand แล้วลืม iPad ไว้ในช่องหลังเบาะ ก่อนจะตามมันมาถึง Sydney ได้ผ่าน Find My เขาบอกว่าตัวเองบินระหว่างประเทศเดือนละหลายครั้ง และ AirTag เป็นของที่ดีที่สุดที่เขามี หลังจากนั้นเขาก็ซ่อนแท็กหลอกไว้ในรถทุกคัน ทุกกระเป๋า และในของมีค่าที่เสี่ยงโดนขโมยอีกหลายชิ้น
อ่านแล้วยังไม่ค่อยเข้าใจ มันใช้คู่กับApple AirTagได้หรือเปล่า หรือว่าต้องสร้างอุปกรณ์ติดตามขึ้นมาเอง?
https://github.com/hybridgroup/go-haystack?tab=readme-ov-fil...
https://media.ccc.de/v/38c3-find-my-101
ต่อไปถ้ารู้ตำแหน่งของ beacon ได้แม่นยำระดับต่ำกว่า 1 ลูกบาศก์เมตรก็คงดี
ภรรยาผมเป็น ADD เลยทำของหายบ่อย Tile ก็เสียงไม่ดังพอและไม่เสถียร แถมเราก็ไม่มี iPhone เลยใช้ AirTag ไม่ได้ ผมเหนื่อยเกินกว่าจะไปเรียนคณิตศาสตร์ที่ต้องใช้ในการหาตำแหน่งของ Bluetooth beacon แล้ว แต่ถ้าทำได้ก็คงดี อยากมีโปรเจ็กต์ซอฟต์แวร์แนว “แค่เพิ่มบอร์ด Bluetooth เล็ก ๆ อีก 4 ตัว” แต่ดูเหมือนมันจะไม่ใช่ปัญหาคัน ๆ ที่นักพัฒนาโอเพนซอร์สส่วนใหญ่สนใจแก้
มันไม่ได้ใช้ความแรงของสัญญาณ 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...
อย่างน้อยก็ดูเหมือนไม่มีทางเลือกอื่นที่เทียบได้ครบทั้งเรื่องตำแหน่งแม่นยำด้วย UWB ความหาซื้อได้ ราคาเหมาะสม และความเสถียร ในทางกลับกัน Android บางรุ่นก็ดูเหมือนมีรองรับ UWB ที่อาจใช้กับ UWB ของ Tile ได้: https://www.zdnet.com/article/how-to-enable-uwb-on-android-a...
https://www.bluetooth.com/learn-about-bluetooth/feature-enha...
ผมเคยลองเล่นกับ beacon มาก่อน ซึ่งตัวการทำให้มันทำงานจริง ๆ ค่อนข้างง่าย ผมเขียนโปรแกรมเล็ก ๆ ให้แล็ปท็อปทำตัวเป็น beacon แล้วใช้แอป “Bluetooth tracker” อะไรก็ได้บนมือถือเพื่อดูระยะคร่าว ๆ ถึง beacon นั้น จากนั้นก็แค่เดินไปมาพร้อมดูระยะเท่านั้นเอง
ตอนนี้ดูเหมือนว่าจะใช้ได้แม้ ไม่มี Mac ใช่ไหม? ถ้าอย่างนั้นก็สุดยอดมาก ตัวติดตามของ Apple ราคาแค่ไม่กี่ยูโรเอง แน่นอนว่าหมายถึงผลิตภัณฑ์ของผู้ผลิตภายนอก
ไม่รู้ว่ามีแค่ผมหรือเปล่า แต่ฟีเจอร์เครือข่าย Find My ทั้งหมดนี้ดูเหมือน ฝันร้ายด้านความปลอดภัย เลย เข้าใจเรื่องประโยชน์ใช้งานนะ แต่หน่วยงานบางแห่งจะไม่สามารถยื่นเรื่องขอ Apple ให้บอกได้หรือว่าคนนี้อยู่ที่ไหนแม้ไม่มีสัญญาณเซลลูลาร์?
ยังไงก็ตาม นี่เป็นเหตุผลที่ผมตัดสินใจออกจาก ecosystem ของ Apple และในมุมการเฝ้าติดตามมันดูเหมือนฝันร้าย
ตัวแท็กไม่รู้ตำแหน่งของตัวเอง และจะกระจายแค่ กุญแจสาธารณะแบบหมุนเวียน ของตัวเองเท่านั้น เนื่องจากกุญแจเปลี่ยนแบบสุ่ม เจ้าของที่ถูกต้องตามกฎหมายอย่างคุณจึงคาดเดาได้ แต่บุคคลที่สามจะตามแท็กได้ง่าย ๆ นั้นยาก อุปกรณ์อื่นจะเห็นกุญแจนั้นแล้วแชร์ตำแหน่งของตัวเองโดยเข้ารหัสด้วยกุญแจสาธารณะของแท็ก ดังนั้นการดึงข้อมูลออกมาจึงทำได้ยากมาก และแทบเป็นไปไม่ได้เลย เว้นแต่ Apple จะถูกบังคับให้ปรับระบบใหม่และปล่อยอัปเดตอันตรายออกมา ซึ่งโดยปกติแล้วระดับนั้นก็มักเกินกว่าขอบเขตของหมายเรียกทั่วไป
ผมสงสัยว่า Samsung กับ Google จะทำได้ถึงระดับนี้กับตัวติดตามของตัวเองหรือเปล่า
แอป Find My จะรวมสองอย่างนี้เข้าด้วยกันแล้วแสดงตำแหน่งล่าสุด เท่าที่ผมดู โปรเจ็กต์นี้น่าจะใช้แค่อย่างแรก และฝั่งนี้ตามการออกแบบแล้วต้องมี แบ็กดอร์ แบบชัดเจนถึงจะทำได้ แต่ถ้าคุณพยายามป้องกันตัวเองจากหน่วยงานรัฐ เครือข่ายแบบหลังอาจเป็นสิ่งที่ควรกังวลมากกว่า
ถ้าปิดแล้วคุณก็ยังไม่เชื่อว่ามันจะถูกปิดจริง ๆ คุณก็คงต้องทบทวนอุปกรณ์อิเล็กทรอนิกส์ทุกชิ้นที่มีอย่างจริงจัง คุณเชื่อเฟิร์มแวร์ของโทรศัพท์ Android ไหม? แล้วชิปโมเด็มที่ไม่ใช่โอเพนซอร์สล่ะ? ซิมการ์ดที่รัน Java ล่ะ? ในรีโมตทีวีมีไมโครโฟนที่คุณไม่รู้ตัวหรือเปล่า? ที่จริงรีโมตจำนวนมากมีนะ แม้แต่ในเครื่องปิ้งขนมปังก็อาจมีชิปที่แรงกว่าคอมพิวเตอร์ยุค DOS ที่ต่อเน็ตได้เสียอีก ของผมก็เป็นแบบนั้น แล้วคุณจะรู้ได้ยังไงว่ามันไม่ได้เชื่อม Wi-Fi ใกล้ ๆ แล้วส่งข้อมูลออกไป? หลังเหตุการณ์ China/iCloud ผมไม่ได้ไว้ใจ Apple แบบเต็มร้อย แต่ในบรรดาบริษัทเทคยักษ์ใหญ่ทั้งหมด พวกเขาก็ยังเป็นฝ่ายที่ผมไว้ใจมากที่สุด