2 puntos por GN⁺ 2024-08-20 | 1 comentarios | Compartir por WhatsApp
  • FindMy Flipper es una app que amplía la funcionalidad Bluetooth del FlipperZero para que actúe como un Apple AirTag, Samsung SmartTag o Tile Tracker
  • Con los beacons BLE del FlipperZero, transmite señales de SmartTag y puede integrarse con la red Apple FindMy clonando una etiqueta existente o generando un par de claves de OpenHaystack
  • El método de clonación de etiquetas existentes permite rastrear desde apps nativas tomando la dirección MAC y el payload de AirTag, Samsung SmartTag y Tile Tracker, pero en AirTag la clave puede rotar al volver a colocar la batería, invalidando la clave actual del Flipper
  • El método de generación de claves AirTag puede hacerse sin un AirTag real ni un dispositivo Apple, pero requiere Docker Desktop, Python y Git, y usa una computadora con autenticación de Apple ID para recibir los datos de ubicación
  • La app admite ejecución en segundo plano y ajuste del intervalo de beacon y de la potencia de transmisión, y el usuario debe respetar las leyes de privacidad y la propiedad del dispositivo original relacionadas con dispositivos de rastreo

Una app para usar FlipperZero como etiqueta de rastreo

  • FindMy Flipper permite que FlipperZero emule Apple AirTag, Samsung SmartTag y Tile Tracker
  • Usa los beacons BLE del FlipperZero para transmitir señales de SmartTag que pueden ser detectadas por la red FindMy
  • Las funciones objetivo son las siguientes
    • Clonar Apple AirTag, Samsung SmartTag y Tile Tracker existentes en FlipperZero
    • Generar un par de claves OpenHaystack para la red FindMy sin un AirTag real
    • Seguir rastreando la ubicación del FlipperZero

Funciones principales

  • Emulación de etiquetas

    • Puede clonar la dirección MAC y el payload de una etiqueta existente
    • Puede generar un par de claves para la red FindMy incluso sin tener un AirTag real
  • Ajustes del usuario

    • Se puede ajustar el intervalo de transmisión del beacon
    • Se puede cambiar la potencia de transmisión para equilibrar visibilidad y duración de batería
  • Funcionamiento en segundo plano

    • La app está optimizada para ejecutarse en segundo plano
    • Está diseñada para mantener el rastreo con bajo consumo de batería sin detener el uso normal del FlipperZero

Método de instalación

  • La instalación puede hacerse de dos maneras
    • Usar una FAP firmware release/precompilada adecuada para el dispositivo
    • Compilar el firmware directamente con fbt/ufbt
  • Actualmente todo el firmware debería funcionar en la rama main, incluidos los íconos

