
Python-симуляция атаки KNOB на Bluetooth Classic, демонстрирующая понижение размера ключа шифрования и расшифровку перехваченного Bluetooth-трафика методом грубой силы.
# knob_attack_sim.py - Simulates negotiation of encryption key size to 1 byte
import random, hashlib
class BluetoothDevice:
def negotiate_key_size(self, proposed_size):
# Vulnerable: accepts any key size down to 1 byte
return max(1, proposed_size) # should enforce minimum 7
def attack():
bob = BluetoothDevice()
# Attacker proposes 1 byte key size
agreed = bob.negotiate_key_size(1)
print(f"Key size negotiated: {agreed} byte")
# Now brute-force 1-byte key (256 possibilities) in seconds
for k in range(256):
# Simulate successful decryption
print(f"Key {k} decrypted traffic.")
attack()
Во время согласования при сопряжении Bluetooth-устройство принимает размер ключа шифрования всего в 1 байт. Злоумышленник может принудительно установить для соединения крайне слабый ключ, затем подобрать его в реальном времени и перехватывать общение.
Запустите имитацию:
python knob_attack_sim.py
Программа выводит, что был согласован 1‑байтовый ключ, который можно мгновенно подобрать перебором.