2 điểm bởi GN⁺ 2024-08-20 | 1 bình luận | Chia sẻ qua WhatsApp
  • FindMy Flipper là ứng dụng mở rộng tính năng Bluetooth của FlipperZero để hoạt động như Apple AirTag, Samsung SmartTag hoặc Tile Tracker
  • Ứng dụng phát tín hiệu SmartTag bằng BLE beacon của FlipperZero và có thể sao chép thẻ hiện có hoặc tạo cặp khóa OpenHaystack để tích hợp với mạng Apple FindMy
  • Cách sao chép thẻ hiện có lấy địa chỉ MAC và payload của AirTag, Samsung SmartTag hoặc Tile Tracker để theo dõi bằng ứng dụng gốc, nhưng với AirTag, nếu lắp lại pin thì khóa có thể xoay vòng và làm khóa hiện tại trên Flipper mất hiệu lực
  • Cách tạo khóa AirTag có thể thực hiện mà không cần AirTag thật hay thiết bị Apple, nhưng cần Docker Desktop, Python, Git và dùng máy tính cùng xác thực Apple ID để nhận dữ liệu vị trí
  • Ứng dụng hỗ trợ chạy nền và điều chỉnh khoảng cách beacon/công suất phát, đồng thời người dùng phải tôn trọng quy định về quyền riêng tư liên quan đến thiết bị theo dõi và quyền sở hữu của thiết bị gốc

Ứng dụng dùng FlipperZero như một thẻ theo dõi

  • FindMy Flipper là ứng dụng biến FlipperZero thành thiết bị giả lập Apple AirTag, Samsung SmartTag và Tile Tracker
  • Ứng dụng dùng BLE beacon của FlipperZero để phát tín hiệu SmartTag có thể bị phát hiện trên mạng FindMy
  • Các tính năng mục tiêu gồm:
    • Sao chép Apple AirTag, Samsung SmartTag hoặc Tile Tracker hiện có sang FlipperZero
    • Tạo cặp khóa OpenHaystack cho mạng FindMy mà không cần AirTag thật
    • Theo dõi liên tục vị trí của FlipperZero

Tính năng chính

  • Giả lập thẻ

    • Có thể sao chép địa chỉ MAC và payload của thẻ hiện có
    • Có thể tạo cặp khóa cho mạng FindMy ngay cả khi không sở hữu AirTag thật
  • Tùy chỉnh người dùng

    • Có thể điều chỉnh khoảng thời gian phát beacon
    • Có thể thay đổi công suất phát để cân bằng giữa khả năng hiển thị và thời lượng pin
  • Hoạt động nền

    • Ứng dụng được tối ưu để chạy nền
    • Được thiết kế để duy trì theo dõi với mức tiêu thụ pin thấp mà không làm gián đoạn việc sử dụng FlipperZero thông thường

Cách cài đặt

  • Có thể cài đặt theo hai cách:
    • Dùng firmware FAP bản phát hành/bản biên dịch sẵn phù hợp với thiết bị
    • Tự build firmware bằng fbt/ufbt
  • Hiện tại mọi firmware đều phải hoạt động trên nhánh main, bao gồm cả biểu tượng

