MCT - MIFARE Classic Tool

{ссылка на архивную версию}

MCT - MIFARE Classic Tool - это многофункциональное приложение для ОС Android, предназначенное для работы с картами MIFARE Classic. Несмотря на то, что разработчик заявил поддержку только карт Classic, программа также поддерживает карты MIFARE Plus в режиме Security Level 1 (режим совместимости с MIFARE Classic). Распространяется как свободное ПО, доступно в магазине Google Play и в виде исходного кода - в репозитории GitHub.

Для полноценной работы с MCT необходимо базовое знакомство с технологией MIFARE Classic, хотя бы понятие о шестнадцатеричной системе счисления (HEX), а также - понимание различий между битом и байтом. Это поможет избежать крайне неприятных ситуаций, напрмер - вывода из строя микросхемы карты. Также следует всегда помнить, что MCT МОЖЕТ МОДИФИЦИРОВАТЬ СОДЕРЖИМОЕ ПАМЯТИ КАРТЫ, И НИКАКОЙ ЗАЩИТЫ ОТ КРИВЫХ РУК В ПРОГРАММЕ НЕТ. Во вторую очередь, нужно понимать, что MIFARE Classic - проприетарная технология от компании NXP Semiconductors, поэтому полноценно работать с ней можно только на телефонах или планшетах с NFC-контроллером от NXP, так что если приложение не сможет работать именно на Вашем устройстве - это не вина разработчика. В данном материале приложение будет запускаться на планшете Google Nexus 7 (2012) c контроллером PN544 от NXP Semiconductors и Huawei Honor 5c (этот телефон официально не поддерживает MIFARE, но есть нюанс - о нем далее).

Вот что MCT умеет:

  • Читать содержимое памяти карт MIFARE Classic и MIFARE Plus: отдельные сектора или  всю карту целиком (только при наличии соответствующих ключей). Содержимое памяти может быть показано как HEX, так и в виде ASCII. Карты MIFARE Plus поддерживаются только если они находятся в режиме Security Level 1: в этом режиме организация памяти и система команд полностью совместима с MIFARE Classic. Чтение памяти MIFARE Ultralight и прочих не поддерживается - их память организована иначе да и команды используются другие.
  • Сохранять дампы (образы) карт: Дамп представляет собой форматированный текстовый файл, который легко читается прямо в программе или в любом редакторе текста. Начиная с версии 4.0.0 можно импортировать бинарные файлы дампов libnfc/NFC-tools. В последних версиях добавлен инструмент конвертирования дампов в бинарный формат и обратно.
  • Сравнивать дампы (образы) карт: diff tool может сравнивать образы одной и той же карты, снятые в разное время или разных карт, включая их условия доступа, ключи и UID. Различия будут выделены красным цветом.
  • Управлять словарями ключей: создавать, удалять, редактировать, экспортировать и импортировать. Начиная с версии 4.0.0 программа хранит ключи и дампы в собственной папке на разделе /data/, при переустановке или при восстановлении устройства потребуется сохранить их  резервную копию в безопасном месте. По умолчанию программа поставляется с двумя наборами общеизвестных ключей. 
  • Записывать данные в память MIFARE Classic и MIFARE Plus: по отдельным блокам/секторам или всю память целиком (как и везде - при наличии ключей).
  • Форматировать карты MIFARE Classic: при наличии ключей, MCT может стереть содержимое всех секторов и установить все права доступа и ключи на значения по умолчанию, что соответствует начальному состоянию карты. Содержимое MIFARE Plus в Security Level 1 также может быть очищено, но карта не вернется в заводское состояние.
  • Изменять блок изготовителя в Gen2 magic cards: если карта поддерживает смену UID с помощью простой команды записи. Начиная с версии 4.0.0 поддерживаются поддерживаются UID длинной 4,7 и 10 байтов. Также есть возможность помимо UID записать оставшиеся данные в нулевой блок нулевого сектора.
  • Кодировать/Декодировать/Изменять значение Value Block: можно записать новый блок на карту, посмотреть существующий в исходном формате или в виде целого числа, а также - производить операции Increment и Decrement.

  • Кодировать/Декодировать условия доступа: для каждой карты можно просмотреть условия доступа в виде удобной таблицы.
  • Отображать общую информацию о чипе: UID, стандарт ISO, значения ATQA и SAQ, изготовитель, количество секторов/блоков и даже примерную дату производства. 
  • Считать BCC - контрольное число нудевого блока. 

 

