Перейти до вмісту

← Назад до розділу NFC.cool Blog

Зчитування, колекція та резервні копії Amiibo на iPhone і Android

Вигадана колекційна фігурка з NFC поруч із телефоном, на екрані якого відкрита приватна колекція

Люди думають, що всередині Amiibo сидить щось екзотичне. Якийсь фірмовий кремній Nintendo, якого більше ніде не купиш. Нічого подібного. У підставку фігурки запаяна NTAG215, той самий чип із чистих наліпок, які я зчитую й записую щодня, з тих, що йдуть по десять у пачці за копійки. Близько 540 байтів пам’яті, серійний номер, випалений на заводі, і на цьому фігурка закінчується. Дорого коштує пластик. Чип тут майже випадковий гість.

Саме тому мене це так довго муляло. Я зчитую й записую NFC-мітки за фахом, а ціла їх категорія (кілька фігурок на полиці біля мого стола) лишалася для мого ж застосунку порожнім місцем. Я хочу, щоб NFC.cool умів більше за будь-який інший NFC-застосунок, який можна поставити на телефон, і не обходив жодного типу міток.

Тож я сів, фігурки з одного боку, Switch з другого, і зробив у NFC.cool повноцінну підтримку Amiibo. Ось що з цього вийшло і чого я навчився по дорозі, а почну з того, чому такий дешевий чип так важко скопіювати.


То в чому ж тоді фокус?

Якщо чип такий звичайний, то фокус явно не в кремнії. Він у байтах. Amiibo працює як дешевий блокнот, який Nintendo списала власним шифром, а внизу поставила підпис, щоб підробку було видно одразу. (Усередині стоїть звичайна NTAG215, якщо хочеш глибше пройтися типами міток.)

У цих байтах живуть дві речі. Перша лежить відкрито: невеликий блок, який називає персонажа, скажімо Link із серії The Legend of Zelda у конкретній лінійці Amiibo. Саме це зчитує консоль, щоб зрозуміти, що до неї щойно піднесли фігурку. Друга частина закрита: власне збереження, як-от прізвисько, Mii власника, скільки разів фігурку вже використали і що там нашкрябала поточна гра в дозволений їй клаптик пам’яті. Ця частина зашифрована і підписана.


Чому Amiibo не скопіювати навпростець

За зашифрованим збереженням стоїть не один сталий ключ, який можна раз підглянути й користуватися вічно. У кожної мітки ключі свої, і виводяться вони на місці з набору майстер-ключів, перемішаних з даними саме цієї мітки, зокрема з її унікальним серійним номером. До того ж усе разом підписано через HMAC. Зміни хоч один байт без нового підпису, і консоль побачить підробку та відмовиться від фігурки.

А тепер про пастку. Серійний номер зашитий і у виведення ключів, і в підпис, тож зняти дамп справжнього Amiibo й перенести його байт у байт на чисту мітку не вийде. У чистої мітки серійний номер інший, тому всі виведені ключі виходять іншими, підпис перестає збігатися, і консоль її не приймає. Очевидний підхід «просто скопіюй усі сторінки» провалюється щоразу.

Щоб копія була дійсною, ключі треба вивести заново вже під мітку призначення і переписати підпис так, щоб він працював саме для цього шматка пластику й кремнію, а не для того, з якого знято дамп. Еталонну реалізацію, на яку всі спираються, звати amiitool. Увесь цей танець я переписав рідними засобами всередині застосунку: формат мітки у внутрішній формат і назад, виведення ключів, шифрування, підпис. Тепер NFC.cool робить це на телефоні в руці, і жоден комп’ютер у цьому не бере участі.


Що NFC.cool уміє тепер

Три речі, у тому порядку, в якому ти, найпевніше, до них дійдеш.

Зчитування. Піднеси Amiibo до задньої кришки телефона так само, як зчитуєш будь-яку NFC-мітку, і NFC.cool одразу її впізнає: персонаж, ігрова серія, серія Amiibo, тип фігурки й ілюстрація, а поруч кілька фактів із самої мітки, як-от скільки разів на неї писали. Ключі для цього не потрібні. Розпізнавання фігурки чіпає лише ту частину, що й так лежить відкрито.

