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 УК РФ. Причинение имущественного ущерба путем обмана или злоупотребления доверием.
Часть от суммы ущерба.