Cách lấy dữ liệu SmartTag

  • Có hai cách để lấy dữ liệu giả lập thẻ:
    • Tùy chọn A: Sao chép thẻ hiện có

      • Tùy chọn B: Tạo khóa AirTag
  • Tùy chọn A: Sao chép thẻ hiện có

    • Đây là cách được ưu tiên vì có thể theo dõi mà không cần cấu hình bổ sung
    • Có thể dùng thẻ Apple, Samsung, Tile bằng cách sao chép địa chỉ MAC và payload của thẻ thật
    • Cách này cho phép theo dõi qua các ứng dụng gốc như Apple FindMy, Samsung SmartThing và Tile App
    • Quy trình cơ bản như sau:
    • Trước tiên ghép đôi AirTag, Samsung SmartTag hoặc Tile Tracker với thiết bị
    • Để thẻ rời khỏi thiết bị đã đăng ký khoảng 15 phút để vào chế độ Lost
    • Dùng nrfConnect trên Android hoặc ESP32
    • Với nrfConnect, cần dùng bản Android vì bản Apple không hiển thị dữ liệu Raw cần thiết
    • Nếu dùng ESP32-WROOM hoặc ESP32-S3 thì có thể lấy dữ liệu cần thiết mà không cần Android
    • Có thể dùng công cụ liên quan là ESP32-AirTag-Scanner
    • Quy trình quét gồm việc loại bỏ các mục không thuộc thương hiệu thẻ trong bộ lọc, chỉnh RSSI thành -40 dBm, rồi chờ đến khi SmartTag xuất hiện dưới dạng thiết bị “FindMy”
    • Ngay sau khi chụp được payload và địa chỉ MAC, phải tháo pin khỏi thẻ
    • Nếu lắp lại pin vào AirTag, khóa có thể bị Apple xoay vòng trên máy chủ
    • Khi khóa xoay vòng, khóa hiện tại trên Flipper sẽ mất hiệu lực
    • Muốn tiếp tục dùng trên Flipper thì phải tắt nguồn AirTag hoặc tháo pin ra
    • Không thể dùng AirTag và Flipper cùng lúc; nếu cần, có thể lặp lại quy trình để khôi phục chức năng trên Flipper
    • Nhập payloadMAC Address đã chụp vào ứng dụng FlipperZero
  • Tùy chọn B: Tạo khóa AirTag

    • Đây là cách giả lập AirTag mà không cần thiết bị Apple hay AirTag thật
    • Cách này hoạt động bằng việc tạo khóa, nhưng cần máy tính để tải dữ liệu vị trí
    • Các thành phần cần có gồm:
    • Docker Desktop
    • Python
    • Git
    • Sau khi clone kho mã, làm việc trong thư mục AirTagGeneration
    git clone https://github.com/MatthewKuKanich/FindMyFlipper.git
    cd AirTagGeneration
    
    • Sau khi chạy Docker Desktop, thiết lập máy chủ bằng lệnh sau
    docker run -d --restart always --name anisette-v3 -p 6969:6969 dadoum/anisette-v3-server:latest
    
    • Máy chủ này giả lập môi trường đánh lừa máy chủ xác thực của Apple
    • Tạo và kích hoạt môi trường ảo Python rồi cài đặt các dependency
    python3 -m venv venv
    pip3 install -r requirements.txt
    
    • generate_keys.py tạo các khóa cần thiết cho AirTag và lưu chúng vào thư mục keys mới
    • Có thể chuyển file .keys đã tạo sang FlipperZero và import trong ứng dụng
    • Chọn “register tag” trong menu config của ứng dụng
    • Chọn loại thẻ
    • Import .keys hoặc .txt, hoặc nhập thủ công
    • Khi nhập thủ công, nhập lần lượt MAC và payload
    • Nhấn lưu để đăng ký
    • request_reports.py yêu cầu dữ liệu vị trí theo thời gian thực bằng xác thực Apple ID và mật khẩu
    • Thông tin đăng nhập Apple được lưu trong file auth nên không cần nhập lại về sau
    • RequestReport&Map.py hiển thị dữ liệu vị trí của 24 giờ gần nhất trên bản đồ tương tác
    • Yêu cầu báo cáo vị trí bằng khóa quảng bá đã băm trong thư mục keys
    • Giải mã dữ liệu bằng khóa riêng từ cùng file .keys
    • Hiển thị dữ liệu đã giải mã trong terminal
    • Hiển thị tọa độ trên bản đồ và nối thành lộ trình di chuyển
    • Hiển thị metadata vị trí và lưu thành file HTML theo tên ngày của báo cáo

