2 pontos por GN⁺ 2024-08-20 | 1 comentários | Compartilhar no WhatsApp
  • FindMy Flipper é um app que expande os recursos de Bluetooth do FlipperZero para fazê-lo funcionar como um Apple AirTag, Samsung SmartTag ou Tile Tracker
  • Ele transmite sinais de SmartTag usando o beacon BLE do FlipperZero, podendo clonar tags existentes ou gerar pares de chaves do OpenHaystack para integração com a rede Apple FindMy
  • O método de clonagem de tags existentes usa o endereço MAC e o payload de AirTag, Samsung SmartTag e Tile Tracker para permitir rastreamento por apps nativos, mas no caso do AirTag, ao recolocar a bateria a chave pode girar e invalidar a chave atual no Flipper
  • O método de geração de chaves do AirTag funciona mesmo sem um AirTag real ou dispositivo Apple, mas exige Docker Desktop, Python e Git, e usa um computador com autenticação por Apple ID para receber os dados de localização
  • O app oferece execução em segundo plano e ajuste de intervalo de beacon e potência de transmissão, e o usuário deve respeitar as leis de privacidade sobre dispositivos de rastreamento e a propriedade do dispositivo original

App para usar o FlipperZero como uma tag de rastreamento

  • FindMy Flipper é um app que faz o FlipperZero emular Apple AirTag, Samsung SmartTag e Tile Tracker
  • Ele transmite sinais de SmartTag usando o beacon BLE do FlipperZero para que possam ser detectados pela rede FindMy
  • Os recursos pretendidos são os seguintes
    • Clonar Apple AirTag, Samsung SmartTag e Tile Tracker existentes para o FlipperZero
    • Gerar um par de chaves OpenHaystack para a rede FindMy sem um AirTag real
    • Continuar rastreando a localização do FlipperZero

Principais recursos

  • Emulação de tags

    • É possível clonar o endereço MAC e o payload de tags existentes
    • Também é possível gerar um par de chaves para a rede FindMy sem possuir um AirTag real
  • Ajustes do usuário

    • É possível ajustar o intervalo de transmissão do beacon
    • A potência de transmissão pode ser alterada para equilibrar visibilidade e duração da bateria
  • Funcionamento em segundo plano

    • O app foi otimizado para execução em segundo plano
    • Foi projetado para manter o rastreamento com baixo consumo de bateria sem interromper o uso normal do FlipperZero

Formas de instalação

  • A instalação pode ser feita de duas formas
    • Usando o firmware FAP de release/pré-compilado adequado ao dispositivo
    • Compilando o firmware manualmente com fbt/ufbt
  • No momento, todos os firmwares devem funcionar na branch main, incluindo os ícones

