2 puntos por GN⁺ 2025-01-12 | 1 comentarios | Compartir por WhatsApp
  • go-haystack es un conjunto de herramientas basado en Go/TinyGo que permite rastrear dispositivos Bluetooth personales a través de la red Find My de Apple
  • Junto con OpenHaystack y Macless-Haystack, permite configurar una red Find My personalizada, y puede configurarse sin hardware de Apple
  • Proporciona firmware de beacon escrito con TinyGo y el paquete Bluetooth de TinyGo, orientado a hardware como placas con nRF SoftDevice, BBC Microbit, Seeed Studio XIAO nRF52840, placas con coprocesador ESP32 y RP2040 Pico-W
  • El mismo código de beacon también puede ejecutarse en Linux con hardware Bluetooth, por lo que Raspberry Pi y sistemas embebidos también están incluidos como objetivo
  • El usuario prepara un Apple ID con 2FA por SMS, anisette-v3-server, un servidor Macless-Haystack y la CLI haystack, y luego registra el dispositivo con un flujo de generación de claves, flasheo de firmware y carga de JSON

El rol de go-haystack

  • go-haystack permite rastrear dispositivos Bluetooth personales a través de la red Find My de Apple
  • Junto con OpenHaystack y Macless-Haystack, configura una red Find My personalizada
  • La herramienta está escrita en Go/TinyGo y puede usarse sin hardware de Apple

Crear tu propio beacon

Beacon en Linux y TinyScan

  • También se puede ejecutar el código del beacon en Linux con hardware Bluetooth
    • Se mencionan como ejemplo Raspberry Pi y otros sistemas embebidos
    • El código para Linux embebido es el mismo que el código del beacon para microcontroladores, y está en el directorio firmware del repositorio
  • go-haystack también incluye TinyScan, un escáner de hardware para dispositivos locales
    • TinyScan se ejecuta en varias placas con microcontrolador que tienen Bluetooth y una pantalla pequeña
    • Se mencionan como ejemplo placas fabricadas por Adafruit y Pimoroni
    • El código está en el directorio tinyscan

Componentes necesarios para la instalación

  • Se necesita un Apple ID y debe tener activado 2FA
    • Solo se admite SMS/mensajes de texto como segundo factor de autenticación
  • Ejecuta anisette-v3-server con Docker
    • El comando de ejemplo crea la red Docker mh-network y ejecuta el contenedor dadoum/anisette-v3-server en el puerto 6969
  • Ejecuta y configura el endpoint macless-haystack en modo interactivo
    • Durante la configuración se ingresan Apple ID, contraseña y 2FA
    • Si aparece serving at port 6176 over HTTP, la configuración quedó completada
    • Después de configurar, se detiene el proceso y se reinicia el servidor con docker restart macless-haystack
  • La CLI de go-haystack se instala con el siguiente comando
go install github.com/hybridgroup/go-haystack/cmd/haystack@latest

Flujo de uso

  • Los dispositivos dentro del alcance local se escanean con haystack scan
    • La salida incluye dirección Bluetooth, intensidad de señal, datos con formato de identificador y estado de batería
  • Para agregar un dispositivo nuevo, primero se generan sus claves
haystack keys DEVICENAME
  • Como resultado de la generación de claves, se guardan un archivo DEVICENAME.keys y un archivo DEVICENAME.json para la configuración de Haystack
    • DEVICENAME debe reemplazarse por el nombre real del dispositivo
  • En el hardware se flashea indicando el target de TinyGo y el nombre del dispositivo
haystack flash DEVICENAME nano-rp2040
  • Este comando compila con TinyGo el firmware con las claves incluidas y lo flashea en el dispositivo
  • Por último, se sube por la interfaz web el archivo JSON del dispositivo a la instancia en ejecución de macless-haystack
    • En el navegador web, abre la aplicación web de Macless-Haystack, y mediante el enlace “Accessories” y el botón “+” selecciona el archivo DEVICENAME.json
    • Esta aplicación web es una single-page application que solo lee y escribe datos locales

Visualización de datos de ubicación

  • Cuando el dispositivo entra dentro del alcance de algún iPhone, con el tiempo los datos de Macless-Haystack aparecen en la interfaz web
  • Puede pasar un tiempo antes de que se muestre el primer dato

