2 điểm bởi GN⁺ 2025-01-12 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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 OpenHaystackMacless-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

 
GN⁺ 2025-01-12
Ý 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

    • Quy trình yêu cầu vị trí của một tag cụ thể không gắn với Apple Account. Như README hướng dẫn, khi đăng nhập vào macless haystack thì chỉ cần dùng một tài khoản dùng một lần là được
    • Tôi nghĩ cũng có hiệu ứng tích cực khiến Apple có thể làm ngơ chuyện này. Mạng này càng rộng thì mức độ chấp nhận càng tăng, và nếu nhìn P2P như một cấu trúc cấp cao hơn thì đây là vấn đề lớn hơn một nhà cung cấp cụ thể, nên việc chấp nhận tăng lên theo cách nào đó có thể là một sự đánh đổi chấp nhận được
      Đặ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

    • Tôi cũng để AirTag trong tất cả túi của mình. Vài năm trước ở khu hành lý thất lạc của sân bay Sydney, tôi từng phải chờ một chiếc túi mà sau nhiều giờ hỏi hãng bay và sân bay mới biết nó đang ở đó
      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
    • Làm sao biết đó là việc tài xế làm, chứ không phải một hành khách khác lên xe sau đó?
  • Đọ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://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

    • AirTag và iPhone 11 trở lên giải quyết đúng vấn đề này. Bạn có thể tìm AirTag trong phạm vi 1 foot
      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...
    • Chúng tôi cũng đều chỉ dùng Android, nhưng đang nghĩ đến việc mua một chiếc iPhone 11 hoặc 12 mini bị vỡ để dành riêng cho tìm kiếm chính xác AirTag
      Í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...
    • Tôi hy vọng trong vài năm tới Bluetooth Channel Sounding sẽ phổ biến hơn. Nghe nói nó có thể mang lại cho mọi thiết bị BLE khả năng ước tính khoảng cách tương tự UWB, dù kém chính xác hơn
      https://www.bluetooth.com/learn-about-bluetooth/feature-enha...
    • Tôi cũng bị ADHD và cứ làm mất đồ liên tục, nhưng tag Pebblebee có hiệu quả. Tôi gắn tag vào chìa khóa và để thẻ trong ví; âm thanh đủ lớn để nghe từ tầng khác ngay cả trong căn nhà cũ có tường gạch dày
    • “Phần toán cần thiết” được nói ở đây có vẻ là tam giác đạc vị trí bằng các beacon cố định. Ngay cả Apple cũng dùng cách gửi vị trí của điện thoại đã nhận tín hiệu, nên mới có chuyện cảnh sát tìm nhầm nhà vì tai nghe mà đứa trẻ hàng xóm nhặt được trên xe buýt
      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.

    • Hệ thống này được thiết kế chính xác để khiến những việc như vậy trở nên bất khả thi.
      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.
    • Không thể. Apple không biết ai đang có thẻ nào. Nó được xây dựng theo thiết kế đặt quyền riêng tư làm trung tâm. Tôi biết Apple vừa nêu cao bảo vệ quyền riêng tư vừa có những ý đồ khác, nhưng tôi đã xem tài liệu thiết kế kỹ thuật và cái này khá xuất sắc.
      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.
    • https://support.apple.com/guide/security/find-my-security-se...
    • Cần nói rằng trong Find My có hai “mạng” khác nhau. Một là mạng nơi các thiết bị Apple khác giúp tìm đồ của bạn, còn một là mạng nơi thiết bị của bạn trực tiếp tải vị trí của chính chúng lên Apple.
      Ứ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 lo đây là ác mộng bảo mật, bạn có thể tắt trong cài đặt: Settings → your_name → Find My → device → toggle off
      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.