Como obter os dados do SmartTag

  • Há duas formas de obter os dados para emulação da tag
    • Opção A: clonar uma tag existente

      • Opção B: gerar chaves de AirTag
  • Opção A: clonar uma tag existente

    • Clonar uma tag existente é o método preferido e permite rastreamento sem configuração adicional
    • É possível usar tags da Apple, Samsung e Tile copiando o endereço MAC e o payload da tag real
    • Esse método permite rastreamento via apps nativos como Apple FindMy, Samsung SmartThing e Tile App
    • O procedimento básico é o seguinte
    • Primeiro, emparelhe o AirTag, Samsung SmartTag ou Tile Tracker com o dispositivo
    • Deixe a tag longe do dispositivo registrado por cerca de 15 minutos para entrar no modo Perdido
    • Use o nrfConnect no Android ou um ESP32
    • No nrfConnect, é indicado usar a versão Android porque a versão Apple não mostra os dados Raw necessários
    • Com um ESP32-WROOM ou ESP32-S3, é possível obter os dados necessários sem Android
    • A ferramenta relacionada ESP32-AirTag-Scanner pode ser usada
    • O processo de varredura inclui excluir no filtro itens que não sejam da marca da tag e ajustar o RSSI para -40 dBm, depois esperar até que o SmartTag apareça como dispositivo “FindMy”
    • A bateria da tag deve ser removida imediatamente após capturar o payload e o endereço MAC
    • Se a bateria for recolocada no AirTag, a chave poderá girar nos servidores da Apple
    • Se a chave girar, a chave atual do Flipper será invalidada
    • Para continuar usando no Flipper, o AirTag deve permanecer desligado ou sem bateria
    • Não é possível usar o AirTag e o Flipper ao mesmo tempo; se necessário, o processo pode ser repetido para restaurar a função no Flipper
    • O payload e o endereço MAC capturados devem ser inseridos no app do FlipperZero
  • Opção B: gerar chaves de AirTag

    • A geração de chaves de AirTag é um método para emular um AirTag sem dispositivo Apple nem AirTag real
    • Esse método funciona por geração de chaves, e é necessário um computador para baixar os dados de localização
    • Os componentes necessários são os seguintes
    • Docker Desktop
    • Python
    • Git
    • Após clonar o repositório, trabalhe na pasta AirTagGeneration
    git clone https://github.com/MatthewKuKanich/FindMyFlipper.git
    cd AirTagGeneration
    
    • Depois de iniciar o Docker Desktop, configure o servidor com o seguinte comando
    docker run -d --restart always --name anisette-v3 -p 6969:6969 dadoum/anisette-v3-server:latest
    
    • Esse servidor emula um ambiente que engana o servidor de autenticação da Apple
    • Crie e ative um ambiente virtual Python e depois instale as dependências
    python3 -m venv venv
    pip3 install -r requirements.txt
    
    • generate_keys.py gera as chaves necessárias para o AirTag e as salva em uma nova pasta keys
    • O arquivo .keys gerado pode ser transferido para o FlipperZero e importado pelo app
    • No menu de configuração do app, selecione “register tag”
    • Selecione o tipo de tag
    • Importe um arquivo .keys ou .txt, ou insira manualmente
    • Ao inserir manualmente, digite primeiro o MAC e depois o payload
    • Pressione salvar para registrar
    • request_reports.py solicita dados de localização em tempo real com autenticação por Apple ID e senha
    • As credenciais de login da Apple ficam salvas em um arquivo auth, então não é necessário digitá-las novamente depois
    • RequestReport&Map.py mostra os dados de localização das últimas 24 horas em um mapa interativo
    • Ele solicita relatórios de localização usando a chave de publicidade com hash da pasta keys
    • Usa a chave privada do mesmo arquivo .keys para descriptografar os dados
    • Mostra os dados descriptografados no terminal
    • Exibe as coordenadas no mapa e conecta o trajeto
    • Mostra os metadados de localização e salva um arquivo HTML com o nome da data do relatório

Configuração e ajustes do app no FlipperZero

  • Depois de iniciar o app, no menu de configuração é possível usar Import Tag From File ou Register Tag Manually
  • O fluxo inclui colocar o arquivo .keys na pasta apps_data->findmy ou AppsData/FindMyFlipper do cartão SD do FlipperZero e então importá-lo
  • Arquivos .txt salvos no nrfConnect também podem ser colocados na mesma pasta para importação
  • Os itens ajustáveis são os seguintes
    • Beacon Interval: ajusta a frequência com que o FlipperZero transmite sua presença
    • Transmit Power: ajusta a intensidade do sinal para equilibrar alcance de rastreamento e duração da bateria

Compatibilidade, alternativas e responsabilidade

  • A compatibilidade inclui o seguinte
    • Dispositivos Apple para rastreamento de AirTag via rede FindMy
    • Dispositivos e navegadores com suporte ao rastreamento de Samsung SmartTag
    • Tile Tracker via Tile App
  • Para rastrear com OpenHaystack, é necessário macOS anterior ao 14
    • No macOS 14 ou superior, há problemas de compatibilidade com o plugin do Mail
  • Como alternativa, é indicado o macless-haystack
    • Mesmo nesse método, deve-se usar apenas generate_keys.py da pasta AirTagGeneration
    • O script de geração de chaves desse repositório usa um formato de arquivo de chaves diferente, enquanto os arquivos do FindMy Flipper incluem os dados necessários para importação correta no FlipperZero
  • Este app é destinado a uso pessoal e educacional
  • O usuário deve cumprir as leis de privacidade e regulamentações locais relacionadas a dispositivos de rastreamento
  • A clonagem e emulação de tags de rastreamento devem ser usadas de forma responsável, respeitando a propriedade do dispositivo original
  • Este projeto não é afiliado à Apple Inc. nem à Samsung