Cómo obtener los datos de SmartTag

  • Hay dos formas de obtener los datos para emular una etiqueta
    • Opción A: clonar una etiqueta existente

      • Opción B: generación de claves AirTag
  • Opción A: clonar una etiqueta existente

    • Clonar una etiqueta existente es el método preferido y permite rastrear sin configuración adicional
    • Se pueden usar etiquetas Apple, Samsung y Tile clonando la dirección MAC y el payload de la etiqueta real
    • Este método permite rastreo mediante apps nativas como Apple FindMy, Samsung SmartThing y la app de Tile
    • El procedimiento básico es el siguiente
    • Primero emparejar AirTag, Samsung SmartTag o Tile Tracker con el dispositivo
    • Alejar la etiqueta del dispositivo registrado durante unos 15 minutos para que entre en modo Lost
    • Usar nrfConnect en Android o un ESP32
    • En nrfConnect se indica usar la versión de Android porque la versión de Apple no muestra los datos Raw necesarios
    • Si se usa un ESP32-WROOM o ESP32-S3, se pueden obtener los datos necesarios sin Android
    • Como herramienta relacionada se puede usar ESP32-AirTag-Scanner
    • El procedimiento de escaneo incluye excluir en el filtro todo excepto la marca de la etiqueta y ajustar el RSSI a -40 dBm, luego esperar hasta que el SmartTag aparezca como dispositivo “FindMy”
    • Justo después de capturar el payload y la dirección MAC, se debe retirar la batería de la etiqueta
    • Si se vuelve a colocar la batería en el AirTag, la clave puede rotar con los servidores de Apple
    • Si la clave rota, la clave actual del Flipper queda invalidada
    • Para seguir usándolo en el Flipper, el AirTag debe permanecer apagado o sin batería
    • No se puede usar el AirTag y el Flipper al mismo tiempo; si hace falta, se puede repetir el proceso para restaurar la función en el Flipper
    • El payload y la dirección MAC capturados se ingresan en la app de FlipperZero
  • Opción B: generación de claves AirTag

    • La generación de claves AirTag es una forma de emular un AirTag sin un dispositivo Apple ni un AirTag real
    • Este método funciona mediante generación de claves, y se necesita una computadora para descargar los datos de ubicación
    • Los componentes necesarios son los siguientes
    • Docker Desktop
    • Python
    • Git
    • Después de clonar el repositorio, se trabaja en la carpeta AirTagGeneration
    git clone https://github.com/MatthewKuKanich/FindMyFlipper.git
    cd AirTagGeneration
    
    • Después de iniciar Docker Desktop, se configura el servidor con el siguiente comando
    docker run -d --restart always --name anisette-v3 -p 6969:6969 dadoum/anisette-v3-server:latest
    
    • Este servidor emula un entorno que suplanta al servidor de autenticación de Apple
    • Crear y activar un entorno virtual de Python, luego instalar las dependencias
    python3 -m venv venv
    pip3 install -r requirements.txt
    
    • generate_keys.py genera las claves necesarias para AirTag y las guarda en una nueva carpeta keys
    • El archivo .keys generado puede transferirse al FlipperZero e importarse desde la app
    • En el menú config de la app, seleccionar “register tag”
    • Elegir el tipo de etiqueta
    • Importar .keys o .txt, o ingresar los datos manualmente
    • Si se ingresa manualmente, introducir la MAC y luego el payload
    • Presionar guardar para registrar
    • request_reports.py solicita datos de ubicación en tiempo real usando autenticación con Apple ID y contraseña
    • La información de inicio de sesión de Apple se guarda en un archivo auth para no tener que volver a ingresarla después
    • RequestReport&Map.py muestra en un mapa interactivo los datos de ubicación de las últimas 24 horas
    • Solicita reportes de ubicación con la clave publicitaria hasheada de la carpeta keys
    • Descifra los datos con la clave privada del mismo archivo .keys
    • Muestra los datos descifrados en la terminal
    • Muestra las coordenadas en el mapa y conecta la ruta de movimiento
    • Muestra metadatos de ubicación y los guarda como un archivo HTML con nombre de fecha del reporte

Configuración y ajuste de la app de FlipperZero

  • Después de iniciar la app, en el menú config se puede usar Import Tag From File o Register Tag Manually
  • El flujo incluye colocar el archivo .keys en la carpeta apps_data->findmy o AppsData/FindMyFlipper de la tarjeta SD del FlipperZero e importarlo desde ahí
  • Los archivos .txt guardados desde nrfConnect también pueden colocarse en la misma carpeta para importarlos
  • Los elementos ajustables son los siguientes
    • Beacon Interval: ajusta la frecuencia con la que FlipperZero transmite su presencia
    • Transmit Power: ajusta la intensidad de la señal para equilibrar alcance de rastreo y duración de batería

Compatibilidad, alternativas y responsabilidad

  • Es compatible con lo siguiente
    • Dispositivos Apple para rastreo de AirTag mediante la red FindMy
    • Dispositivos y navegadores web compatibles con rastreo de Samsung SmartTag
    • Tile Tracker mediante la app de Tile
  • Para rastrear con OpenHaystack se requiere una versión de macOS anterior a 14
    • En macOS 14 o superior hay problemas de compatibilidad con el plugin de Mail
  • Como alternativa se propone macless-haystack
    • Incluso al usar este método, solo debe usarse generate_keys.py de la carpeta AirTagGeneration
    • El script de generación de claves de ese repositorio usa un formato distinto de archivo de claves, y el archivo de FindMy Flipper incluye los datos necesarios para una importación correcta en FlipperZero
  • Esta app está pensada para uso personal y educativo
  • El usuario debe cumplir las leyes locales de privacidad y regulaciones relacionadas con dispositivos de rastreo
  • La clonación y emulación de etiquetas de rastreo debe usarse de forma responsable y respetando la propiedad del dispositivo original
  • Este proyecto no está afiliado con Apple Inc. ni con Samsung

