Используя приложение NFC Tools, мы можем многое узнать об этой метке:
Это NTAG213.
Он использует NfcA
Он защищён паролем
Есть ссылка на страницу Philips.
Также с помощью NFC Tools можно считывать данные о состоянии памяти и доступе к ней:
Address Data Type Access
0x00 04:EC:FC:9C UID0-UID2/BCC0 Read-Only
0x01 A2:94:10:90 UID3-UDI6 Read-Only
0x02 B6:48:FF:FF BCC1/INT./LOCK0-LOCK1 Read-Only
0x03 E1:10:12:00 OTP0-OTP3 Read-Only
0x04 03:20:D1:01 DATA Read-Only
0x05 1C:55:02:70 DATA Read-Only
0x06 68:69:6C:69 DATA Read-Only
0x07 70:73:2E:63 DATA Read-Only
0x08 6F:6D:2F:6E DATA Read-Only
0x09 66:63:62:72 DATA Read-Only
0x0A 75:73:68:68 DATA Read-Only
0x0B 65:61:64:74 DATA Read-Only
0x0C 61:70:FE:00 DATA Read-Only
0x0D… 00:00:00:00 DATA Read-Only
0x1F 00:01:07:00 DATA Readable, write protected by PW
0x20 00:00:00:02 DATA Read-Only
0x21 60:54:32:32 DATA Read-Only
0x22 31:32:31:34 DATA Read-Only
0x23 20:31:32:4B DATA Read-Only
0x24 B3:02:02:00 DATA Readable,write protected by PW
0x25 00:00:00:00 DATA Readable,write protected by PW
0x26 00:00:00:00 DATA Readable,write protected by PW
0x27 00:00:00:01 DATA Readable,write protected by PW
0x28 00:03:30:BD LOCK2 - LOCK4 Readable,write protected by PW
0x29 04:00:00:10 CFG 0 Read-Only
0x2A 43:00:00:00 CFG 1 Read-Only
0x2B 00:00:00:00 PWD0-PWD3 Write-Only
0x2C 00:00:00:00 PACK0-PACK1 Write-Only
Я повторил этот процесс для одной черной и двух белых насадок W DiamondClean и узнал следующее:
0x00-0x02 содержит уникальный идентификатор и его контрольную сумму.
0x04-0x0C содержит ссылку на магазин Philips.
0x22 равен 31:32:31:34 для черных и 31:31:31:31 для белых насадок соответственно.
0x24 содержит общее время чистки.
Все остальные читаемые данные идентичны для всех насадок
Расшифровка сохранённого времени
Давайте проведём эксперимент и посмотрим, какие изменения происходят с NFC меткой при использовании зубной щётки:
Считывание метки
При считывании новой насадки, которой ещё не пользовались, данные addr. 0×24 равны 00:00:02:00.
Если просто поставить насадку на ручку щётки (без чистки зубов), ничего не меняется.
Чистка
Я дал щётке поработать 5 секунд
Считываю данные с метки повторно
Данные addr. 0×24 изменились, теперь это 05:00:02:00
Похоже, что addr. 0x24 сохраняет количество секунд, в течение которых использовалась насадка щётки.
Когда щетка используется более 255 секунд, этот таймер переходит на второй бит (02:01:02:00 -> 258s). Попытка перезаписать сохранённое время, к сожалению, не увенчалась успехом, так как этот адрес памяти защищён паролем.
Подбор пароля
К счастью, оказалось, что требуемый пароль передается открытым текстом! Значит, все, что мне нужно сделать, это перехватить обмен данными между зубной щёткой и головкой. Покопавшись в своём программно-определяемом радио HackRF, методом проб и ошибок пришёл к следующему рабочему алгоритму.
Это сообщение отредактировал VampirBFW - 8.06.2023 - 16:18