Твоя электрическая зубная щётка за тобой следит.
Не в жутковатом смысле слежки, а в смысле «мы поставили в насадку крошечный NFC-чип, чтобы подталкивать тебя к покупке новых». В каждой сменной насадке Philips Sonicare в пластик залит NTAG213, который считает, сколько ты чистил зубы, и говорит ручке моргнуть предупреждающим огоньком, когда решит, что три месяца прошли.
Добро пожаловать в Internet of Shit.
Дело в том, что три месяца это рекомендация, а не медицинский факт. Износ щетины зависит от того, с каким усилием ты чистишь, какой пастой и как часто. Чип не измеряет состояние щетины. Он просто считает секунды. У аккуратного человека с мягкой пастой через три месяца щетина может быть в полном порядке. Таймеру про это неизвестно, и ему всё равно.
NFC.cool Tools теперь умеет читать этот чип, показывать, сколько ресурса насадка израсходовала, и сбрасывать таймер, если ты решил, что щетина ещё живая. Разберём, как это работает.
Что на самом деле лежит на чипе
Ничего из этого я не разбирал сам. Cyrill Künzi разобрал протокол, а mbirth расписал каждый байт, и вместе они выяснили всё, что ниже. Вот что хранит NTAG213 в насадке:
Тип и цвет насадки. Один байт на странице
0x1F, который определяет модель (Premium All-in-One, Gum Care, DiamondClean и другие) и её цвет (карта памяти от mbirth перечисляет 22 известных типа).Целевой ресурс. По адресу
0x21, обычно0x5460, то есть 21 600 секунд: 180 двухминутных чисток, или три месяца при использовании дважды в день.Производственный код. По адресам
0x21-0x23лежит дата и линия выпуска в ASCII, например241206 31K(произведено 6 декабря 2024 года на линии 31K). Тот же код напечатан на ножке насадки.Накопленное время чистки. Первые два байта на странице
0x24хранят общее число секунд использования как 16-битное значение. Дойдя до0xFFFF(65 535 секунд, около 18 часов непрерывной чистки), счётчик останавливается. Новая насадка начинает с00:00:02:00: первые два байта нулевые, то есть износа нет, а смысл последних двух байтов пока не выяснен.Последняя интенсивность и режим. Тоже на
0x24: низкая, средняя или высокая и Clean, White+, Gum Health или Deep Clean+.Ссылка на
philips.com/nfcbrushheadtap, которая открывается, если поднести насадку к обычному NFC-считывателю.
Когда накопленное время превышает целевое, то есть 21 600 секунд, ручка начинает моргать жёлтым светодиодом. Это говорит чип, а не щетина.
Зачем вообще сбрасывать счётчик
Трёхмесячный интервал замены задан рекомендацией Philips, а не научным измерением износа щетины. Чип считает секунды, а не растрёпанность щетинок. Если хочется решать самому, глядя на щетину, а не подчиняясь обратному отсчёту, сброс счётчика даёт такую возможность.
Сбросить бывает нужно и тем, кто чередует несколько насадок, например дорожную и домашнюю, и хочет вести им учёт вручную.
Как устроен пароль
NTAG213 защищён паролем. У каждой насадки свой уникальный четырёхбайтовый пароль. Ручка щётки проходит с ним авторизацию каждый раз, когда пишет на метку.
Пароль вычисляется из двух вещей: семибайтового UID метки и производственного кода, который лежит на метке и напечатан на ножке. Aaron Christophel восстановил алгоритм из прошивки Sonicare после того, как Cyrill Künzi изначально перехватил передачу пароля программно-определяемым радиоприёмником.
Важно: NTAG213 блокируется навсегда после трёх неудачных попыток ввода пароля. Чип становится доступным только для чтения, и записывать на него не сможет уже даже сама щётка. Не угадывай.
Как посмотреть и сбросить через NFC.cool Tools
Вот как это выглядит в приложении:
NFC.cool Tools берёт на себя весь процесс: читает метку, вычисляет пароль и показывает статистику. Ни команд в hex, ни калькуляторов в браузере, ни радиоприёмника.
Открой NFC.cool Tools на iPhone
Перейди в раздел сброса насадки зубной щётки
Нажми «Считать NFC» и поднеси насадку к телефону
Приложение покажет шкалу в процентах с израсходованным ресурсом, а под ней использованное и оставшееся время
Нажми «Сбросить таймер», чтобы обнулить счётчик, или считай следующую насадку
Уже доступно на iPhone и на Android.
Что именно делает сброс
При сбросе на страницу 0x24 записывается 00:00:02:00, то же значение, с которым насадка приезжает с завода. Обнуляются только первые два байта, то есть счётчик использования. Смысл последних двух байтов неизвестен, поэтому приложение сохраняет их как есть.
Щётка начинает отсчёт заново, и жёлтый огонёк вернётся ещё через три месяца. К этому моменту можно снова посмотреть на щетину и решить самому.
Более широкая картина: NFC в обычных вещах
Насадка зубной щётки с NFC-чипом, который отсчитывает время до следующей покупки, это Internet of Shit во всей красе. Я построил работу вокруг NFC, потому что считаю технологию по-настоящему полезной, но зашивать её в одноразовый пластик специально ради подталкивания к покупкам это, скажем так, выбор.
Тот же чип NTAG213 применяют и там, где он работает на покупателя: подтверждение подлинности товара, контроль доступа, а скоро и цифровой паспорт продукта в Евросоюзе, который потребует NFC-меток на потребительских товарах, чтобы можно было проверить, что ты покупаешь и откуда это приехало. Вот там NFC работает на тебя, а не против.
NFC.cool Tools читает и записывает всё перечисленное. Функция для Sonicare показывает на одном примере, как понять, что лежит на метках вокруг, и решить, что с этим делать.
Что почитать дальше
Исходный разбор от Cyrill Künzi: перехват радиосигнала, извлечение пароля и первый подробный анализ NFC-протокола Sonicare
Генератор паролей от Aaron Christophel: алгоритм, извлечённый из прошивки Sonicare
Карта памяти NTAG213 от mbirth: подробное описание каждого байта на чипе
Есть насадка Sonicare, которую хочется проверить? Скачай NFC.cool Tools для iPhone или для Android и посмотри, что твоя щётка о тебе записала.