- 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
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.
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.
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.
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://github.com/hybridgroup/go-haystack?tab=readme-ov-fil...
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.
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...
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...
https://www.bluetooth.com/learn-about-bluetooth/feature-enha...
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.
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.
Dudo que Samsung y Google hayan llegado tan lejos con sus propios rastreadores.
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 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.