Колекція. Кожен зчитаний Amiibo лягає в «Мою колекцію», просту сітку з усього, що є в тебе на полиці. Вона живе на пристрої, а на iPhone ще й синхронізується з іншими пристроями Apple через iCloud. Ілюстрації кешуються, тому без інтернету колекція виглядає так само. Вже саме це перетворило мою сумну полицю на щось, що приємно гортати.

Резервне копіювання і відновлення. Коли власні ключі імпортовано, копію фігурки з перевиведеними ключами можна записати на чисту NTAG215. Резервну копію бери прямо з фігурки, яку щойно зчитав, або відновлюй зі збереженого на пристрої дампа .bin. Застосунок заново виводить ключі під ту чисту мітку, яку ти тримаєш, і підписує дані саме для неї, тож копія дійсна сама по собі, а не приречена побайтова підробка. Запис назавжди: щойно мітку заблоковано, вона заблокована, і застосунок прямо каже про це до того, як ти натиснеш.


Чого тут навмисно немає

NFC.cool не постачає ключі Amiibo і ніколи не постачатиме. Ніяких схованих у застосунку ключів немає, як немає й вбудованої бібліотеки даних Amiibo.

Зчитування й колекція працюють одразу, бо чіпають тільки відкриту частину мітки. З резервним копіюванням інакше: йому потрібні майстер-ключі, а вони належать Nintendo, не мені. Якщо ти дістав їх самостійно (об’єднаний key.bin або два окремі файли), імпортуєш їх у застосунок один раз, і резервне копіювання вмикається. Не дістав, воно лишається вимкненим. Машину зібрав я, пальне за тобою.

Мені здається, що чесна межа проходить саме тут. Користь від цієї можливості справжня. Зберегти фігурку, яку дитина от-от загубить одного невдалого дня, або покласти дублікат на дешеву картку замість того, щоб ризикувати оригіналом, це реальні причини, чому люди цього хочуть. Я краще дам чистий і приватний спосіб зробити це на власному телефоні, ніж вдаватиму, що попиту немає. Але роздавати те, що ніколи мені не належало, я не буду.


Для протоколу

Дві речі, які хочу сказати прямо.

Перше: застосунок мій, а не Nintendo. NFC.cool не створений Nintendo, не пов’язаний з нею, не схвалений і не спонсорований нею. Amiibo, Nintendo Switch і назви ігор, які я згадую, є торговими марками відповідних власників, і називаю я їх лише для того, щоб було зрозуміло, з чим функція сумісна.

Друге: інструменти резервного копіювання і відновлення тут для навчання та особистого використання, тобто щоб захистити фігурки, які вже твої. Зроби дублікат тієї, яку дитина постійно впускає, або лиши оригінал у коробці, а щоденне зношування хай бере на себе дешева NTAG215. Саме під це я їх і робив. Приноси власні ключі, копіюй лише ті фігурки, якими справді володієш, і зважай на права Nintendo та на закони там, де живеш. За те, що робиш з інструментом, відповідаєш ти.


І воно справді працює

Випускати таке на віру я не хотів, тому перевірив єдиним способом, який щось важить.

Я зчитав одну зі своїх фігурок, зробив резервну копію на чисту NTAG215 і поніс копію до Switch. Запустив The Legend of Zelda: Tears of the Kingdom, підніс копію до правого Joy-Con, і в інвентар упала жменя ігрових предметів. Так само, як з оригіналом. Ані скарг, ані «цей Amiibo не вдалося зчитати». Ось тоді все це стало для мене справжнім. Стільки математики з виведення ключів і байтових розкладок, а на виході дешева чиста наліпка, яку консоль Nintendo спокійно приймає за справжню фігурку.

Полиця біля стола вже не просто прикраса. Тепер це функція.

Хочеш спробувати? Інструменти Amiibo живуть у NFC.cool на iPhone і Android, поруч з усім іншим, що я зробив для читання й запису міток. Візьми власні ключі, піднеси фігурку й побач, що твій застосунок увесь цей час тихо оминав.

Схожі статті

Готовий сканувати?

4,5·73 500 оцінок·Безкоштовно