
محاكاة بلغة بايثون لهجوم KNOB على بلوتوث الكلاسيكي، تُظهر تخفيض حجم مفتاح التشفير وفك تشفير حركة مرور بلوتوث المعترَضة بالقوة الغاشمة.
# 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()
يقبل جهاز البلوتوث أحجام مفاتيح تشفير صغيرة تصل إلى 1 بايت أثناء تفاوض الاقتران. يمكن للمهاجم إجبار الاتصال على استخدام مفتاح ضعيف للغاية، ثم تخمينه بالقوة الغاشمة في الوقت الفعلي والتنصت على الاتصال.
شغّل المحاكاة:
python knob_attack_sim.py
يُظهر أن مفتاحًا بحجم 1 بايت تم الاتفاق عليه ويمكن تخمينه بالقوة الغاشمة فورًا.