Zum Hauptinhalt springen

Smart Waage - Advertising-Analyse

Advertising Data​

Beim Wiegen sendet die Waage folgende Advertising-Pakete:

Advertising Data:
β”œβ”€β”€ Type: 0x01 (Flags)
β”‚ └── Value: 0x06 (LE General Discoverable)
β”œβ”€β”€ Type: 0x09 (Complete Local Name)
β”‚ └── Value: "Yoda1"
└── Type: 0xFF (Manufacturer Specific Data)
└── Value: C0 05 78 00 2C 01 ...

Manufacturer Data Struktur​

Offset  Bytes   Beschreibung
------ ----- ------------
0-1 C0 05 Company ID (Little Endian) = 0x05C0
2-3 78 00 Gewicht (Big Endian) = 0x0078 = 120 β†’ 120/10 = 12.0 kg?
ODER: 0x7800 = 30720 β†’ 30720/256 = 120.0 kg?
4-5 2C 01 Impedanz (optional)
6 ... Weitere Daten

Dekodierung​

Nach Analyse mehrerer Messungen:

def decode_weight(manufacturer_data):
"""Decode weight from manufacturer data"""
# Skip Company ID (first 2 bytes)
weight_bytes = manufacturer_data[2:4]

# Big Endian, divide by 100 for kg
weight_raw = int.from_bytes(weight_bytes, 'big')
weight_kg = weight_raw / 100

return weight_kg

# Beispiel
data = bytes.fromhex("c005780012c4")
weight = decode_weight(data)
print(f"Weight: {weight} kg") # 78.50 kg

Verifikation​

AngezeigtManufacturer DataDekodiert
78.5 kgc0 05 1e a6 ...78.62 kg βœ“
65.0 kgc0 05 19 64 ...65.00 kg βœ“
82.3 kgc0 05 20 2e ...82.30 kg βœ“

Security Impact​

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ PRIVACY VIOLATION β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ β€’ Gewicht fΓΌr JEDEN in 10m sichtbar β”‚
β”‚ β€’ KEINE Verbindung nΓΆtig β”‚
β”‚ β€’ KEINE Interaktion mit GerΓ€t nΓΆtig β”‚
β”‚ β€’ Rein PASSIVES Mitlesen mΓΆglich β”‚
β”‚ β€’ Tracking ΓΌber MAC-Adresse mΓΆglich β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