1 comentarios

 
GN⁺ 2024-08-20
Opiniones en Hacker News
  • Proyecto interesante, pero una de las dependencias subyacentes que usa no parece segura con la configuración predeterminada:
    https://github.com/biemster/FindMy/blob/113ebf4017729b92a381...
    Parece ser una biblioteca de autenticación para iCloud, y da la impresión de que hardcodearon un MacBook device agent para vincular la clave generada con el dispositivo.
    Como pasa con los servicios centralizados, no la usaría con una cuenta que tenga muchos servicios o activos digitales vinculados. No me sorprendería que Apple bloqueara cuentas usadas así.
    Como hay un código adsid único necesario para iniciar sesión, tampoco parece difícil de detectar.

    • Si “da la impresión de que hardcodearon un MacBook device agent para vincular la clave generada con el dispositivo”, ¿eso significa que, técnicamente, no hace falta un dispositivo iOS para registrar un AirTag y que basta con cualquier dispositivo Apple?
      En ese caso, no entiendo por qué Apple no lo soporta oficialmente. Me hace pensar que quizá lo hacen para impulsar las ventas de dispositivos iOS.
      Tengo unos 5.000 dólares en equipos Apple de escritorio/móviles, y aun así tuve que comprar otro iPhone usado para registrar unos AirTag, así que me da rabia.
    • No es nada grave, es localhost:
      https://github.com/biemster/FindMy/blob/113ebf4017729b92a381...
    • Una biblioteca de autenticación para iCloud es inherentemente insegura para el usuario, y por supuesto no para Apple, Inc. Creo que este proyecto, por horrible que sea, debería bifurcarse en dos productos separados.
      Conscientemente, nunca integraría una biblioteca de terceros. Incluso ahora paso cada release de VenToy por escáneres antivirus y estoy esperando el momento en que aparezca de verdad alguna vulnerabilidad tipo NZ.
      No es tanto por el flujo de pagos de Apple, sino por el modelo de suscripción. Si ofreces gratis una función que Apple podría considerar interesante, hay que tener cuidado. Apple puede cerrar el acceso y empezar a cobrarles a los usuarios.
      También hay que tener el doble de cuidado con enojar a los geeks. Son gente realmente temible: se duermen enojados un viernes por la noche y pasan todo el fin de semana analizando el producto como una caja negra hasta volver trivial su implementación.
  • Este concepto parece que también podría usarse para eludir las funciones antiacoso que Apple y otros incorporaron.
    Por ejemplo, si tienes N etiquetas donantes y vas alternándolas cada 24/N horas, desde la perspectiva de Apple o del seguimiento del dispositivo, no parecería que a la persona rastreada la está siguiendo una sola etiqueta durante mucho tiempo.

    • Si todavía no lo han parcheado, escuché que se puede evitar la detección simplemente apagando y encendiendo periódicamente la etiqueta con un temporizador.
      Si le agregas una batería grande y un circuito temporizador sencillo, y le quitas el beeper, se vuelve un excelente dispositivo de rastreo.
      Recuerdo que esto se comentaba en el contexto de rastrear cargamentos con equipos caros. El transporte podía tardar meses, y como el AirTag es muy eficiente energéticamente, con una batería grande duraba mucho; las soluciones GPS existentes no eran suficientes.
    • ¿Por qué harían falta etiquetas donantes? El README de este proyecto explica cómo generar etiquetas.
    • Si tienes que seguir alternando etiquetas, a esas alturas ¿no sería menos esfuerzo o dinero simplemente seguir a la persona tú mismo?
      O podrías usar una etiqueta GPS que directamente no use la “red” de AirTag, y no habría que rotarla.
  • Todavía uso Flipper varias veces por semana. Espero con ganas la próxima versión con Wi‑Fi y soporte para otras frecuencias.

    • ¿Para qué lo usas?
    • ¿No alcanza con el WiFi dev board?
  • ¿Alguien probó cómo reacciona la app “Find My” si ve la misma etiqueta en más de una ubicación?

    • Los servidores de Apple no saben nada sobre la ubicación, así que si se promedian las ubicaciones depende de la implementación, en este caso de la app FindMy.
    • Si no se me está escapando algo, ¿no usaría simplemente la ubicación más reciente?
  • Lo estoy usando y es excelente. Prácticamente no consume energía.
    Sería genial que también pudiera comunicarse con la red Find My Device de Google, pero ya funciona muy bien en la red de Apple.

  • Me gustaría que esto pudiera portarse a dispositivos BLE baratos como el ESP32-C3. Usar un Flipper como AirTag es algo caro.

  • Lamentablemente necesitas una etiqueta donante para suplantarla, y esa etiqueta no se puede usar mientras usas esto. O si no, tienes que usar OpenHaystack, pero para obtener los datos necesitas una Mac.

    • No es así. Lo estoy usando desde una máquina Linux sin AirTag, y funciona bien.
  • Sería bueno que README.md tuviera un enlace para saber de qué está hablando: https://flipperzero.one/

  • ¿Qué app de Android se necesita para usar esto? Si es posible, preferiría una que no requiera Google Services.

    • Este proyecto es para Flipper Zero, no para teléfonos.
    • Sé que se necesita un Flipper, y tengo uno.
      Pero ¿con qué app de Android puedo realmente “encontrarlo”? No tengo iPhone ni dispositivos Samsung.
    • Ninguna. Solo necesitas una computadora con Python, git y Docker.