- go-haystack é um conjunto de ferramentas baseado em Go/TinyGo que permite rastrear dispositivos Bluetooth pessoais pela rede Find My da Apple
- Em conjunto com OpenHaystack e Macless-Haystack, ele configura uma rede Find My personalizada e pode ser usado sem hardware da Apple
- Fornece firmware de beacon escrito com TinyGo e o pacote TinyGo Bluetooth, voltado para hardwares como placas com nRF SoftDevice, BBC Microbit, Seeed Studio XIAO nRF52840, placas com coprocessador ESP32 e placas RP2040 Pico-W
- O mesmo código de beacon também pode ser executado em Linux com hardware Bluetooth, incluindo Raspberry Pi e sistemas embarcados
- O usuário prepara Apple ID com 2FA via SMS, anisette-v3-server, servidor Macless-Haystack e a CLI
haystack, depois registra o dispositivo no fluxo de geração de chaves, gravação do firmware e upload do JSON
O papel do go-haystack
- go-haystack permite rastrear dispositivos Bluetooth pessoais pela rede Find My da Apple
- Em conjunto com OpenHaystack e Macless-Haystack, ele configura uma rede Find My personalizada
- A ferramenta é escrita em Go/TinyGo e pode ser usada sem hardware da Apple
Criando seu próprio beacon
- Este pacote fornece firmware usando TinyGo e o pacote TinyGo Bluetooth
- O código do beacon está no diretório firmware do repositório
- Os hardwares indicados como compatíveis são os seguintes
Beacons em Linux e TinyScan
- Também é possível executar o código de beacon em Linux com hardware Bluetooth
- Raspberry Pi e outros sistemas embarcados são citados como exemplos
- O código para Linux embarcado é o mesmo dos beacons para microcontroladores e está no diretório
firmware do repositório
- O go-haystack também inclui o TinyScan, um scanner de hardware para dispositivos locais
- O TinyScan roda em várias placas de microcontrolador com Bluetooth e pequenos displays
- Placas da Adafruit e da Pimoroni são citadas como exemplos
- O código está no diretório tinyscan
Componentes necessários para a instalação
- É necessário um Apple ID com 2FA ativado
- O segundo fator de autenticação tem suporte apenas via SMS/mensagem de texto
- Execute o
anisette-v3-server com Docker
- O comando de exemplo cria a rede Docker
mh-network e executa o contêiner dadoum/anisette-v3-server na porta 6969
- Execute e configure o endpoint
macless-haystack em modo interativo
- Durante a configuração, são informados Apple ID, senha e 2FA
- Quando aparecer
serving at port 6176 over HTTP, a configuração foi concluída
- Depois da configuração, encerre o processo e reinicie o servidor com
docker restart macless-haystack
- A CLI go-haystack é instalada com o seguinte comando
go install github.com/hybridgroup/go-haystack/cmd/haystack@latest
Fluxo de uso
- Dispositivos dentro do alcance local são escaneados com
haystack scan
- A saída inclui endereço Bluetooth, intensidade do sinal, dados em formato de identificador e status da bateria
- Para adicionar um novo dispositivo, primeiro gere as chaves dele
haystack keys DEVICENAME
- Como resultado da geração de chaves, são salvos um arquivo
DEVICENAME.keys e um arquivo DEVICENAME.json para configuração do Haystack
- Substitua
DEVICENAME pelo nome real do dispositivo
- No hardware, grave o firmware especificando o alvo TinyGo e o nome do dispositivo
haystack flash DEVICENAME nano-rp2040
- Esse comando usa TinyGo para compilar o firmware com as chaves incluídas e gravá-lo no dispositivo
- Por fim, faça upload do arquivo JSON do dispositivo para a instância em execução do
macless-haystack pela interface web
- No navegador, abra o app web do Macless-Haystack e selecione o arquivo
DEVICENAME.json pelo link “Accessories” e pelo botão “+”
- Esse app web é uma aplicação de página única que apenas lê e grava dados locais
Exibição de dados de localização
- Quando o dispositivo entrar no alcance de algum iPhone, com o tempo os dados do Macless-Haystack aparecerão na interface web
- Pode levar algum tempo até que os primeiros dados sejam exibidos
1 comentários
Opiniões do Hacker News
Muito legal. Tentativas como essa e a rede Find My me surpreendem sempre que vejo, mas o motivo de eu não usar esse tipo de abordagem diretamente é que acho que um dia a Apple pode aceitar oficialmente esse aproveitamento da rede, ou, pelo contrário, pode banir Apple IDs com histórico relacionado
No momento, a Apple sabe disso, mas não se posiciona para nenhum dos lados. Até que a Apple ofereça um suporte mais oficial, ou surja uma forma que não esteja ligada diretamente ao meu Apple ID/conta, pretendo só observar
Especialmente porque a Apple não precisa fazer o trabalho diretamente, acho que, em vez de sufocar a adoção agora, ela acabará tentando aproveitar melhor a densidade da malha
No verão passado, eu estava de férias com minha esposa em Portugal, e ela deixou a carteira no Uber a caminho do aeroporto. O motorista encontrou a carteira, pegou 20 dólares e algumas joias e a descartou; mais tarde naquele dia, rastreamos com um AirTag até um estacionamento abandonado e a encontramos pelo app Location
Desde então, coloco AirTag em todas as malas e também troco as baterias dentro de um cronograma
Na ocasião havia outro homem dizendo que suas coisas também estavam lá; ele contou que, um mês antes, na New Zealand, ao evacuar de um avião, deixou o iPad no bolso do assento e o rastreou pelo Find My até Sydney. Ele pega voos internacionais várias vezes por mês e disse que o AirTag era a melhor coisa que possuía. Desde então, escondi também algumas tags de isca em todos os carros e malas, e dentro de itens caros que poderiam ser roubados
Mesmo lendo isso, não entendi bem. Dá para usar com o Apple AirTag, ou é preciso criar seu próprio dispositivo de rastreamento?
https://github.com/hybridgroup/go-haystack?tab=readme-ov-fil...
https://media.ccc.de/v/38c3-find-my-101
No futuro, eu gostaria de conseguir saber a posição de um beacon com precisão de menos de 1 metro cúbico
Minha esposa tem ADD e perde coisas com frequência. O Tile não é alto e é instável, e não temos iPhone, então também não podemos usar AirTag. Estou cansado demais para aprender a matemática necessária para localizar beacons Bluetooth, mas gostaria de conseguir. Seria bom existir um projeto de software do tipo “basta adicionar 4 plaquinhas Bluetooth pequenas”, mas parece que, para a maioria dos desenvolvedores open source, esse não é um tema que coça onde incomoda
Ele faz localização precisa por ultra-wideband (UWB), não pela intensidade da conexão Bluetooth. Funciona por tempo de voo, usando atrasos na velocidade da luz, como o GPS. Ao abrir o app Find My, ele sabe muito rapidamente a distância exata até o AirTag e, conforme você anda, calcula também em que direção o AirTag está a partir das mudanças de posição observadas. É uma tecnologia bem interessante. No app Find My, é preciso usar o recurso “Find”, não “Play Sound”, e é necessário um iPhone 11+ com o chip de ultra-wideband H1. O custo pode ser parecido com instalar várias placas Bluetooth pela casa e é muito mais preciso, mas é menos divertido de hackear
https://en.wikipedia.org/wiki/Ultra-wideband#Real-time_locat...
Pelo menos não parece haver uma alternativa equivalente que reúna localização precisa por ultra-wideband, disponibilidade para compra, preço razoável e confiabilidade. Por outro lado, alguns Android parecem ter suporte a UWB, que talvez funcione com o UWB do Tile: https://www.zdnet.com/article/how-to-enable-uwb-on-android-a...
https://www.bluetooth.com/learn-about-bluetooth/feature-enha...
Já brinquei com beacons no passado, e fazê-los funcionar em si era bem fácil. Escrevi um programinha para fazer o notebook agir como beacon e usei algum app de “Bluetooth tracker” no celular para ver a distância aproximada até esse beacon. Depois disso, basta andar observando a distância
Agora parece que dá para usar mesmo sem um Mac? Se for o caso, é incrível. Rastreadores da Apple custam só alguns euros — claro, falando de produtos de terceiros.
Não sei se sou só eu, mas todo esse recurso da rede Buscar parece um pesadelo de segurança. Entendo a utilidade, mas será que uma determinada agência não poderia pedir à Apple para informar onde essa pessoa está, mesmo sem cobertura celular?
De qualquer forma, foi por isso que decidi sair do ecossistema da Apple; do ponto de vista de vigilância, parece um pesadelo.
A tag não sabe sua própria localização; ela apenas transmite sua chave pública rotativa. Como a chave muda aleatoriamente, você, como proprietário legítimo, consegue prevê-la, mas é difícil para terceiros seguir a tag com facilidade. Outros dispositivos veem essa chave e compartilham sua própria localização criptografada com a chave pública da tag. Por isso, obter os dados é bastante difícil e, na prática, impossível a menos que a Apple seja forçada a redesenhar o sistema e distribuir uma atualização maliciosa. Em geral, esse tipo de coisa é considerado além do que uma intimação comum permitiria.
Duvido que Samsung e Google tenham ido tão longe assim em seus próprios rastreadores.
O app Buscar combina as duas para mostrar a localização mais recente. Pelo que vejo, este projeto parece usar apenas a primeira, e essa, por design, exigiria um backdoor explícito. Mas, se o objetivo é se defender contra órgãos governamentais, é provável que a segunda rede seja a parte que mereça mais atenção.
Se você não confia que isso realmente será desativado ao desligar a opção, precisa refletir profundamente sobre todos os eletrônicos que possui. Você confia no firmware de um celular Android? E no chip de modem que não é open source? E no SIM card que roda Java? Será que o controle remoto da sua TV não tem um microfone que você nem percebeu? Na prática, muitos controles têm. É possível que até sua torradeira tenha um chip mais poderoso do que um computador da era DOS conectado à rede. A minha tem. Como saber que ela não está se conectando ao Wi‑Fi próximo e enviando informações? Depois do caso China/iCloud, não confio totalmente na Apple, mas, entre as grandes empresas de tecnologia, ela ainda é a que eu mais confio.