Como detectar jamming de GPS: um método gratuito e reprodutível
Resposta curta: você não precisa de hardware proprietário ou de um feed confidencial. A maioria dos receptores GNSS já calcula a relação portadora-ruído (CNR, também grafada como C/N0), um número que descreve com que clareza eles estão captando cada satélite, e o arquivo CDDIS da NASA publica esse valor gratuitamente para mais de 500 estações terrestres públicas da IGS em todo o mundo, atualizado em poucos minutos. Um método de 2025 da University of Texas at Austin (Clements & Humphreys) explora esse mesmo arquivo gratuito para identificar interferências reais de GPS: calcula-se a diferença do CNR de cada satélite em relação a si mesmo alguns segundos antes, faz-se a média entre todos os satélites rastreados por uma estação e observa-se um pico sincronizado em várias estações a centenas de quilômetros de distância no mesmo instante. Um pico em apenas uma estação, sem eco em nenhum outro lugar, é ruído, não jamming. Construímos esse detector e o executamos ao vivo contra 27.99 horas-estação de dados reais do CDDIS em 7 estações no Báltico e na Europa Central, incluindo LAMA na Polônia. Nossa janela foi tranquila: 16 anomalias isoladas em estações individuais, zero eventos multiestação sincronizados. Abaixo está o método completo, os dados reais e o que separa uma detecção genuína de uma coincidência.
Por que isso importa agora
A interferência de GPS e GNSS na região do Mar Báltico passou de um tópico de nicho de guerra eletrônica para o noticiário convencional. Autoridades de aviação e marítimas na Polônia, Lituânia e Finlândia relataram um aumento acentuado de jamming e spoofing desde 2022, e veículos de comunicação, do Defense News ao Euronews, cobriram celulares, drones e navios perdendo a fixação de GPS em toda a região até 2026. Pilotos acompanham isso diariamente em fóruns comunitários como o OPSGROUP; um mapa de calor público, o gpsjam.org, agrega relatórios de precisão de navegação ADS-B de aeronaves em um mapa em tempo real. Essa é uma ferramenta operacional genuinamente útil, mas que infere a interferência indiretamente, a partir do comportamento das aeronaves. Ela não afere a qualidade real do sinal do receptor.
Pesquise por "como detectar jamming de GPS" hoje e os resultados são quase inteiramente fornecedores de rastreamento de frotas vendendo hardware, acompanhados de listas genéricas de "sinais a serem observados". Nenhum deles mostra um pipeline de detecção real em execução contra dados reais. Essa é a lacuna que este artigo preenche: um método na camada de sinal, construído com base em dados que qualquer pessoa pode baixar gratuitamente, com o código e os números reais apresentados em vez de apenas afirmados.
O método: relação portadora-ruído diferenciada no tempo
A relação portadora-ruído descreve com que intensidade um receptor capta o sinal de um determinado satélite em relação ao piso de ruído de fundo, em dB-Hz. Ela varia naturalmente com a elevação do satélite, a qualidade da antena e as condições atmosféricas, o que torna um limiar bruto de CNR um detector de jamming ruim: um satélite baixo perto do horizonte se parece com um sob jamming. A correção usada por Clements e Humphreys é aplicar um limiar à diferença temporal de curto intervalo em vez disso, o que cancela o desvio lento e natural e isola transientes rápidos:
- Diferença por satélite. Para cada satélite rastreado, calcule ε[k] = CNR[k] − CNR[k−L], com L em torno de 3 segundos em uma taxa de amostragem de 1 Hz.
- Estatística da estação. Calcule a média de ε[k] entre todos os satélites que a estação rastreia no momento, para obter um único valor por estação Λ[k] a cada época.
- A hipótese nula. Em um dia tranquilo, Λ[k] se comporta como ruído de média zero com uma largura específica da estação, definida pelo receptor e pela antena da própria estação. Ajuste essa largura empiricamente e defina um limiar alguns desvios-padrão acima dela.
- O verdadeiro discriminador: espaço, não apenas amplitude. Uma fonte genuína de interferência em área ampla, seja um satélite vazando RF ou um emissor terrestre potente, atinge várias estações geograficamente dispersas dentro da mesma janela de poucos segundos. Um cruzamento de limiar restrito a uma única estação, sem eco em nenhuma outra estação a centenas de quilômetros de distância, é muito mais provável que seja local: multipercurso, uma obstrução física, uma oscilação no receptor ou cintilação ionosférica, que todos os artigos que lemos apontam como o principal risco de falso positivo.
O que realmente executamos
Um cético deve ser capaz de reconstruir isso, portanto aqui está todo o pipeline.
- Estações. Sete estações IGS de alta taxa distribuídas por cerca de 2,000 km na Europa Central e do Norte: LAMA (Lamkówko, Polônia), GANP (Ganovce, Eslováquia), GOPE (Pecny, Tchéquia), MAR6 (Mårtsbo, Suécia), METG (Metsähovi, Finlândia), ONSA (Onsala, Suécia) e WTZR (Wettzell, Alemanha). LAMA foi escolhida porque o trabalho de continuidade do artigo citado relata suas maiores quedas de CNR registradas lá.
- Janela. 2026-09-29, uma terça-feira, das 07:00 às 11:00 UTC, o dia útil completo mais recente com dados de alta taxa disponíveis no momento da execução. O horário comercial foi escolhido porque o artigo citado observou uma concentração de interferências nesse período.
- A coleta. O arquivo RINEX v3 de alta taxa do CDDIS da NASA é organizado em blocos de 15 minutos. O acesso HTTPS retornou um erro 401 direto: o login no Earthdata agora é obrigatório lá, confirmando uma alteração de acesso de junho de 2025. FTP-SSL anônimo funcionou com zero autenticação, o mesmo acesso que o CDDIS oferece há anos:
ftp://gdc.cddis.eosdis.nasa.gov/gnss/data/highrate/<yyyy>/<ddd>/<yy>d/<HH>/. 112 arquivos de quinze minutos, 104 MB no total, ao longo das 7 estações e 4 horas. - O parsing. Os arquivos são RINEX v3 compactados com Hatanaka. Descompactamos e fizemos o parsing com as bibliotecas open source
georinexehatanakaem Python, extraindo o campo portadora-ruído do GPS L1 C/A (S1C) por satélite por época. - O cálculo. Exatamente a estatística Λ[k] acima, L = 3 segundos, avaliada em dois limiares, 5σ e 6σ, em relação ao piso de ruído empírico da própria estação. Um cruzamento só conta como um evento multiestação candidato se ocorrer em mais de uma estação dentro de uma janela de 5 segundos.
- O que não fizemos. Não requisitamos nada de nenhum host além do arquivo público da própria NASA, não transmitimos RF e não coletamos dados pessoais. As coordenadas das estações e os metadados dos equipamentos são registros públicos de infraestrutura da IGS, não informações privadas.
Como 27.99 horas-estação tranquilas realmente se parecem
A LAMA, nossa estação principal, foi a mais calma das sete. Seu piso de ruído Λ[k] mediu apenas 0.124 dB-Hz de desvio-padrão e produziu zero cruzamentos de limiar tanto a 5σ quanto a 6σ durante toda a janela de quatro horas. É assim que um sinal genuinamente limpo se parece, não uma linha plana, ruído real oscilando dentro de uma faixa bem comportada, sem nunca sair dela.
Em todas as sete estações, o mesmo cenário se mantém em diferentes níveis de ruído. A GANP na Eslováquia foi a mais ruidosa, com 0.219 dB-Hz de desvio-padrão, e produziu o maior pico individual que registramos em todo o conjunto de dados.
| Estação | País | Piso de ruído (σ, dB-Hz) | Cruzamentos 5σ | Cruzamentos 6σ |
|---|---|---|---|---|
| ONSA (Onsala) | Suécia | 0.125 | 11 | 2 |
| GANP (Ganovce) | Eslováquia | 0.219 | 4 | 2 |
| GOPE (Pecny) | Tchéquia | 0.187 | 1 | 0 |
| WTZR (Wettzell) | Alemanha | 0.152 | 0 | 0 |
| METG (Metsähovi) | Finlândia | 0.128 | 0 | 0 |
| MAR6 (Mårtsbo) | Suécia | 0.124 | 0 | 0 |
| LAMA (Lamkówko) | Polônia | 0.124 | 0 | 0 |
Totais: 16 cruzamentos isolados em estação única a 5σ, caindo para 4 a 6σ. Essa redução é, por si só, um dado útil e honesto para qualquer pessoa ajustando um detector como este: afrouxar o limiar em um sigma aproximadamente quadruplicou nossa contagem de alarmes falsos, com zero de ambos os conjuntos correspondendo a um evento multiestação real.
O único quase-acerto e por que ele não conta
Vinte e oito horas-estação de ruído de RF do mundo real produziram exatamente uma coincidência que vale a pena analisar, porque um artigo confiável mostra o caso no limiar, não apenas os casos perfeitos. Às 07:27:38 UTC, a ONSA cruzou seu limiar de 5σ a +0.656 dB-Hz. Dois segundos depois, às 07:27:40 UTC, a GANP cruzou seu próprio limiar de 5σ a −1.2 dB-Hz. Duas estações, cinco segundos de intervalo, ambas disparadas: no papel, exatamente o perfil de um candidato a evento multiestação.
Não se trata de um evento, por duas razões que a própria verificação de simultaneidade espacial do artigo foi criada para detectar. Primeiro, o sinal está errado: uma fonte real de interferência em área ampla reduz o CNR em todas as estações que atinge, não o aumenta em uma e diminui em outra. Segundo, a magnitude não confere: o cruzamento da ONSA mal ultrapassou seu limiar, enquanto o da GANP foi cerca do dobro do seu próprio limiar. No limiar mais rigoroso de 6σ, a leitura da ONSA às 07:27:38 deixa de qualificar por completo, e a coincidência desaparece por inteiro. Esse pico da GANP, aliás, também é uma ilustração clara de um artefato conhecido deste método: um degrau instantâneo real no CNR de uma estação aparece em Λ[k] como um par emparelhado positivo-negativo exatamente a L segundos de intervalo, aqui +1.9 dB-Hz às 07:27:26 seguido por −1.8 dB-Hz às 07:27:29. Esse padrão é característico de um evento real e local no receptor ou na antena da GANP. O fato de ter ficado restrito apenas à GANP, sem nenhum eco na GOPE ou na LAMA a 300 ou 600 km de distância, é exatamente o que descarta uma causa física compartilhada.
O que isso não prova
Limites honestos, porque um número sem suas ressalvas é marketing.
- Uma janela, um dia útil. Um resultado nulo ao longo de quatro horas não diz nada sobre outros dias ou horários. O próprio conjunto de dados de 7 anos e 165 estações do artigo citado sinalizou interferência em uma minoria de dias-estação, portanto uma terça-feira tranquila é um resultado esperado, não uma evidência de que o teatro de operações do Báltico esteja calmo em geral.
- Este método é adequado para eventos de área ampla, não para um único jammer local. O arquivo padrão da IGS foi desenvolvido para fenômenos sincronizados de múltiplos segundos, do tipo produzido por uma fonte baseada no espaço ou muito potente. As localizações de jammers terrestres no Báltico relatadas por pesquisadores da região usaram matrizes de sensores TDOA densas e dedicadas, um instrumento totalmente diferente. Este pipeline não fornecerá as coordenadas de um jammer em um navio.
- Sete estações são uma demonstração, não um censo. Não fazemos nenhuma afirmação sobre a prevalência regional de jamming a partir desta amostra. Ela demonstra que o método funciona de ponta a ponta com dados reais e mostra como é uma linha de base honesta.
- A escolha do limiar é um verdadeiro tradeoff. Nossos próprios dados mostram isso diretamente: 16 épocas sinalizadas a 5σ caem para 4 a 6σ, todas elas falsos alarmes de qualquer forma em nossa janela. Qualquer pessoa que implementar isso precisa calibrar esse limiar contra o piso de ruído de sua própria estação.
Como executar isso você mesmo
Tudo aqui está disponível gratuitamente para qualquer pessoa. Escolha um conjunto de estações IGS de alta taxa geograficamente dispersas na lista de redes atual em network.igs.org. Baixe blocos RINEX v3 de 15 minutos via FTP-SSL anônimo do arquivo público do CDDIS, sem necessidade de conta. Descompacte e faça o parsing com ferramentas open source como georinex, extraindo o observável de CNR para a sua constelação e frequência de interesse. Calcule Λ[k] exatamente como descrito acima, ajuste os pisos de ruído de suas próprias estações e, fundamentalmente, nunca considere um cruzamento em uma única estação como uma detecção por si só. A verificação de simultaneidade espacial entre estações dispersas é o que transforma uma oscilação no receptor em uma afirmação defensável, e é também a etapa que descartou corretamente o nosso quase-evento.
Por que isso importa
O valor de um método como este é que ele lê a verdade fundamental na camada de sinal, a partir de uma infraestrutura em que ninguém precisa confiar no painel de um fornecedor. O gpsjam.org e ferramentas semelhantes realizam um trabalho valioso ao inferir interferências a partir do comportamento posterior de aeronaves e navios. Esta abordagem analisa a causa de forma mais direta, em dados que uma rede global de receptores de padrão geodésico já publica gratuitamente, hora a hora, há décadas. Essa combinação, um método de detecção acadêmico real, dados públicos sem barreiras de acesso além de um login FTP gratuito e um pipeline totalmente reprodutível, é rara em um espaço que de outra forma seria dominado por páginas de vendas de fornecedores e feeds confidenciais. Nós o executamos com honestidade, incluindo o resultado que não esperávamos ser a parte mais útil: uma linha de base limpa, acompanhada de números reais de alarmes falsos, é exatamente o que qualquer pessoa implementando este método precisa saber antes de confiar no seu primeiro alerta.