1 comentarios

 
GN⁺ 2025-01-12
Opiniones de Hacker News
  • Realmente genial. Estos intentos y la red Find My me sorprenden cada vez que los veo, pero la razón por la que no usaría este enfoque directamente es que creo que algún día Apple podría aceptar oficialmente este aprovechamiento de la red o, por el contrario, prohibir los Apple ID con historial relacionado.
    Por ahora Apple lo sabe, pero no ha tomado postura en ningún sentido. Hasta que Apple lo apoye de forma más oficial, o exista una forma que no esté directamente vinculada con mi Apple ID/cuenta, pienso solo observar.

    • El proceso para solicitar la ubicación de una etiqueta específica no está ligado a una Apple Account. Como indica el README, al iniciar sesión en macless haystack basta con usar una cuenta desechable.
    • Creo que también hay efectos positivos para que Apple haga la vista gorda con esto. Cuanto más amplia sea esta red, mayor será la adopción; y si se ve P2P como una estructura superior, es un problema más grande que un proveedor específico, así que aumentar la adopción de alguna forma podría ser una concesión aceptable.
      Sobre todo porque Apple no tiene que hacer el trabajo directamente; creo que al final intentará aprovechar más la densidad de la malla en lugar de frenar la adopción ahora.
  • El verano pasado estaba de vacaciones con mi esposa en Portugal y ella dejó su cartera en el Uber rumbo al aeropuerto. El conductor encontró la cartera, sacó 20 dólares y algunas joyas, y luego la tiró; más tarde ese día la rastreamos con un AirTag hasta un estacionamiento abandonado y la encontramos con la app Location.
    Desde entonces pongo AirTags en todas las bolsas y también cambio las baterías según un calendario.

    • Yo también tengo AirTag en todas mis bolsas. Hace unos años, en la zona de equipaje perdido del aeropuerto de Sydney, esperé una bolsa que, después de horas de consultas con la aerolínea y el aeropuerto, supe que estaba ahí.
      En ese momento otro hombre dijo que sus cosas también estaban ahí; un mes antes, en New Zealand, al evacuar un avión había dejado un iPad en el bolsillo del asiento y lo había rastreado con Find My hasta Sydney. Dijo que toma vuelos internacionales varias veces al mes y que el AirTag era lo mejor que tenía entre sus pertenencias. Desde entonces también escondí varios tags señuelo en todos mis autos y bolsas, y dentro de objetos caros que podrían robarse.
    • ¿Cómo sabes que eso lo hizo el conductor y no otro pasajero que subió después?
  • Incluso después de leer esto no me queda claro. ¿Se puede usar con un Apple AirTag, o hay que crear un dispositivo de rastreo propio?

  • https://media.ccc.de/v/38c3-find-my-101

  • Ojalá en el futuro se pueda conocer la ubicación de un beacon con una precisión de menos de 1 metro cúbico.
    Mi esposa tiene ADD y pierde cosas con frecuencia. Tile no suena fuerte y es inestable, y como no tenemos iPhone tampoco podemos usar AirTag. Estoy demasiado agotado para aprender las matemáticas necesarias para ubicar beacons Bluetooth, pero me gustaría poder hacerlo. Sería bueno que hubiera un proyecto de software tipo “solo agrega 4 placas Bluetooth pequeñas”, pero parece que para la mayoría de los desarrolladores open source no es un tema que les pique lo suficiente como para rascarlo.

    • Un AirTag y un iPhone 11 o posterior resuelven exactamente este problema. Puedes encontrar un AirTag a menos de 1 pie.
      No usa la intensidad de la conexión Bluetooth, sino banda ultraancha (UWB) para posicionamiento preciso. Funciona con un método de tiempo de vuelo que usa el retraso a la velocidad de la luz, como el GPS. Cuando abres la app Find My, conoce muy rápido la distancia exacta hasta el AirTag y, al caminar, calcula en qué dirección está el AirTag a partir de los cambios de posición observados. Es una tecnología bastante genial. En la app Find My hay que usar la función “Find”, no “Play Sound”, y se necesita un iPhone 11+ con chip de banda ultraancha H1. Puede costar algo parecido a instalar varias placas Bluetooth en casa y es mucho más preciso, aunque es menos divertido de hackear.
      https://en.wikipedia.org/wiki/Ultra-wideband#Real-time_locat...
    • Nosotros también usamos solo Android, pero estamos pensando en comprar un iPhone 11 o 12 mini roto y dejarlo dedicado a la búsqueda precisa de AirTags.
      Al menos no parece haber una alternativa equivalente que combine posicionamiento preciso con banda ultraancha, disponibilidad para comprar, precio razonable y estabilidad. Por otro lado, algunos Android parecen tener soporte UWB que quizá pueda funcionar con el UWB de Tile: https://www.zdnet.com/article/how-to-enable-uwb-on-android-a...
    • Ojalá en los próximos años Bluetooth Channel Sounding se vuelva más común. Dicen que podría dar a todos los dispositivos BLE una capacidad similar de estimación de distancia, aunque menos precisa que UWB.
      https://www.bluetooth.com/learn-about-bluetooth/feature-enha...
    • Yo también tengo ADHD y pierdo cosas todo el tiempo, pero los tags Pebblebee me funcionaron. Tengo un tag en las llaves y una tarjeta en la cartera, y el sonido es lo bastante fuerte como para escucharse desde otro piso incluso en una casa vieja con paredes gruesas de ladrillo.
    • Creo que las “matemáticas necesarias” mencionadas aquí se refieren a triangular la posición usando beacons fijos. Incluso Apple envía la ubicación del teléfono que recibe la señal, por eso surgen historias de la policía yendo a la casa equivocada por unos audífonos que el hijo del vecino encontró en un autobús.
      Hace tiempo jugué con beacons y hacerlos funcionar en sí era bastante fácil. Escribí un programita para que la laptop actuara como beacon, y con cualquier app de “Bluetooth tracker” en el teléfono veía la distancia aproximada hasta ese beacon. Después solo era cuestión de caminar mirando la distancia.
  • ¿Parece que ahora se puede usar sin una Mac? Si es así, es genial. Los rastreadores de Apple cuestan apenas unos euros, claro, hablando de productos de terceros.

  • No sé si soy el único, pero toda esta funcionalidad de la red Find My me parece una pesadilla de seguridad. Entiendo su utilidad, pero ¿no podría alguna agencia pedirle a Apple que le diga dónde está esta persona, incluso sin cobertura celular?
    En todo caso, por esto decidí salirme del ecosistema de Apple, y desde el punto de vista de la vigilancia me parece una pesadilla.

    • Este sistema está diseñado precisamente para que algo así sea imposible.
      La etiqueta no sabe su propia ubicación; solo transmite su clave pública rotativa. Como la clave cambia de forma aleatoria, tú, como dueño legítimo, puedes predecirla, pero para un tercero es difícil seguir la etiqueta fácilmente. Otros dispositivos ven esa clave y comparten su propia ubicación cifrada con la clave pública de la etiqueta. Por eso es bastante difícil obtener los datos y, salvo que se obligue a Apple a rediseñar el sistema y distribuir una actualización maliciosa, en la práctica es imposible. Normalmente, se considera que ese nivel va más allá de lo que se puede lograr con una citación común.
    • Es imposible. Apple no sabe quién tiene qué etiqueta. Fue diseñado con un enfoque centrado en la privacidad. Sé que Apple presume de proteger la privacidad aunque tenga otras intenciones, pero vi la documentación técnica del diseño y esto está bastante bien.
      Dudo que Samsung y Google hayan llegado tan lejos con sus propios rastreadores.
    • https://support.apple.com/guide/security/find-my-security-se...
    • Vale la pena señalar que en Find My hay dos “redes” distintas. Una es la red en la que otros dispositivos Apple ayudan a encontrar tus cosas, y la otra es la red en la que tus propios dispositivos suben directamente su ubicación a Apple.
      La app Find My combina ambas para mostrar la ubicación más reciente. A mi parecer, este proyecto solo usa la primera, y en esa parte haría falta una puerta trasera explícita por diseño. Pero si lo que quieres es defenderte de agencias gubernamentales, probablemente la segunda red sea la parte que debería preocuparte más.
    • Si te preocupa que sea una pesadilla de seguridad, puedes desactivarlo en la configuración: Settings → your_name → Find My → device → toggle off
      Si no confías en que al apagarlo realmente se desactive, entonces deberías cuestionarte seriamente todos los dispositivos electrónicos que tienes. ¿Confías en el firmware de tu teléfono Android? ¿En el chip de módem que no es de código abierto? ¿En la SIM que ejecuta Java? ¿Tu control remoto de TV no tendrá un micrófono que no notaste? De hecho, muchos controles lo tienen. Incluso tu tostadora probablemente tenga un chip más potente que una computadora de la era DOS conectada a una red. La mía lo tiene. ¿Cómo sabes que no se conecta al Wi-Fi cercano para enviar información? Después del caso China/iCloud no confío totalmente en Apple, pero entre las grandes empresas tecnológicas sigue siendo la que más confianza me inspira.