1 comentários

 
GN⁺ 2024-08-20
Opiniões no Hacker News
  • Projeto interessante, mas uma das dependências subjacentes usadas aqui não parece segura por padrão:
    https://github.com/biemster/FindMy/blob/113ebf4017729b92a381...
    Parece ser uma biblioteca de autenticação para iCloud, e aparentemente fizeram hardcode do MacBook device agent para vincular a chave gerada a um dispositivo
    Como acontece com serviços centralizados, eu não usaria isso em uma conta que tenha muitos serviços ou ativos digitais associados. Não me surpreenderia se a Apple bloqueasse contas que usam isso
    Como há um código adsid único necessário para o login, também não deve ser difícil identificar

    • Se “aparentemente fizeram hardcode do MacBook device agent para vincular a chave gerada a um dispositivo”, então tecnicamente não é necessário um dispositivo iOS para registrar um AirTag, e qualquer dispositivo Apple bastaria?
      Mas não entendo por que a Apple não oferece suporte oficial a isso. Fico pensando se é para empurrar a venda de dispositivos iOS
      Tenho cerca de 5 mil dólares em equipamentos desktop/mobile da Apple e, mesmo assim, tive de comprar mais um iPhone usado para registrar alguns AirTags, então isso me irrita
    • Não é nada demais, é localhost:
      https://github.com/biemster/FindMy/blob/113ebf4017729b92a381...
    • Uma biblioteca de autenticação para iCloud é inerentemente insegura para o usuário, e naturalmente não para a Apple, Inc. Acho que este projeto, por pior que seja, deveria ser bifurcado em dois produtos separados
      Conscientemente, eu jamais integraria uma biblioteca de terceiros. Ainda hoje passo todas as releases do VenToy por scanners de vírus e fico esperando o momento em que uma vulnerabilidade do tipo NZ apareça de fato
      É menos por causa do fluxo de pagamentos da Apple e mais por causa do modelo de assinatura. Se você oferecer de graça um recurso que a Apple possa achar interessante, é preciso tomar cuidado. A Apple pode bloquear o acesso e começar a cobrar dos usuários
      Também é preciso ter o dobro de cuidado ao irritar geeks. Eles dão muito medo: vão dormir irritados numa sexta à noite e passam o fim de semana inteiro analisando o produto como caixa-preta e tornando a implementação trivial
  • Esse conceito também parece poder ser usado para contornar os recursos anti-stalking que a Apple e outras colocaram
    Por exemplo, se você tiver N tags doadoras e alternar entre elas a cada 24/N horas, do ponto de vista da Apple ou do rastreamento do dispositivo, a pessoa rastreada não parecerá estar sendo acompanhada por uma única tag por muito tempo

    • Se ainda não tiver sido corrigido, ouvi dizer que dá para evitar a detecção apenas desligando e ligando periodicamente a tag com um timer
      Coloque uma bateria grande, um circuito simples de timer e remova o beeper, e você tem um excelente dispositivo de rastreamento
      Lembro que isso surgiu no contexto de rastrear cargas com equipamentos caros. O transporte podia levar meses; o AirTag é eficiente em energia e dura bastante com uma bateria grande, enquanto as soluções GPS existentes não eram suficientes
    • Por que precisa de tags doadoras? O README deste projeto mostra como gerar uma tag
    • Se for preciso ficar alternando entre tags, a essa altura não seria menos esforço ou dinheiro simplesmente seguir a pessoa diretamente?
      Ou então usar uma tag GPS que nem use a “rede” AirTag, e não seria necessário fazer rotação
  • Ainda uso o Flipper algumas vezes por semana. Estou ansioso pela próxima versão com suporte a Wi-Fi e outras frequências

    • Você usa para quê?
    • A WiFi dev board não é suficiente?
  • Alguém já testou como o app “Find My” reage se vir a mesma tag em mais de um local?

    • Os servidores da Apple não sabem nada sobre localização, então se as posições serão calculadas por média depende da implementação, neste caso do app FindMy
    • A menos que eu esteja deixando passar algo, ele não usaria simplesmente a localização mais recente?
  • Estou usando isso e é excelente. Praticamente não consome energia
    Seria bom se também pudesse se comunicar com a rede Find My Device do Google, mas já funciona muito bem na rede da Apple

  • Seria ótimo poder portar isso para um dispositivo BLE barato, como um ESP32-C3. Usar um Flipper como AirTag é meio caro

  • Infelizmente é necessária uma tag doadora para impersonar, e essa tag não pode ser usada enquanto você usa isto. Ou então é preciso usar o OpenHaystack, mas para obter os dados você precisa de um Mac

    • Não é verdade. Estou usando em uma máquina Linux, sem AirTag, e funciona bem
  • Seria bom se o README.md tivesse um link para dar contexto sobre do que isto está falando: https://flipperzero.one/

  • Que app Android é necessário para usar isso? De preferência um app que não precise do Google Services

    • Este projeto é para o Flipper Zero, não para um celular
    • Eu sei que precisa de um Flipper, e tenho um
      Mas com qual app Android eu posso de fato “encontrá-lo”? Não tenho iPhone nem dispositivo Samsung
    • Nenhum. Basta um computador com Python, git e Docker