Update: Вдалося скопіювати, огляд оновлений.
В одному зі своїх оглядів (Atmega8A в корпусі TQFP-32 прошивка через Arduino ISP), я вже згадував про збірку зчитувача / емулятора для контактних домофонних ключів за проектом clusterr'а.
Доставка і зовнішній вигляд
Товар прийшов в звичайному жовтому пакеті без пинов був обмотаний повітряно-бульбашкової плівкою і в цілому відмінно упакований. Продавець надав відстежується трек.
Склад лота:
- МодульPN532 NFC Читання / Запис (3.3V-5V);
- S50 Біла карта;
- S50 Ключ карта.
Характеристики
На платі встановлений чіп NXP Pn532, який дозволяє проводити операції читання і запису для Mifare Classic Card (13.56 МГц).
- Розмір: 10.5см X 4.9см;
- Харчування: 3.3V-5.0V;
- інтерфейси: I2C, SPI, HSU (3.3V-5V сумісність);
- Кнопка Reset на платі;
- Крок між пинами: 2.54 мм.
підключення
Для підключення до комп'ютера, найкраще використовувати HSU - High-speed UARTs і USB TTL заснований на чіпі FT232RL, так само є можливість підключення Pn532 NFC Module по SPI з Arduino і використовувати останню, як USB TTL, більш детально можна прочитати за проектом mfocuino. На жаль, у мене виникли проблеми з Cp2102, який я вже не раз згадував у своїх оглядах.
- Pn532 NFC Module TX -> FTDI TTL RX
- Pn532 NFC Module RX -> FTDI TTL TX
- Pn532 NFC Module VIN -> FTDI TTL VCC
- Pn532 NFC Module GND -> FTDI TTL GND
Установка і настройка програмної частини
Для роботи з Mifare Classic існує вільна бібліотека libnfc, яка містить необхідний набір утиліт для RFID. Установка підтримується на безліч популярних ОС, але я рекомендую використовувати GNU \ Linux і зокрема Debian \ Ubuntu.
Відкриваємо Terminal, отримуємо права адміністратор (root) і встановлюємо необхідні пакети.
Для зручності створимо папку nfc в домашній директорії і перейдемо в неї:
Отримуємо поточну версію з git-репозиторію:
Збираємо libnfc з вихідних кодів, які були отримані:
MFOC - це відкрита реалізація «offline nested» атаки від Nethemba.
Програма дозволяє відновити ключі аутентифікації від MIFARE Classic card, тільки якщо відомий один з ключів, крім того список найбільш популярних ключів вже захаркодін в утиліті, за якими буде йти перевірка.
Отримуємо поточну версію з git-репозиторію:
cd ./mfoc
autoreconf -vis
./ configure
sudo make
MFCUK - це відкрита реалізація Darkside Attack. Дана утиліта не вимагає знань будь-якого з ключів.
Отримуємо поточну версію з git-репозиторію:
Використання
Підключаємо Pn532 NFC Module до USB TTL, а його в свою чергу до порту комп'ютера і прикладаємо RFID ключ - порожній, який йшов в комплекті.
У відповідь отримуємо:
Пробуємо отримати dump карти через утиліту mfoc.
Отримуємо дамп карти в файл dump.mfd
Ключі Key A: ffffffffffff Found Key B: ffffffffffff
Прибираємо порожній RFID і прикладаємо домофонної, виконуємо команду:
Не вийшло зі стандартними ключами No sector encrypted with the default key has been found, exiting ...
Якщо нам відомий один з ключів, то можна скористатися параметром -k key
Спробуємо здійснити злом через mfcuk.
Переходимо в директорію
невдача
ERROR: mfcuk_key_recovery_block () (error code = 0x03)
ERROR: mfcuk_key_recovery_block () (error code = 0x03)
ERROR: mfcuk_key_recovery_block () (error code = 0x03)
Залишав на добу, помилка циклічно повторюється, при цьому якщо запустити з ключем -v 3 процес йде.
Відповідь в інтернеті, я так і не знайшов, перепробував різні версії libnfc і mfcuk, залишав питання розробникам і намагався використовувати спеціалізовані дистрибутиви, типу kali linux, намагався зламати порожню карту, та ж сама помилка, результат однаковий.
В одній зі статей згадується про успішне зломі з ACR122U reader libnfc-1.5.1 і mfcuk r65, але у мене зараз немає такого пристрою.
Рішення проблеми
Як виявилося, існують 'weaker' ключі, а в mfcuk не існує логіки за даним типом. Величезне спасибі користувачеві Stewart8 і його повідомленням. де він описав проблему та шляхи її вирішення.
Для зручності я викладаю відредаговані файли crapto1.c і mfcuk.c, які необхідно підмінити в папці mfcuk / src і зібрати утиліту заново.
І чекаємо поки maxhii = 00ffffff і maxloi = 00ffffff почнуть повторюватися:
INFO: Connected to NFC reader: pn532_uart: / dev / ttyUSB0
VERIFY:
Key A sectors: 0 1 2 3 4 5 6 7 8 9 a b c d e f
Key B sectors: 0 1 2 3 4 5 6 7 8 9 a b c d e f
RECOVER: 0
...
254592 candidates found, nonce 78882a2f
maxhi = 3 maxhii = 0030b0c5 maxlo = 3 maxloi = 00080e51
mfcuk: ERROR: mfcuk_key_recovery_block () (error code = 0x03)
44928 candidates found, nonce 5578882a
maxhi = 3 maxhii = 000bee31 maxlo = 3 maxloi = 00080e51
mfcuk: ERROR: mfcuk_key_recovery_block () (error code = 0x03)
354816 candidates found, nonce 5578882a
maxhi = 4 maxhii = 00895568 maxlo = 3 maxloi = 0000a513
mfcuk: ERROR: mfcuk_key_recovery_block () (error code = 0x03)
153600 candidates found, nonce 688df49b
maxhi = 4 maxhii = 0030028f maxlo = 4 maxloi = 0016ef51
mfcuk: ERROR: mfcuk_key_recovery_block () (error code = 0x03)
49152 candidates found, nonce a2701b19
maxhi = 4 maxhii = 0030028f maxlo = 4 maxloi = 0016ef51
mfcuk: ERROR: mfcuk_key_recovery_block () (error code = 0x03)
59136 candidates found, nonce 02aa92c0
maxhi = 5 maxhii = 00ffffff maxlo = 5 maxloi = 00ffffff
mfcuk: ERROR: mfcuk_key_recovery_block () (error code = 0x03)
206080 candidates found, nonce 32a03931
maxhi = 6 maxhii = 00ffffff maxlo = 6 maxloi = 00ffffff
mfcuk: ERROR: mfcuk_key_recovery_block () (error code = 0x03)
40256 candidates found, nonce 78882a2f
maxhi = 7 maxhii = 00ffffff maxlo = 7 maxloi = 00ffffff
mfcuk: ERROR: mfcuk_key_recovery_block () (error code = 0x03)
349440 candidates found, nonce a2701b19
maxhi = 8 maxhii = 00ffffff maxlo = 8 maxloi = 00ffffff
mfcuk: ERROR: mfcuk_key_recovery_block () (error code = 0x03)
Тисячу триста сорок чотири candidates found, nonce 688df49b
maxhi = 9 maxhii = 00ffffff maxlo = 9 maxloi = 00ffffff
Зазвичай maxhi, maxlo не перевищують в цей момент 5-6. На помилки error code = 0x03 не звертаємо увагу.
Далі отримуємо ключ: ffffffffffff
maxhi = 5 maxhii = 00ffffff maxlo = 5 maxloi = 00ffffff
-k ffffffffffff (ключ, який був отриманий через mfcuk)
В кінці повинні отримати повідомлення:
Ми отримали повний дамп, домофонного ключа, тепер запишемо його в порожній ключ.
Робимо дамп порожнього ключа:
І використовуючи утиліту nfc-mfclassic (йде в комплекті з libnfc) записуємо дамп в порожній ключ:
Якщо у вашій болванки Changeable UID або unlocked, тобто у якій, можна змінити ідентифікатор і зробити повний дублікат, то запустивши:
і отримаємо magic key.
висновок
Як підсумок, я отримав великий досвід в роботі з RFID, але на жаль створити копію без знання одного з ключів в даний момент не представляється мені можливим завдяки Stewart8 вдалося зробити копію. Дякую всім і я дуже щасливий!