Cấu hình và tinh chỉnh ứng dụng FlipperZero

  • Sau khi chạy ứng dụng, có thể dùng Import Tag From File hoặc Register Tag Manually trong menu config
  • File .keys được đặt trong thư mục apps_data->findmy hoặc AppsData/FindMyFlipper trên thẻ SD của FlipperZero rồi import theo luồng này
  • File .txt lưu từ nrfConnect cũng có thể được đặt trong cùng thư mục để import
  • Các mục có thể tinh chỉnh gồm:
    • Beacon Interval: điều chỉnh tần suất FlipperZero phát sự hiện diện của nó
    • Transmit Power: điều chỉnh cường độ tín hiệu để cân bằng giữa phạm vi theo dõi và thời lượng pin

Tương thích, lựa chọn thay thế và trách nhiệm

  • Hỗ trợ tương thích với:
    • Thiết bị Apple để theo dõi AirTag qua mạng FindMy
    • Thiết bị và trình duyệt web hỗ trợ theo dõi Samsung SmartTag
    • Tile Tracker qua Tile App
  • Muốn theo dõi bằng OpenHaystack thì cần macOS dưới 14
    • Trên macOS 14 trở lên có vấn đề tương thích với plugin Mail
  • Một lựa chọn thay thế là macless-haystack
    • Khi dùng cách này, vẫn chỉ nên dùng generate_keys.py trong thư mục AirTagGeneration
    • Script tạo khóa của kho đó dùng định dạng file khóa khác, còn file phía FindMy Flipper chứa dữ liệu cần thiết để FlipperZero import đúng cách
  • Ứng dụng này được tạo ra cho mục đích cá nhân và giáo dục
  • Người dùng phải tuân thủ các quy định về quyền riêng tư và quy định địa phương liên quan đến thiết bị theo dõi
  • Việc sao chép và giả lập thẻ theo dõi phải được sử dụng có trách nhiệm, tôn trọng quyền sở hữu của thiết bị gốc
  • Dự án này không liên quan đến Apple Inc. hoặc Samsung