Чего программа не умеет:

  • Полноценно работать с несовместимыми устройствами: старые версии MCT полагались на информацию об NFC, предоставляемую самой ОС. Поэтому, если системные файлы Android не содержали информации о совместимости с MIFARE - программа отказывалась читать память карт (UID можно прочитать и на несовместимом устройстве). В новых версиях разработчик убрал эту проверку, и оказалось, что некоторые производители телефонов "забыли" указать совместимость с MIFARE, хотя она и присутствовала (при наличии ROOT-прав исправить это можно исправить) Так произошло и с Honor 5C: официально он несовместим, однако на практике - без проблем может читать и модифицировать память всех чипов MIFARE. 
  • "Взламывать", извлекать или подбирать неизвестные ключи: это невозможно по нескольким причинам, и главная из них - это протокол связи ОС Android с NFC-модулем. В самой операционной системе заложено ограничение скорости операций с NFC и доступа к нему, что не мешает нормальным функциям модуля (бесконтактная оплата, чтение и запись меток), но полностью отсекает возможность использовать модуль иначе. Полноценная брутфорс-атака невозможна как раз по этой причине: попытка подобрать пару "ключ-сектор" может занять существенное время, особенно если  файл с ключами содержит много ключей от разных карт. Поэтому, лучше создавать отдельные файлы ключей для каждой карты, а не собирать все в один файл.
  • Изменять UID на неподдерживаемых картах: программа может изменять UID только на картах второго поколения (Gen2), которые используют простую команду WRITE_BLOCK для записи. Карты требующие перевода в специальный режим (Gen1) не поддерживаются. Узнать подходящую карту на китайских интернет-площадках легко, в названии или описании карты обычно содержится "MIFARE Classic Tool" либо "Gen2", либо сокращение - "MCT".

 

 

Добавление ключей

Перед чтением памяти, необходимо добавить в MCT подходящие ключи.

Начиная с версии  4.0.0 можно использовать как текстовые (.keys, .dic, .txt), так и бинарные файлы ключей (.bin). Чтобы внести свои ключи в программу, нужно сначала сохранить файлы ключей в любую удобную папку на телефоне, а затем - импортировать их из соответствующего меню TOOLS:

После выбора формата откроется файловый менеджер, в котором нужно выбрать папку с сохраненными ранее файлами ключей. Также можно создать файл с ключами вручную, для этого нужно зайти в меню EDIT/ADD KEY FILE и нажать на "+":

Каждая строка файла должна содержать один ключ в шестнадцатеричном формате, без пробелов и любых других знаков. Если при попытке сохранить файл возникает ошибка - в файле есть неправильная буква или символ.

Старые версии приложения оперировали самими файлами, но начиная с версии 4.0.0 ключи представляют собой записи в базе данных приложения на разделе /data/. Это было сделано, чтобы отказаться от разрешения (Android permission) на доступ к личным файлам пользователя. Для пользователя это значит следующее: !При удалении или переустановке программы все сохраненные ключи и дампы необходимо экспортировать!. Отказ от разрешения на доступ к хранилищу данных пользователя означает, что данные приложения больше не будут храниться в доступной пользователю памяти. Данные будут храниться на недоступном пользователю (без root-доступа) разделе /data, в каталоге со служебными данными приложения. При удалении MCT все служебные данные также будут удалены, поэтому, если ключи все еще нужны, их необходимо экспортировать в хранилище пользователя (Internal Storage или SD-карта, в зависимости от производителя устройства). Для этого, на основном экране нужно выбрать меню Tools, затем - "Import/Export/Convert Files" и "EXPORT KEYS" (если Вы хотите экспортировать и сохраненные дампы, повторите процедуру, выбрав вместо "EXPORT KEYS" - "EXPORT DUMP"). Программа предложит выбрать файлы для экспорта, а после подтверждения откроется файловый менеджер, в котором следует выбрать место сохранения экспортированных данных. После переустановки программы останется только импортировать сохраненные данные. Чтобы экспортировать сразу все свои данные, воспользуйтесь пунктом BACKUP / EXPORT EVERYTHING.

