Mifare 1k - узнать ключи
- Войдите на сайт для отправки комментариев
Всем привет!
Недавно приобрёл RFID модуль RC-522 на 13мгц, начал немного разбираться с этой системой.
Имеются несколько карточек Mifare classic 1k, для которых необходимо узнать ключи.
Порылся в интернете нашол проги MFCUK и подобные, но работают они только с определёнными девайсами.
На Arduino ничего подобного не нашол((
Решил написать простенький брут, но как выяснилось перебор занимает очень много времени((
#include <SPI.h> #include <MFRC522.h> #define RST_PIN 9 #define SS_PIN 10 MFRC522 mfrc522(SS_PIN, RST_PIN); MFRC522::MIFARE_Key key; void setup() { Serial.begin(9600); SPI.begin(); mfrc522.PCD_Init(); Serial.println("ok"); } void loop() { key.keyByte[0]=0x00; key.keyByte[1]=0x00; key.keyByte[2]=0x00; key.keyByte[3]=0x00; key.keyByte[4]=0x00; key.keyByte[5]=0x00; //Перебор байтов по порядку while(key.keyByte[5]<0xFF){ if (key.keyByte[0]==0xFF) key.keyByte[1]+=0x01; if (key.keyByte[1]==0xFF) key.keyByte[2]+=0x01; if (key.keyByte[2]==0xFF) key.keyByte[3]+=0x01; if (key.keyByte[3]==0xFF) key.keyByte[4]+=0x01; if (key.keyByte[4]==0xFF) key.keyByte[5]+=0x01; if ( ! mfrc522.PICC_IsNewCardPresent()) {return;} if ( ! mfrc522.PICC_ReadCardSerial()) {return;} byte status, len; status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, 1, &key, &(mfrc522.uid)); //Ограничения выводимой информации для мониторинга if (key.keyByte[0]==0xFF){ Serial.print(key.keyByte[0], HEX); Serial.print(" "); Serial.print(key.keyByte[1], HEX); Serial.print(" "); Serial.print(key.keyByte[2], HEX); Serial.print(" "); Serial.print(key.keyByte[3], HEX); Serial.print(" "); Serial.print(key.keyByte[4], HEX); Serial.print(" "); Serial.print(key.keyByte[5], HEX); Serial.print(" "); Serial.print("status:"); Serial.println(status); } //Если ключ верный if (status==1){ Serial.print("OK:"); Serial.println(status); Serial.print("Key is:"); Serial.print(key.keyByte[0], HEX); Serial.print(" "); Serial.print(key.keyByte[1], HEX); Serial.print(" "); Serial.print(key.keyByte[2], HEX); Serial.print(" "); Serial.print(key.keyByte[3], HEX); Serial.print(" "); Serial.print(key.keyByte[4], HEX); Serial.print(" "); Serial.print(key.keyByte[5], HEX); Serial.print(" "); }; key.keyByte[0]+=0x01;}}
Поэтому обращаюсь за подсказкой или помощью.
Предполагаемые варианты:
1. Наладить взаимодействие ардуино и сторонних программ MFCUK и т.п.
2. Ускорить брут (технически сам RFID модуль позволяет это зделать, в описании скорость работы до 10Mbit/s). Только как это зделать програмно?
Поковырял библиотеки rfid2master там куча параметров, что именно менять - хз.
3. Использовать уязвимость Mifare.
Порывшись в интернете, выяснил, что при подаче на карточку команд не соответствующих протоколу, карточка может выдать фрагменты ключей, что гораздо упрощает их перебор. Только подробной информации пока не нашол.
Надеюсь на вашу помощь и подсказку)
Заранее благодарю)
Поглядел исходник, почитал статьи - ардуина не затащит скорость обмена и вычислений. Там нужно быстро расчитывать криптографию и давить карточку запросами. На ардуине получится тот же самый брут форс. максимум с повышеной эфективностью...
Проще взломать терминал оплаты(установить монитор порта) чтобы получить ключи - через какую нить уязвимость в флешь...
NeiroN, терминал взломать проблемотично будет, т.к. почти все баги в нём прикрыли - даже рабочий стол стёрли.
Если только собрать девайс и проснифить обмен данных между картой и терминалом, только как его собрать на Arduino ХЗ, да и картоприёмник терминала зделан таким образом, что всунуть туда более одной карточки будет сложновато.
С самим физическим девайсом для сниффа попробую разобраться, но каким образом обрабатывать получаемые данные пока ХЗ.
А тотже модуль RC522 в качестве сниффера использовать возможно?
Нет, модуль общается по протоколу. Чтобы снифить надо работать без протокола.
3. Использовать уязвимость Mifare.
Порывшись в интернете, выяснил, что при подаче на карточку команд не соответствующих протоколу, карточка может выдать фрагменты ключей, что гораздо упрощает их перебор. Только подробной информации пока не нашол.
Надеюсь на вашу помощь и подсказку)
Заранее благодарю)
Уязвимость есть только в Mifare CLASSIC, остальные пока не сломали вроде:)
Для проезда этот вариант уже практически не используется, а так ключи извлекаются, да.
http://habrahabr.ru/post/175557/
Тот риадер стоит около 2к - дороговато((
В Москве с проездом гораздо проще теже Mifare Ultralight без пароля вроде прошиваются.
Но Я живу в Тюмeни - тут всё гораздо сложнее((
Выдаются карточки Mifare CLASSIC 1к которые как именные, так и общепользовательские (анонимные).
Кондуктора ходят по автобусу с девайсом, который снимает деньги с карты и печатает чек (билет), у водителя в маршрутках тотже девайс.
Никаких других видов общественного транспорта нету((
Поэтому количество попыток экспериментов давольно ограниченое.
Щас ещё вводят какието Универсальные Электронные Карты, в терминалах они уже вшиты, и как понял они выдаются по всей россии, однако они выдаются под ФИО, что давольно паливно для экпериментов.
И так:
Риадер покупать не вариант.
Зделать риадер под mfcuc на arduino тоже похоже проблемотично.
Брутить через arduino практически нериально (очень долго).
Сейчас пока два варианта:
1. Попробую побрутить на некоторые слова, номера телефонов, в различных вариантах, найденые на официальном сайте транспортной компании. Может повезёт.
2. Попытаюсь зделать сниффер и засниффить обмен данных между картой и терминалом. Думаю другим это тоже пригодиться, потомучто карточки разные бывают)
Других вариантов пока незнаю((
товарищ, вас посадят.
пароль от новой чистой карточки есть в руководстве https://learn.adafruit.com/adafruit-pn532-rfid-nfc/mifare
Нет ничего противозаконного, в том, чтобы узнать ключи к своей карточке, которую ты купил у транспортной компании.
А причём тут пароль от новой карточки? Если обсуждаются карточки с уже изменёнными стандартными паролями.
Нет ничего противозаконного, в том, чтобы узнать ключи к своей карточке, которую ты купил у транспортной компании.
А причём тут пароль от новой карточки? Если обсуждаются карточки с уже изменёнными стандартными паролями.
От своей карты да, но как только залепите клон с нее, то уже подделка билетов со всеми вытекающими:)
Mifare CLASSIC весь насквозь дырявый, взломы были много где по миру и от него уже почти везде отказались в пользу более защищенных вариантов карты. Как извлечь ключ - куча материалов есть в сети, в том числе на русском. Без нормального ридера сделать это в любом случае проблематично... только если хватит знаний переписать тулзу для перебора под Arduino скетч :)
Алгоритм перебора в теории не сложный...
Нет ничего противозаконного, в том, чтобы узнать ключи к своей карточке, которую ты купил у транспортной компании.
А причём тут пароль от новой карточки? Если обсуждаются карточки с уже изменёнными стандартными паролями.
От своей карты да, но как только залепите клон с нее, то уже подделка билетов со всеми вытекающими:)
подделка билетов со всеми вытекающими? нет такой статьи, есть подделка документов!
а билет - это и есть проездной документ :)
помоему, перебор не выйдет. карта перестанет читаться.
прошло уже много времени, но я всё равно спрошу) получилось ли сделать sniffer?
Ну раз давно не был, значит получилось, теперь сидит.
И времени вобщем немного прошло, могли лет 5 дать.
Как обстоят дела?))
Купите.
https://lab401.com/collections/rfid-tools/products/hydranfc
https://hydrabus.com/
И не мучайтесь.
К сведению это
Статья 165 УК РФ. Причинение имущественного ущерба путем обмана или злоупотребления доверием.
Часть от суммы ущерба.