1 bình luận

 
GN⁺ 2024-08-20
Ý kiến trên Hacker News
  • Đây là một dự án thú vị, nhưng một trong các phụ thuộc cấp dưới được dùng ở đây mặc định trông không an toàn:
    https://github.com/biemster/FindMy/blob/113ebf4017729b92a381...
    Có vẻ là thư viện xác thực cho iCloud, và dường như họ đã hardcode MacBook device agent để liên kết khóa đã tạo với thiết bị
    Như thường thấy với các dịch vụ tập trung, tôi sẽ không dùng nó với tài khoản có nhiều dịch vụ hoặc tài sản số được liên kết. Tôi cũng không ngạc nhiên nếu Apple chặn các tài khoản dùng kiểu này
    Vì có mã adsid duy nhất cần cho đăng nhập nên có lẽ cũng không khó để phát hiện

    • Nếu “dường như họ đã hardcode MacBook device agent để liên kết khóa đã tạo với thiết bị”, thì về mặt kỹ thuật có nghĩa là không cần thiết bị iOS để đăng ký AirTag, chỉ cần bất kỳ thiết bị Apple nào là đủ à?
      Nhưng tôi không hiểu vì sao Apple không hỗ trợ chính thức việc này. Có phải họ làm vậy để thúc đẩy doanh số thiết bị iOS không
      Tôi có khoảng 5.000 USD thiết bị desktop/mobile của Apple mà vẫn phải mua thêm một chiếc iPhone cũ chỉ để đăng ký vài AirTag, nên khá bực
    • Không có gì to tát đâu, là localhost:
      https://github.com/biemster/FindMy/blob/113ebf4017729b92a381...
    • Thư viện xác thực cho iCloud về bản chất là không an toàn đối với người dùng, nhưng tất nhiên không phải với Apple, Inc. Tôi nghĩ dự án này, dù có tệ hại, cũng nên được fork thành hai sản phẩm riêng biệt
      Tôi sẽ không bao giờ chủ động tích hợp thư viện bên thứ ba. Ngay cả bây giờ tôi vẫn đang chạy mọi bản phát hành của VenToy qua trình quét virus, chờ khoảnh khắc một lỗ hổng kiểu NZ thực sự lộ ra
      Không hẳn vì luồng thanh toán của Apple, mà vì mô hình thuê bao. Nếu cung cấp miễn phí một tính năng mà Apple có thể thấy thú vị thì phải cẩn thận. Apple có thể chặn quyền truy cập rồi bắt người dùng trả tiền
      Cũng phải cẩn thận gấp đôi với việc chọc giận dân geek. Họ thật sự đáng sợ: tối thứ Sáu đi ngủ trong cơn tức giận rồi dành cả cuối tuần phân tích hộp đen sản phẩm và làm cho việc triển khai trở nên tầm thường
  • Khái niệm này có vẻ cũng có thể được dùng để vượt qua các tính năng chống theo dõi lén mà Apple và những bên khác đã đưa vào
    Ví dụ, nếu có N thẻ hiến tặng và luân phiên dùng mỗi 24/N giờ, thì từ góc nhìn của Apple hoặc thiết bị theo dõi, người bị theo dõi sẽ không có vẻ như bị một thẻ duy nhất bám theo trong thời gian dài

    • Nếu chưa được vá, tôi nghe nói chỉ cần dùng bộ hẹn giờ để định kỳ tắt/bật nguồn thẻ là có thể tránh bị phát hiện
      Gắn thêm pin lớn và một mạch hẹn giờ đơn giản, rồi tháo còi bíp ra, là thành một thiết bị theo dõi rất tốt
      Tôi nhớ chuyện này được nhắc đến trong bối cảnh theo dõi hàng hóa chứa thiết bị đắt tiền. Việc vận chuyển có thể kéo dài nhiều tháng, AirTag thì tiết kiệm điện nên chạy lâu với pin lớn, còn các giải pháp GPS hiện có thì không đủ tốt
    • Sao lại cần thẻ hiến tặng? README của dự án này có cách tạo thẻ mà
    • Nếu cứ phải luân phiên các thẻ liên tục, đến mức đó thì chẳng phải tự đi theo còn ít tốn công hoặc tiền hơn sao?
      Hoặc dùng thẻ GPS không dùng “mạng” AirTag gì cả, cũng không cần xoay vòng
  • Tôi vẫn dùng Flipper vài lần mỗi tuần. Đang mong phiên bản tiếp theo hỗ trợ Wi-Fi và các tần số khác

    • Bạn dùng vào việc gì vậy?
    • WiFi dev board chưa đủ sao?
  • Có ai thử xem ứng dụng “Find My” phản ứng thế nào nếu thấy cùng một thẻ ở hai vị trí trở lên chưa?

    • Máy chủ Apple không biết gì về vị trí, nên việc có lấy trung bình vị trí hay không phụ thuộc vào phần triển khai, ở đây là ứng dụng FindMy
    • Nếu tôi không bỏ sót gì thì chẳng phải nó chỉ dùng vị trí mới nhất sao?
  • Tôi đang dùng cái này và nó rất tuyệt. Thực tế gần như không tốn điện
    Sẽ rất hay nếu nó cũng có thể giao tiếp với mạng Find My Device của Google, nhưng trên mạng Apple thì đã hoạt động rất tốt rồi

  • Sẽ tốt nếu có thể port cái này sang thiết bị BLE giá rẻ như ESP32-C3. Dùng Flipper làm AirTag thì hơi đắt

  • Đáng tiếc là cần một thẻ hiến tặng để giả mạo, và thẻ đó không thể dùng trong lúc dùng cái này. Hoặc phải dùng OpenHaystack, nhưng để lấy dữ liệu thì cần Mac

    • Không đúng. Tôi đang dùng trên máy Linux không cần AirTag, và nó hoạt động tốt
  • Trong README.md nên có một liên kết để biết nó đang nói về cái gì: https://flipperzero.one/

  • Muốn dùng cái này thì cần ứng dụng Android nào? Nếu được thì tôi muốn một app không cần Google Services

    • Dự án này dành cho Flipper Zero, không phải điện thoại
    • Tôi biết là cần Flipper, và tôi có một cái
      Nhưng thực tế có thể “tìm” nó bằng ứng dụng Android nào? Tôi không có iPhone hay thiết bị Samsung
    • Không có. Chỉ cần một máy tính có Python, git và Docker là được