Во время работы MCT пытается авторизоваться во всех выбранных секторах с помощью ключей из выбранного файла. Этот процесс называется "Mapping", и может занимать довольно много времени, в зависимости от количества и правильности ключей в файле, их расположения (ключ от первого сектора лучше помещать в начало файла) и количества выбранных секторов. 

 

Чтение

Функция чтения работает одинаково на старых и новых версиях программы. Итак, в главном окне нужно выбрать кнопку READ TAG:

В открывшемся окне поставьте галочки напротив нужного файла с ключами. Если нужно прочитать содержимое конкретных секторов - нажмите кнопку "CHANGE", укажите их номера (первый сектор - "0") и нажмите "ОК":

Обратите внимание: по-умолчанию программа знает только о картах с объемом памяти 1K (16 секторов) и 4K (40 секторов), поэтому для чтения карт Mifare Plus 2K потребуется указать количество секторов вручную (From: 0 To: 31).

Теперь приложите карту к NFC антенне телефона и нажмите "START MAPPING AND READ TAG". Программа начнет перебирать ключи из списка, это займет некоторое время:

По окончании подбора ключей, MCT прочитает содержимое секторов, к которым подошли ключи и откроет редактор:

Если к какому-либо сектору не нашлось подходящих ключей, вместо его содержимого будет отображено предупреждение [No keys found (or dead sector)]. Теперь карту можно убрать.

Главное окно редактора отображает содержимое памяти, ключи и права доступа и подсказку по цветам: Фиолетовый - блок изготовителя карты, Желтый - Value block, Салатовый - ключ А, Зеленый - ключ Б, Оранжевый - условия доступа. Полученный дамп (образ) можно сохранить или отправить любым доступным способом.

Меню редактора можно вызвать, нажав на соответствующий значок:

  • Data as ASCII - отображает содержимое блоков в виде простого текста в кодировке US-ASCII. Блок с ключами и условиями доступа показан не будет, Непечатные символы будет показаны точкой ".".
  • Decode Access Conditions - отображает условия доступа к секторам в дампе в виде наглядной таблицы.
  • Value Blocks as Int. - отображает значения всех обнаруженных value-блоков в виде целого числа.
  • Decode date of manufacture - MCT попытается угадать дату производства чипа. Результат очень часто неправильный, полагаться на него не стоит.
  • Compare Dump - открывает инструмент сравнения дампов (diff tool). В этом пункте можно выбрать один из ранее сохраненных дампов, и сравнить с только что полученным.
  • Write Dump - позволяет записать полученный дамп на карту. В процессе записи можно выбрать, какие сектора записать и установить права доступа. Потребуется авторизоваться в записываемой карте (даже если она - та же).
  • Save Keys - сохраняет ключи из дампа в отдельный keys-файл. В последствии можно авторизоваться в карте этим файлом, что заметно ускорит процесс чтения.
  • Value Block De-/Encoder - кодирует/декодирует блоки в формате Value Block. Полученный результат можно скопировать в буфер обмена и вставить в дамп.
  • Access Conditions De-/Encoder - позволяет составить собственные условия доступа к сектору, выбрав нужное из пресетов или вручную. Есть отдельные пресеты для трейлера и каждого блока. В случае, если вручную были введены неверные данные, программа сообщит об ошибке. Получившийся результат также можно скопировать в буфер обмена и вставить в дамп.
  • BCC Calculator - позволяет рассчитать Bit Count Check - некое подобие контрольного числа 0 сектора 0 блока карты длинной в 1 байт. 

 

 

Запись

 

 

Запись в память можно осуществить из отдельного меню WRITE TAG. Помните, что любая операция записи с неверно указанными параметрами/данными может привести к выходу карты из строя.

