- go-haystack là bộ công cụ dựa trên Go/TinyGo cho phép theo dõi các thiết bị Bluetooth cá nhân thông qua mạng Find My của Apple
- Kết hợp OpenHaystack và Macless-Haystack để xây dựng mạng Find My tùy chỉnh, có thể thiết lập mà không cần phần cứng Apple
- Cung cấp firmware beacon được viết bằng TinyGo và gói TinyGo Bluetooth, nhắm tới các phần cứng như bo mạch nRF SoftDevice, BBC Microbit, Seeed Studio XIAO nRF52840, bo mạch dùng bộ đồng xử lý ESP32, và RP2040 Pico-W
- Có thể chạy cùng mã beacon trên Linux có phần cứng Bluetooth, bao gồm Raspberry Pi và các hệ thống nhúng
- Người dùng chuẩn bị Apple ID và 2FA qua SMS, anisette-v3-server, máy chủ Macless-Haystack, cùng CLI
haystack, rồi đăng ký thiết bị theo quy trình tạo khóa · flash firmware · tải JSON lên
Vai trò của go-haystack
- go-haystack cho phép theo dõi thiết bị Bluetooth cá nhân thông qua mạng Find My của Apple
- Kết hợp OpenHaystack và Macless-Haystack để thiết lập mạng Find My tùy chỉnh
- Công cụ được viết bằng Go/TinyGo và có thể sử dụng mà không cần phần cứng Apple
Tự tạo beacon
Beacon Linux và TinyScan
- Cũng có thể chạy mã beacon trên Linux có phần cứng Bluetooth
- Raspberry Pi hoặc các hệ thống nhúng khác được nêu làm ví dụ
- Mã cho Linux nhúng giống với mã beacon cho vi điều khiển và nằm trong thư mục
firmware của kho mã
- go-haystack cũng bao gồm TinyScan, một trình quét phần cứng dành cho thiết bị cục bộ
- TinyScan chạy trên nhiều bo mạch vi điều khiển có Bluetooth và màn hình nhỏ
- Các bo mạch do Adafruit và Pimoroni sản xuất được nêu làm ví dụ
- Mã nằm trong thư mục tinyscan
Các thành phần cần cho cài đặt
- Cần có Apple ID và phải bật 2FA
- Yếu tố xác thực thứ hai chỉ hỗ trợ SMS/tin nhắn văn bản
- Chạy
anisette-v3-server bằng Docker
- Lệnh ví dụ tạo mạng Docker
mh-network và chạy container dadoum/anisette-v3-server trên cổng 6969
- Chạy endpoint
macless-haystack ở chế độ tương tác để cấu hình
- Trong quá trình cấu hình, nhập Apple ID, mật khẩu và 2FA
- Khi thấy
serving at port 6176 over HTTP thì cấu hình đã hoàn tất
- Sau khi cấu hình, dừng tiến trình và khởi động lại máy chủ bằng
docker restart macless-haystack
- Cài đặt CLI go-haystack bằng lệnh sau
go install github.com/hybridgroup/go-haystack/cmd/haystack@latest
Quy trình sử dụng
- Thiết bị trong phạm vi cục bộ được quét bằng
haystack scan
- Kết quả đầu ra gồm địa chỉ Bluetooth, giá trị tín hiệu, dữ liệu dạng định danh và trạng thái pin
- Để thêm thiết bị mới, trước tiên tạo khóa cho thiết bị
haystack keys DEVICENAME
- Kết quả tạo khóa sẽ lưu tệp
DEVICENAME.keys và tệp DEVICENAME.json dùng cho cấu hình Haystack
DEVICENAME được thay bằng tên thiết bị thực tế
- Flash lên phần cứng bằng cách chỉ định target TinyGo và tên thiết bị
haystack flash DEVICENAME nano-rp2040
- Lệnh này dùng TinyGo để biên dịch firmware có chứa khóa và flash lên thiết bị
- Cuối cùng, tải tệp JSON của thiết bị đó lên phiên bản
macless-haystack đang chạy thông qua giao diện web
- Mở ứng dụng web Macless-Haystack trong trình duyệt, rồi dùng liên kết “Accessories” và nút “+” để chọn tệp
DEVICENAME.json
- Ứng dụng web này là ứng dụng một trang chỉ đọc và ghi dữ liệu cục bộ
Hiển thị dữ liệu vị trí
- Khi thiết bị đi vào phạm vi của một chiếc iPhone nào đó, sau một thời gian dữ liệu Macless-Haystack sẽ xuất hiện trên giao diện web
- Có thể mất thời gian để dữ liệu đầu tiên hiển thị
1 bình luận
Ý kiến trên Hacker News
Thật sự rất hay. Những thử nghiệm kiểu này và mạng Find My lần nào nhìn cũng thấy ấn tượng, nhưng lý do tôi không tự dùng cách này là vì tôi nghĩ một ngày nào đó Apple có thể chính thức chấp nhận việc “đi nhờ” mạng này, hoặc ngược lại có thể cấm các Apple ID có lịch sử liên quan
Hiện Apple biết chuyện này nhưng chưa thể hiện lập trường theo bên nào. Cho đến khi Apple hỗ trợ chính thức hơn, hoặc có cách nào đó không liên kết trực tiếp với Apple ID/tài khoản của tôi, tôi chỉ định đứng ngoài quan sát
Đặc biệt là Apple không cần trực tiếp làm việc, nên có lẽ cuối cùng họ sẽ muốn tận dụng mật độ mesh hơn là kìm hãm việc áp dụng ngay lúc này
Mùa hè năm ngoái tôi đi nghỉ với vợ ở Bồ Đào Nha, và vợ tôi để quên ví trên xe Uber đi ra sân bay. Tài xế tìm thấy ví rồi lấy 20 đô la và vài món đồ trang sức, sau đó vứt nó đi; cuối ngày hôm đó, chúng tôi lần theo AirTag đến một bãi đỗ xe bỏ hoang và tìm được bằng ứng dụng Location
Từ đó tôi cho AirTag vào mọi túi xách và thay pin theo lịch
Khi đó có một người đàn ông khác cũng nói đồ của anh ta đang ở đó; một tháng trước, khi sơ tán khỏi máy bay ở New Zealand, anh ta để quên iPad trong túi ghế và đã dùng Find My để theo dõi nó đến Sydney. Anh ấy bay quốc tế nhiều lần mỗi tháng và nói AirTag là món đồ tốt nhất anh ấy có. Từ đó tôi cũng giấu vài tag mồi trong mọi xe, túi xách và các món đồ đắt tiền có khả năng bị trộm
Đọc cái này tôi vẫn chưa rõ. Nó có dùng được cùng với Apple AirTag không, hay là phải tự làm thiết bị theo dõi riêng?
https://github.com/hybridgroup/go-haystack?tab=readme-ov-fil...
https://media.ccc.de/v/38c3-find-my-101
Trong tương lai, tôi hy vọng có thể biết vị trí beacon với độ chính xác dưới 1 mét khối
Vợ tôi bị ADD nên thường xuyên làm mất đồ. Tile thì âm thanh không đủ lớn và không ổn định, còn chúng tôi không có iPhone nên cũng không dùng được AirTag. Tôi đã quá mệt để học phần toán cần thiết cho việc tìm vị trí beacon Bluetooth, nhưng giá mà làm được thì tốt. Tôi ước có một dự án phần mềm kiểu “chỉ cần thêm 4 bo mạch Bluetooth nhỏ”, nhưng có vẻ với phần lớn lập trình viên mã nguồn mở thì đây không phải kiểu vấn đề khiến họ muốn gãi đúng chỗ ngứa
Nó định vị chính xác bằng băng siêu rộng (UWB), không phải cường độ kết nối Bluetooth. Cơ chế hoạt động là đo thời gian bay dựa trên độ trễ tốc độ ánh sáng, giống GPS. Khi mở ứng dụng Find My, nó biết rất nhanh khoảng cách chính xác đến AirTag, và khi bạn đi lại, nó cũng tính được AirTag nằm ở hướng nào dựa trên thay đổi vị trí quan sát được. Công nghệ khá ấn tượng. Trong ứng dụng Find My, bạn phải dùng tính năng “Find” chứ không phải “Play Sound”, và cần iPhone 11+ có chip băng siêu rộng H1. Chi phí có thể tương đương việc lắp nhiều bo mạch Bluetooth trong nhà và chính xác hơn nhiều, nhưng ít thú vị để hack hơn
https://en.wikipedia.org/wiki/Ultra-wideband#Real-time_locat...
Ít nhất có vẻ không có lựa chọn tương đương nào vừa có định vị chính xác bằng băng siêu rộng, vừa dễ mua, giá hợp lý và ổn định. Trong khi đó, một số máy Android dường như có hỗ trợ UWB, có thể hoạt động cùng UWB của Tile: https://www.zdnet.com/article/how-to-enable-uwb-on-android-a...
https://www.bluetooth.com/learn-about-bluetooth/feature-enha...
Trước đây tôi từng nghịch beacon, và bản thân việc làm cho nó chạy khá dễ. Tôi viết một chương trình nhỏ để laptop hoạt động như beacon, rồi dùng một ứng dụng “Bluetooth tracker” bất kỳ trên điện thoại để xem khoảng cách ước chừng đến beacon đó. Sau đó chỉ cần vừa nhìn khoảng cách vừa đi quanh là được
Có vẻ giờ có thể dùng mà không cần Mac? Nếu vậy thì tuyệt vời. Trình theo dõi của Apple chỉ vài euro, tất nhiên là nói theo tiêu chuẩn sản phẩm bên thứ ba.
Không biết có phải chỉ mình tôi thấy vậy không, nhưng toàn bộ tính năng mạng Find My này trông như một cơn ác mộng bảo mật. Tôi hiểu tính hữu dụng của nó, nhưng liệu một cơ quan nào đó có thể yêu cầu Apple cho biết người này đang ở đâu ngay cả khi không có vùng phủ sóng di động không?
Dù sao thì vì chuyện này tôi đã quyết định rời khỏi hệ sinh thái Apple, và xét về mặt giám sát thì nó trông như ác mộng.
Thẻ không biết vị trí của chính nó, mà chỉ phát khóa công khai xoay vòng của mình. Vì khóa thay đổi ngẫu nhiên, bạn với tư cách chủ sở hữu hợp pháp có thể dự đoán được, nhưng bên thứ ba khó có thể dễ dàng bám theo thẻ. Các thiết bị khác nhìn thấy khóa đó sẽ mã hóa vị trí của chúng bằng khóa công khai của thẻ rồi chia sẻ. Vì vậy việc lấy dữ liệu là khá khó, và trên thực tế là bất khả thi trừ khi Apple bị buộc phải thiết kế lại hệ thống và phát hành một bản cập nhật độc hại. Thông thường mức độ đó được xem là vượt quá phạm vi có thể làm bằng một trát đòi hầu tòa thông thường.
Tôi nghi ngờ Samsung và Google có làm đến mức này với thiết bị theo dõi của họ hay không.
Ứng dụng Find My gộp cả hai để hiển thị vị trí mới nhất. Theo tôi, dự án này có vẻ chỉ dùng cái đầu tiên, và phía đó theo thiết kế sẽ cần một backdoor rõ ràng. Nhưng nếu mục tiêu là phòng vệ trước các cơ quan chính phủ, thì mạng thứ hai nhiều khả năng mới là phần đáng lo hơn.
Nếu bạn không tin rằng tắt như vậy thì nó thực sự bị vô hiệu hóa, bạn nên suy nghĩ kỹ về mọi thiết bị điện tử mình sở hữu. Bạn có tin firmware của điện thoại Android không? Còn chip modem không phải mã nguồn mở thì sao? SIM card chạy Java thì sao? Điều khiển TV có gắn micro mà bạn không nhận ra không? Thực tế là nhiều điều khiển có đấy. Ngay cả máy nướng bánh cũng có thể chứa chip mạnh hơn một máy tính thời DOS kết nối mạng. Cái của tôi cũng vậy. Làm sao bạn biết nó không kết nối vào Wi-Fi gần đó rồi gửi thông tin đi? Sau vụ China/iCloud, tôi không hoàn toàn tin Apple, nhưng trong số các công ty công nghệ lớn thì họ vẫn là bên tôi tin nhất.