Основная информация

Это приложение Android для чтения, записи, анализа и т.Д. RFID-тегов и NFC меток.

Введение

Интерфейс программного обеспечения:

png

Этот инструмент предоставляет несколько функций для взаимодействия (и только) с классическими RFID-метками. Он предназначен для пользователей, которые хотя бы немного знакомы с технологией NFC. Вам также необходимо понимание шестнадцатеричной системы счисления, потому что все данные вводятся и выводятся в шестнадцатеричном формате.

Некоторые важные вещи:

Функции, которые предоставляет этот инструмент, очень просты. 
Не существует таких причудливых вещей, как сохранение URL-адреса в RFID-теге с красивым графическим интерфейсом пользователя. 
Если вы хотите сохранить данные в теге, вы должны ввести необработанные шестнадцатеричные данные.
Это приложение не может взломать/взломать любые ключи MIFARE Classic. 
Если вы хотите прочитать/записать RFID-метку, вам сначала понадобятся ключи для этой конкретной метки. Для получения дополнительной информации, пожалуйста, прочитайте/см.Главу Начало работы.
В этом приложении не будет возможности атаки "перебора". Это слишком медленно из-за протокола.

Первый блок первого сектора оригинального тега MIFARE Classic доступен только для чтения, т.е. не доступен для записи. Но есть специальные теги MIFARE Classic, которые поддерживают запись в блок производителя с помощью простой команды записи. Это приложение может писать в такие теги и, следовательно, может создавать полностью правильные клоны. Однако некоторые специальные теги требуют специальной последовательности команд, чтобы перевести их в состояние, в котором возможна запись в блок производителя. Эти теги не будут работать. Помните об этом, когда вы покупаете специальные теги! Кроме того, убедитесь, что значение BCC является правильным перед записью. BCC - это первый байт после UID. Он рассчитывается с помощью XOR всех байтов UID. Это приложение не будет работать на некоторых устройствах, поскольку их оборудование (NFC-контроллер) не поддерживает MIFARE Classic (подробнее). Вы можете найти список несовместимых устройств здесь.


*Для получения дополнительной информации о MIFARE Classic просмотрите Википедию, выполните поиск в Google или прочитайте «Лист данных» (PDF) MIFARE Classic (1k) из NXP.

Начало

Прежде всего, вам нужны ключи для тега, который вы хотите прочитать. Из-за некоторых недостатков в MIFARE Classic вы можете получить все ключи (A и B) тега с помощью таких инструментов, как Proxmark3 или обычные RFID-ридеры, и некоторого специального программного обеспечения (mfcuk, mfoc).

Приложение поставляется со стандартными файлами ключей, называемыми std.keys и extended-std.keys, которые содержат хорошо известные ключи и некоторые стандартные ключи из короткого поиска Google. Вы можете попытаться прочитать тег с этим файлом ключа, используя «Read Tag» из главного меню.

Когда вы знаете некоторые ключи, вы можете поместить их в простой текстовый файл (по одному ключу на строку). Вы можете сделать это на своем ПК и перенести файл в каталог MifareClassicTool / key-files / (на внешнее хранилище) или создать новый файл ключа через «Редактировать или добавить файл ключа» из главного меню. Если вы закончили настройку ключевого файла, вы можете прочитать тег, используя «Read Tag» в главном меню.

Преимущества концепции ключевых файлов:

Вам не нужно беспокоиться о том, какой ключ для какого сектора.
Приложение пытается пройти аутентификацию со всеми ключами от ключа
Вам не нужно знать все ключи.
Если ни ключ A, ни ключ B для определенного сектора не найдены в файле ключей (словаре), приложение пропустит чтение указанного сектора.

Этот процесс отображения на основе словарной атаки (ключи <-> секторы) позволяет вам читать как можно больше с помощью известных вам ключей!

Характеристики

Читать MIFARE Classic теги
Сохраняйте, редактируйте и публикуйте прочитанные вами данные тегов.
Пишите в теги MIFARE Classic (блочно)
Клон MIFARE Классические метки
(Записать дамп тега в другой тег; напишите «dump-wise»)
Управление ключами на основе словаря-атаки
(Запишите известные вам ключи в файл (словарь).
MCT попытается аутентифицироваться с этими
ключи от всех секторов и читать как можно больше.
Смотрите главу Начало работы. Отформатируйте тег обратно к заводскому состоянию / состоянию доставки
Написать производителю блок специальных меток MIFARE Classic
Создавать, редактировать, сохранять и делиться ключевыми файлами (словарями)
Декодировать и кодировать MIFARE Классические блоки значений
Декодировать и кодировать MIFARE Классические условия доступа
Показать общую информацию тега
Отображать данные тега в виде выделенного шестнадцатеричного
Отобразить данные тега как 7-битный US-ASCII
Отображение условий доступа MIFARE Classic в виде таблицы
Показывать классические блоки значений MIFARE как целые числа
In-App (офлайн) помощь и информация
Это бесплатное программное обеспечение (с открытым исходным кодом). ;)

В новой версии программы используется технология чтения NDEF.

package com.android.nfcexclusive.nfcexclusive;

import android.nfc.FormatException;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.Tag;
import android.nfc.tech.Ndef;
import android.nfc.tech.NfcA;
import android.nfc.tech.NfcB;
import android.util.Log;

import java.io.IOException;
import java.nio.charset.Charset;

/**
 * Created by c0de on 21.05.2017.
 */

public class Ndefclass {
    public static void write(Tag tag, String text) {
        try {
            NdefRecord[] records = {
                    new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, new byte[0], text.getBytes("US-ASCII"))
            };
            NdefMessage message = new NdefMessage(records);
            Ndef ndef = Ndef.get(tag);
            ndef.connect();
            ndef.writeNdefMessage(message);
            ndef.close();
        } catch(IOException | FormatException e) {
            e.printStackTrace();
        }
    }
    public static String read(Tag tag) {
        try {
            Ndef ndef = Ndef.get(tag);
            ndef.connect();
            NdefRecord[] records = ndef.getNdefMessage().getRecords();
            String text = "";
            for(NdefRecord record : records) {
                text += new String(record.getPayload());
            }
            ndef.close();
            return text;
        } catch(IOException |FormatException e) {
            e.printStackTrace();
        }
        return null;
    }
}

Теперь можно считывать больше RFID меток.

Исходный код

Данное программное обеспечение распространяется под лицензией GNU General Public License v3.0 (GPLv3). ПО имеет исходный код, который можно найти и изучить здесь.

Written on