На выбор доступны следующие варианты:

  • Write Block - запись данных в один блок одного сектора. Блок - минимальная единица адресации памяти MIFARE Classic, поэтому для изменения даже одного байта, необходимо переписать все 16 байтов. В качестве параметров необходимо указать номер сектора (первый - сектор 0), номер блока (первый в каждом секторе - блок 0) и записываемые данные в в HEX-формате (16 байтов):

 

  • Write Dump (Clone) - запись ранее сохраненного образа на карту. Есть опция для изменения условий доступа в записываемом дампе. При записи карты, блок производителя изменен не будет, но если поставить галочку напротив "Advanced: Enable writing to manufacturer block", программа попытается записать дамп полностью, вместе с блоком производителя (поддерживаются только специальные карты, использующие для записи стандартную команду WRITE):

 

  • Clone UID - запись только блока изготовителя (UID и служебные данные). При выборе этого пункта меню откроется окно Clone UID tool, в котором можно указать нужный UID (или выбрать случайный, нажав на кнопку с черной игральной костью), сгенерировать или указать вручную оставшиеся данные и записать все на карту. Поддерживаются только карты Gen2:

 

  • Factory Format - процедура записи нулей во все блоки всех секторов (кроме блока изготовителя) и установка условий доступа и ключей A и B в значения по умолчанию. Память карты MIFARE Plus также может быть очищена этой процедурой, однако Security Level изменен не будет, так как возврат на предыдущий уровень невозможен. 

 

  • Incr./Decr. Value Block - процедура увеличения/уменьшения значения, записанного в value-блок. Потребуется указать адрес блока (номер сектора и номер блока), а также число, на которое будет прибавляться/вычитаться из числа в value-блоке:

 

 

Редактор дампов

 

Редактор дампов позволяет в любое время вносить правки в ранее сохраненные образы карт. По сути, это тот же редактор, что открывается при чтении карты из READ TAG. Здесь доступны все перечисленные выше опции.

 

 

Инструменты

В этом пункте находятся все те же  калькуляторы value-блока, условий доступа и BCC, а также:

  • Display Tag  Info - дисплей с общей информации о карте: производитель, UID, стандарт ISO, ATQA, SAK и размер памяти. Малополезная функция, так как MIFARE Classic поддерживает только один стандарт ISO, UID и прочую тех. информацию можно посмотреть почти в любом другом приложении, а производителя и объем памяти MCT часто определяет неверно.
  • Clone UID - запись блока изготовителя.
  • Diff Tool - инструмент для сравнения дампов карт. Может быть очень полезен при сравнении разных карт или состояния одной и той же карты в разное время. Если Вы используете MCT для записи дампов, НАСТОЯТЕЛЬНО рекомендуется снимать дамп с записанной карты и сравнивать с исходным дампом. Вот как выглядит сравнение двух дампов тестовой карты:

 

  • Convert Data - позволяет конвертировать произвольные данные из/в HEX/ASCII/BIN.
  • UID Log - журнал работы с картами. Отображает UID карты и время, в которое программа с ней взаимодействовала. 
  • Import/Export/Convert Files - позволяет импортировать/экспортировать и создавать резервные копии всех пользовательских данных: ключей доступа и дампов карт.

 

Проблемы

 

  • Сообщение об ошибке при записи/стирании: Иногда, при попытке записать или стереть большое количество секторов одновременно (например, при записи целого дампа или форматировании всей памяти), может возникать ошибка записи, даже если карта все время была в поле считывателя и все необходимые параметры были указаны верно. Сообщение об ошибке намекает, что память карты могла быть повреждена, однако, в большинстве случаев волноваться не стоит. Повторяйте форматирование/запись до тех пор, пока процесс не будет успешно завершен.

"Ошибка: возникла какая-то ошибка во время записи. (Это может быть плохо)."

 

  • Неполная запись дампов: Иногда, MCT не полностью записывает дамп на карту, при этом сообщает об успешном завершении процесса записи. Чтобы убедиться, что дамп был записан верно, необходимо сохранить дамп с только что записанной карты и сравнить с исходным.

В будущих версиях указанные проблемы могут быть устранены, так что не стоит пропускать обновления.

Ссылки на скачивание:

 

Категория: Android | Добавил: pcscd (12.12.2020)
Просмотров: 5753 | Теги: инструкция, mct, Mifare Classic Tool, mifare, Mifare Plus, Как пользоваться | Рейтинг: 5.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *:
close