Твоя електрична зубна щітка стежить за тобою.
Не в моторошному сенсі стеження, а в сенсі «ми поклали крихітний NFC-чип у насадку, щоб нагадувати тобі купити нову». У кожній змінній насадці Philips Sonicare в пластик залито NTAG213, який рахує, скільки ти вже чистиш зуби, і каже ручці блимнути попереджувальним світлом, коли вирішить, що три місяці минули.
Ласкаво просимо до «інтернету лайна».
Річ у тім, що три місяці залишаються рекомендацією, а не медичним фактом. Зношення щетинок залежить від того, як сильно тиснеш, якою пастою користуєшся і як часто чистиш. Чип не міряє стан щетинок, він лише рахує секунди. У того, хто чистить обережно і м’якою пастою, через три місяці щетинки можуть бути ще цілком нормальні. Таймер про це не знає, та йому й байдуже.
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, Low/Med/High і Clean/White+/Gum Health/Deep Clean+Посилання: веде на
philips.com/nfcbrushheadtapі відкривається, якщо піднести насадку до звичайного NFC-зчитувача
Щойно накопичений час перевищує ціль (21 600 секунд), ручка починає блимати бурштиновим світлодіодом. Це говорить чип, а не щетинки.
Навіщо взагалі скидати лічильник
Тримісячний інтервал заміни залишається рекомендацією Philips, а не науковим вимірюванням зношення щетинок. Чип рахує секунди, а не те, наскільки збилася щетина. Якщо хочеш вирішувати сам, дивлячись на щетинки, а не слухаючись зворотного відліку, скидання лічильника саме це й дає.
Скинути варто й тоді, коли чергуєш кілька насадок, дорожню і домашню, і хочеш рахувати кожну окремо.
Як влаштований пароль
NTAG213 захищений паролем. У кожної насадки свій унікальний 4-байтовий пароль. Ручка щітки проходить з ним автентифікацію щоразу, коли пише на мітку.
Пароль обчислюється з двох речей: 7-байтового UID мітки та виробничого коду, який лежить на мітці й надрукований на ніжці. Алгоритм із прошивки Sonicare дістав Aaron Christophel, а до того передачу пароля перехопив Cyrill Künzi за допомогою програмно-визначуваного радіо.
Важливо: після трьох невдалих спроб пароля NTAG213 блокується назавжди. Чип стає доступним тільки для читання, і навіть сама щітка вже нічого на нього не запише. Не вгадуй.
Як перевірити і скинути в NFC.cool Tools
Ось як це виглядає в застосунку:
NFC.cool Tools бере на себе весь процес: зчитує мітку, обчислює пароль і показує статистику. Ні шістнадцяткових команд, ні вебкалькуляторів, ні SDR.
Відкрий NFC.cool Tools на iPhone
Перейди до розділу Toothbrush Head Reset
Натисни Read NFC і піднеси насадку до телефона
Застосунок покаже шкалу у відсотках витраченого ресурсу, а під нею витрачений і залишковий час
Натисни Reset Timer, щоб обнулити лічильник, або піднеси наступну насадку
Уже доступно на iPhone і Android.
Що насправді робить скидання
Під час скидання на сторінку 0x24 записується 00:00:02:00, тобто те саме значення, з яким приходить нова насадка. До нуля повертаються лише перші два байти, тобто сам лічильник використання. Що означають останні два, ніхто не знає, тому застосунок лишає їх недоторканими.
Щітка починає рахувати з нуля, і бурштинове світло повернеться ще через три місяці. Тоді знову подивишся на щетинки й вирішиш сам.
Ширша картина: NFC у побутових речах
Насадка для щітки з NFC-чипом, який відлічує час до наступної покупки, доводить «інтернет лайна» до вершини. Я побудував свою роботу навколо NFC, бо вважаю технологію справді корисною, але вставляти її в одноразовий пластик лише заради того, щоб підштовхнути тебе до наступної покупки, це вже, м’яко кажучи, свідомий вибір.
Той самий NTAG213 стоїть і там, де він справді служить покупцеві: підтвердження оригінальності товару, контроль доступу, а невдовзі й Цифровий паспорт виробу в ЄС, який вимагатиме NFC-міток на споживчих товарах, щоб можна було перевірити, що саме купуєш і звідки воно приїхало. Ось тут NFC працює на тебе, а не проти.
NFC.cool Tools читає і записує все це. Функція для Sonicare показує один приклад того, як розібратися, що лежить на мітках навколо, і самому вирішити, що з цим знанням робити.
Що почитати далі
Первісний розбір від Cyrill Künzi: перехоплення сигналу через SDR, видобування пароля і перший докладний аналіз NFC-протоколу Sonicare
Генератор паролів від Aaron Christophel: алгоритм, дістаний із прошивки Sonicare
Карта пам’яті NTAG213 від mbirth: докладний опис кожного байта на чипі
Є насадка Sonicare, яку хочеться перевірити? Завантаж NFC.cool Tools для iPhone або для Android і подивись, що там записала твоя щітка.