powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / где что почитать про чтение\запись nfc карт Mifare
62 сообщений из 62, показаны все 3 страниц
где что почитать про чтение\запись nfc карт Mifare
    #39034742
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть вот такой ридер карт
Есть под него карточки на 1K

Нужно научится читать и писать на них информацию.
Сколько не искал, все какие то готовые программки под конкретный тип ридера.
Может кто подскажет что почитать чтоб разобраться и понять как с ними работать?

PS использовать их нужно в приложении под WinForms, потом написал сюда.


--
понимать что ты чего-то не знаешь - мудро,
понимать что ты даже не знаешь, что чего-то не знаешь - печально,
но это факт, который таки очень полезно понимать :-)
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39034951
Фотография Ken@t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolek,

Правильно, сначала изучить PC/SC API ридера затем изучить , что такое MIFARE 1K , изучить AN10787 MIFARE Application Directory (MAD) . Или в случае кастомного хранения данных на карте писать в сектора. Не совсем понятен вопрос ваш.
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39034977
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ken@t,
да, API ридера читаю, спецификацию на MIFARE 1K читаю, но может есть в более доступном виде? может и на русском ? а то сложновато пока, не сталкивался раньше с программированием железяк .. раньше все формочки да базешки..

а сами вопросы просты:
1. как прочитать значение из нужного блока нужного сектора
2. как это перевести в простые типы (int, decimal, datetime, string)
3. как значения простых типов записать в нужный блок нужного сектора
и это все на c#

если можно, напишу в личку, у вас адрес скрыт

PS пока я понял что надо пользоваться методами из Winscard.dll
https://msdn.microsoft.com/en-us/library/windows/desktop/aa380141(v=vs.85).aspx
но до понимания еще не дошел
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39035011
Фотография Ken@t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolek,

1. C сайта документацию скачайте
2. Лист 8-9 алгоритм подключения к ридеру и функции API да ещё и ссылками на мсдн
3. APDU командами производите считывание / запись / управление с 27 листа примеры с картинками 29 лист ваш mifare

4. любой тип данных это набор байт 1-2-4-8- итд, либо делаете структуру и пишите на карту в сектора или используете MAD.
Можно как вариант TLV X.690 стандарт.

И прежде всего понимание предметной области применения и сами, сами или адресная консультация , но это работа с вознаграждением
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39035254
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39036314
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С помощью pcsc-sharp получилось увидеть карту, но с этими APDU командами что-то труба совсем.
И по-русски информации практически нет или я плохо искал? Посоветуйте какие-нить нормальные мануалы по этим APDU (( ?
Как я понял для доступа к каждому блоку нужна авторизация (на каждый блок своя авторизация)
Для карт есть ключи А и B по умолчанию, но их как то можно поменять , опять же командой ADPU чтоб потом не всякий смог прочитать блоки?
Ключи тогда должны быть зашиты в коде управления ридером?
Не укладывается понятие записи в []byte структуру ((
Каша в голове (
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39036386
Фотография Ken@t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolek,

Application Programming Interface API Driver Manual of ACR1252U NFC Forum-Certified Reader скачайте с сайта , страница 30 apdu ваши

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
[StructLayout(LayoutKind.Sequential, Pack = 1)]
    struct MPCard 
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] PersonalAccountNumber; 
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 26)]
        public byte[] PersonTitle;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] // YYMM or BLANK
        public byte[] ExpiryDate;   
        [MarshalAs(UnmanagedType.U1, SizeConst = 1)] 
        public byte PVKI;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] 
        public byte[] PVV;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 185)]  
        public byte[] DiscretionaryData;
       
    }
 {
        public static byte[] Serialization<T>(T instance)
        {

            Byte[] bytes = new Byte[Marshal.SizeOf(typeof(T))];

            IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(T)));

            Marshal.StructureToPtr(instance, ptr, false);
            Marshal.Copy(ptr, bytes, 0, Marshal.SizeOf(typeof(T)));
            Marshal.FreeHGlobal(ptr);
            return bytes;
        }

        public static T Deserialization<T>(byte[] data)
        {
            int rawsize = Marshal.SizeOf(typeof(T));
            if (rawsize > data.Length)
            {
                return default(T);
            }
            IntPtr buffer = Marshal.AllocHGlobal(rawsize);
            Marshal.Copy(data, 0, buffer, rawsize);
            object retobj = Marshal.PtrToStructure(buffer, typeof(T));
            Marshal.FreeHGlobal(buffer);
            return (T)retobj;
        }
    }
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39038146
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ken@t,

Спасибо за пример сериализации.
Создал свою структуру карты для удобной работы с данными карты.
Создал структуру согласно секторам и блокам карты с типами свойств byte[]
Создал хелперы для перевода из одной структуры в другую. Все отлично работает.

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

Вот тут немного по-русски написано: о APDU командах

С моем типе карты (mifare 1k), 16 секторов, по 4 блока каждый. Каждый блок по 16 байт. В каждом секторе блоки 1,2,3 - данные, 4 - для авторизации к сектору.
Авторизация - это запись в блок 4 каждого сектора ключей (типа A и B), признака какой ключ использовать на чтение и какой на запись). Особенность первого сектора в том что его блок 1 заполнен уникальным идентификатором карты и доступен только на чтение.
При изготовлении на карте прописаны значения ключей A и B и тип доступа по умолчанию (не понял только какие именно, где-то пишут что там 0 а где-то 1, где-то пишут в 16ричном формате , где-то в 10тичном, где посмотреть правильные значения не понял)

Начнем с простой команды, просто прочитать нужный
Формат читающей команды, C-APDU :
Header: CLA INS P1 P2
Body: [Lc field] [Data field] [Le field]

Что есть что:
CLA - Class байт. Содержит метаданные команды (логический канал, Secure Messaging и т.д.).
Вот ваще не понятно: что за канал, в каком случаем какой он? чем определяется?
Смотрим стандарт:
Видимо CLA это признак типа команды, как ее надо интерпретировать при передачи в картридер
Одно из возможных значений: FF - зарезервировано для PTS (что такое PTS не понятно)
В демке к pcsc-sharp команда на чтение первого сектора имеет CLA = FF, в каких случаях оно должно быть другое не понял

INS - Instruction байт. Код инструкции. Это шестнадцатеричное число, старший ниббл которого не может быть 6 или 9. При этом младший ниббл всегда является четным числом.
По русски это тип команды, что именно нужно сделать кардридеру ?
Смотрим в стандарте варианты: Table 11 - INS codes defined in this part of ISO/IEC 7816
Понимаем что для чтения нужно значение INS = 'CA'

Далее самое интересное: параметры P1 P2, это как бы параметры смысл и необходимость которых зависит от INS
Смотрим в стандарте: 5.4.3 Parameter bytes и ничего не понимаем

А где указаваются адреса сектора и блоков которые хотим прочитать ?
Где и как авторизироваться для нужного сектора ?

В демке pcsc-sharp вот такой код нормально читает идентификатор карты из первого блока первого (нулевого) сектора:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
 using (var context = new SCardContext()) {
                context.Establish(SCardScope.System);

                var readerNames = context.GetReaders();
                if (readerNames == null || readerNames.Length < 1) {
                    Console.WriteLine("You need at least one reader in order to run this example.");
                    Console.ReadKey();
                    return;
                }

                var readerName = ChooseRfidReader(readerNames);
                if (readerName == null) {
                    return;
                }

                using (var rfidReader = new SCardReader(context)) {

                    var sc = rfidReader.Connect(readerName, SCardShareMode.Shared, SCardProtocol.Any);
                    if (sc != SCardError.Success) {
                        Console.WriteLine("Could not connect to reader {0}:\n{1}",
                            readerName,
                            SCardHelper.StringifyError(sc));
                        Console.ReadKey();
                        return;
                    }
                    
                    var apdu = new CommandApdu(IsoCase.Case2Short, rfidReader.ActiveProtocol) {
                        CLA = 0xFF,
                        Instruction = InstructionCode.GetData,
                        P1 = 0x00,
                        P2 = 0x00,
                        Le = 0  // We don't know the ID tag size
                    };

                    sc = rfidReader.BeginTransaction();
                    if (sc != SCardError.Success) {
                        Console.WriteLine("Could not begin transaction.");
                        Console.ReadKey();
                        return;
                    }

                    Console.WriteLine("Retrieving the UID .... ");

                    var receivePci = new SCardPCI(); // IO returned protocol control information.
                    var sendPci = SCardPCI.GetPci(rfidReader.ActiveProtocol);

                    var receiveBuffer = new byte[256];
                    var command = apdu.ToArray();

                    sc = rfidReader.Transmit(
                        sendPci,            // Protocol Control Information (T0, T1 or Raw)
                        command,            // command APDU
                        receivePci,         // returning Protocol Control Information
                        ref receiveBuffer); // data buffer

                    if (sc != SCardError.Success) {
                        Console.WriteLine("Error: " + SCardHelper.StringifyError(sc));
                    }

                    var responseApdu = new ResponseApdu(receiveBuffer, IsoCase.Case2Short, rfidReader.ActiveProtocol);
                    Console.Write("SW1: {0:X2}, SW2: {1:X2}\nUid: {2}", 
                        responseApdu.SW1, 
                        responseApdu.SW2, 
                        responseApdu.HasData ? BitConverter.ToString(responseApdu.GetData()) : "No uid received");

                    rfidReader.EndTransaction(SCardReaderDisposition.Leave);
                    rfidReader.Disconnect(SCardReaderDisposition.Reset);

                    Console.ReadKey();
                }
            }


но где там авторизация, где указано из какого сектора/блока читать непонятно ((

До понимание структуры Body еще не дошел вообще ...

Уфффф... прошу пояснить и направить ...
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39039641
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, прошу помощи:

вот пример:
отправляем команду в ридер: FF-CA-00-00-00 (тут из осмысленного только CA - команда GetData, остальное - значения не используются)
получаем ответ: E1-B7-46-D9-90-00, тут 90-00 - признак успешности операции, а E1-B7-46-D9 - как я понял, идентификатор карты
переводим его в число : BitConverter.ToUInt32(responseApdu.GetData(), 0) и получаем например ИД карты = 3645290465, проверил это с помощью найденных демо программ работы mifare 1k картами, вроде совпадает

но что непонятно:
1. в карте 16 секторов, по 4 блока (3 из которых под хранимые значения) , где мы в команде на чтение указали, что надо прочитать именно первый блок первого сектора (именно там хранится зашитый производителем идентификатор карты) ?
2. в стандарте написано что для чтения и записи необходима авторизация для каждого сектора своими ключами (возможно они могут быть одинаковые), но где мы в команде на чтение указываем эти ключи ?

не могу сдвинуться дальше в понимании...

может быть чтение CA - команда GetData подразумевает чтение сразу всех данных карты ? а потом уж парсинг того что получили? но как тогда авторизовываться для каждого блока в отдельности ?

мне нужно: поменять ключи по умолчанию на свои (для чтения и записи), читать одними ключами, а писать другими, чтобы пользователь без нужных прав не смог прочитать и изменить содержимое карты
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39039738
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekКоллеги, прошу помощи:

вот пример:
отправляем команду в ридер: FF-CA-00-00-00 (тут из осмысленного только CA - команда GetData, остальное - значения не используются)
получаем ответ: E1-B7-46-D9-90-00, тут 90-00 - признак успешности операции, а E1-B7-46-D9 - как я понял, идентификатор карты
переводим его в число : BitConverter.ToUInt32(responseApdu.GetData(), 0) и получаем например ИД карты = 3645290465, проверил это с помощью найденных демо программ работы mifare 1k картами, вроде совпадает

но что непонятно:
1. в карте 16 секторов, по 4 блока (3 из которых под хранимые значения) , где мы в команде на чтение указали, что надо прочитать именно первый блок первого сектора (именно там хранится зашитый производителем идентификатор карты) ?
2. в стандарте написано что для чтения и записи необходима авторизация для каждого сектора своими ключами (возможно они могут быть одинаковые), но где мы в команде на чтение указываем эти ключи ?

не могу сдвинуться дальше в понимании...

может быть чтение CA - команда GetData подразумевает чтение сразу всех данных карты ? а потом уж парсинг того что получили? но как тогда авторизовываться для каждого блока в отдельности ?

мне нужно: поменять ключи по умолчанию на свои (для чтения и записи), читать одними ключами, а писать другими, чтобы пользователь без нужных прав не смог прочитать и изменить содержимое карты
Команда FA C0 00 00 00 - получение идентификатора карты. Карты Mifare - проприетарные. Они лишь частично соответствуют станарту 14443 (после 4 части пошли по своему пути). Для чтения блока карты Mifare надо использовать последовательность команд аутентификация сектора - чтение блока. И, соответственно, требуется чтобы ключ на чтение блока совпадал с ключом в слоте ридера.
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39039742
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelavikLelikBolekКоллеги, прошу помощи:

вот пример:
отправляем команду в ридер: FF-CA-00-00-00 (тут из осмысленного только CA - команда GetData, остальное - значения не используются)
получаем ответ: E1-B7-46-D9-90-00, тут 90-00 - признак успешности операции, а E1-B7-46-D9 - как я понял, идентификатор карты
переводим его в число : BitConverter.ToUInt32(responseApdu.GetData(), 0) и получаем например ИД карты = 3645290465, проверил это с помощью найденных демо программ работы mifare 1k картами, вроде совпадает

но что непонятно:
1. в карте 16 секторов, по 4 блока (3 из которых под хранимые значения) , где мы в команде на чтение указали, что надо прочитать именно первый блок первого сектора (именно там хранится зашитый производителем идентификатор карты) ?
2. в стандарте написано что для чтения и записи необходима авторизация для каждого сектора своими ключами (возможно они могут быть одинаковые), но где мы в команде на чтение указываем эти ключи ?

не могу сдвинуться дальше в понимании...

может быть чтение CA - команда GetData подразумевает чтение сразу всех данных карты ? а потом уж парсинг того что получили? но как тогда авторизовываться для каждого блока в отдельности ?

мне нужно: поменять ключи по умолчанию на свои (для чтения и записи), читать одними ключами, а писать другими, чтобы пользователь без нужных прав не смог прочитать и изменить содержимое карты
Команда FA C0 00 00 00 - получение идентификатора карты. Карты Mifare - проприетарные. Они лишь частично соответствуют станарту 14443 (после 4 части пошли по своему пути). Для чтения блока карты Mifare надо использовать последовательность команд аутентификация сектора - чтение блока. И, соответственно, требуется чтобы ключ на чтение блока совпадал с ключом в слоте ридера.
Разберитесь для начала с командами. Скачайте простенькое приложение, которое посредством APDU команд позволит Вам общаться через ридер с картами. А потом уже эти "отработанные" команды используйте в своем приложении
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39039747
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще, в соответствии со спецификацией на Mifare - переводить шестнадцатеричный идентификатор карты в другие форматы - дурной тон
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39039751
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekКак я понял для доступа к каждому блоку нужна авторизация (на каждый блок своя авторизация)
С помощью команд аутентификации - аутентифицируется по любому блоку весь сектор. Так что, если хотите прочитать весь сектор, достаточно произвести аутентификацию по-любому блоку из этого сектора. В картах Mifare Plus - если у секторов ключи совпадают - достаточно тоже одной аутентификации.
LelikBolekДля карт есть ключи А и B по умолчанию, но их как то можно поменять , опять же командой ADPU чтоб потом не всякий смог прочитать блоки?
Перезаписываются командой Write
LelikBolekКлючи тогда должны быть зашиты в коде управления ридером?
Ключи должны быть в памяти считывателя (в энергозащищенной или энергонезащищенной)
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040131
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelavikИ еще, в соответствии со спецификацией на Mifare - переводить шестнадцатеричный идентификатор карты в другие форматы - дурной тон
А чем это плохо ? Если это идентификатор уникальный, а мне дальше этот идентификатор надо использовать в учетной системе для привязки данных владельца карты к карте.
Я и думал переведенный идентификатор использовать как ID карты. В чем могут быть грабли ?
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040346
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekBelavikИ еще, в соответствии со спецификацией на Mifare - переводить шестнадцатеричный идентификатор карты в другие форматы - дурной тон
А чем это плохо ? Если это идентификатор уникальный, а мне дальше этот идентификатор надо использовать в учетной системе для привязки данных владельца карты к карте.
Я и думал переведенный идентификатор использовать как ID карты. В чем могут быть грабли ?
Этот идентификатор не у всех карт уникален. Можешь почитать MIFARE and handling of UIDs
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040388
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelavikLelikBolekпропущено...

А чем это плохо ? Если это идентификатор уникальный, а мне дальше этот идентификатор надо использовать в учетной системе для привязки данных владельца карты к карте.
Я и думал переведенный идентификатор использовать как ID карты. В чем могут быть грабли ?
Этот идентификатор не у всех карт уникален. Можешь почитать MIFARE and handling of UIDs
Хм, там же в самом начале написано:
Note: A UID is not a “serial number”, but a unique identifier. There is no recommendation
how to turn the array of bytes into an integer.

Я понял так что UID это не серийный номер, но это уникальный идентификатор. Не существует рекомендаций по переводу байтов в число, т.е. как хотите так и переводите.
В чем же грабли ?
Там же описываются рекомендации по совместной работе с 4х байтными и 7ми байтными идентификаторами.. Пока не понял зачем мне 7ми байтные, если 4х байтный (если не серые китайские карты) и так обеспечат мне уникальность ...
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040653
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще по поводу UID:

читаем UID командой GET DATA: {FF CA 00 00 00 } получаем UID: E1B746D9
читаем первый блок первого сектора командой READ BINARY: {FF B0 00 00 10} получаем значение manufactured блока: E1B746D9 C9080400016B91281520481D
видим что первые 4 байта - это тот же самый UID, а что тогда означают оставшиеся 12 байт ?
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040714
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekЕще по поводу UID:

читаем UID командой GET DATA: {FF CA 00 00 00 } получаем UID: E1B746D9
читаем первый блок первого сектора командой READ BINARY: {FF B0 00 00 10} получаем значение manufactured блока: E1B746D9 C9080400016B91281520481D
видим что первые 4 байта - это тот же самый UID, а что тогда означают оставшиеся 12 байт ?
Эти UID могу не совпадать. UID не всегда уникален. Зависит от того, в каком диапазоне его значение.
Максимальное значение в 4 байта - 4.294.967.295 - уже давно исчерпано
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040715
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelavikLelikBolekЕще по поводу UID:

читаем UID командой GET DATA: {FF CA 00 00 00 } получаем UID: E1B746D9
читаем первый блок первого сектора командой READ BINARY: {FF B0 00 00 10} получаем значение manufactured блока: E1B746D9 C9080400016B91281520481D
видим что первые 4 байта - это тот же самый UID, а что тогда означают оставшиеся 12 байт ?
Эти UID могу не совпадать. UID не всегда уникален. Зависит от того, в каком диапазоне его значение.
Максимальное значение в 4 байта - 4.294.967.295 - уже давно исчерпано
В тех 12 байтах производитель может писать что угодно. Встречал инфу о чипе
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040719
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekЕще по поводу UID:

читаем UID командой GET DATA: {FF CA 00 00 00 } получаем UID: E1B746D9
читаем первый блок первого сектора командой READ BINARY: {FF B0 00 00 10} получаем значение manufactured блока: E1B746D9 C9080400016B91281520481D
видим что первые 4 байта - это тот же самый UID, а что тогда означают оставшиеся 12 байт ?
В некоторых картах нулевой блок нулевого сектора читается без аутентификации
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040724
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelavikЭти UID могу не совпадать. UID не всегда уникален. Зависит от того, в каком диапазоне его значение.
Максимальное значение в 4 байта - 4.294.967.295 - уже давно исчерпано
и как с этим жить ? как по правильному обеспечить уникальность карты ?
считать 4 байтное UID командой CA
сгенерить еще 4 байта (например) от случайного числа, записать его в блок 2 сектора 0
и потом получая UID складывать эти два значений (склеивать) ?
или есть более правильные способы ?
или в http://www.nxp.com/documents/application_note/AN10927.pdf об этом и говорится. но я не понял ?
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040727
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekBelavikЭти UID могу не совпадать. UID не всегда уникален. Зависит от того, в каком диапазоне его значение.
Максимальное значение в 4 байта - 4.294.967.295 - уже давно исчерпано
и как с этим жить ? как по правильному обеспечить уникальность карты ?
считать 4 байтное UID командой CA
сгенерить еще 4 байта (например) от случайного числа, записать его в блок 2 сектора 0
и потом получая UID складывать эти два значений (склеивать) ?
или есть более правильные способы ?
или в http://www.nxp.com/documents/application_note/AN10927.pdf об этом и говорится. но я не понял ?
Пиши в свободный блок свое число. Или надейся что дубликат карты не попадется
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040729
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelavikLelikBolekпропущено...

и как с этим жить ? как по правильному обеспечить уникальность карты ?
считать 4 байтное UID командой CA
сгенерить еще 4 байта (например) от случайного числа, записать его в блок 2 сектора 0
и потом получая UID складывать эти два значений (склеивать) ?
или есть более правильные способы ?
или в http://www.nxp.com/documents/application_note/AN10927.pdf об этом и говорится. но я не понял ?
Пиши в свободный блок свое число. Или надейся что дубликат карты не попадется
МОжно проанализировать uid по значению и понять, может ли у него быть дубликат
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040732
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelavikBelavikпропущено...

Пиши в свободный блок свое число. Или надейся что дубликат карты не попадется
МОжно проанализировать uid по значению и понять, может ли у него быть дубликат
см таблицу на стр №5
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040743
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelavikBelavikпропущено...

МОжно проанализировать uid по значению и понять, может ли у него быть дубликат
см таблицу на стр №5
что-то не осилил ту таблицу:
вот два singeUid: E1B746D9 и 6ADC50D5 как им правильно проанализировать на возможность дубликатов ?
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040750
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LelikBolekBelavikпропущено...

см таблицу на стр №5
что-то не осилил ту таблицу:
вот два singeUid: E1B746D9 и 6ADC50D5 как им правильно проанализировать на возможность дубликатов ?

они относятся к :
x0... x7 Proprietary use (i.e. used for MIFARE) appr. 2.1 billion
т.е. у эти две карты белые и по идее повторяться не должны ?
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040761
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekLelikBolekпропущено...

что-то не осилил ту таблицу:
вот два singeUid: E1B746D9 и 6ADC50D5 как им правильно проанализировать на возможность дубликатов ?

они относятся к :
x0... x7 Proprietary use (i.e. used for MIFARE) appr. 2.1 billion
т.е. у эти две карты белые и по идее повторяться не должны ?
да
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040767
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelavikLelikBolekпропущено...
они относятся к :
x0... x7 Proprietary use (i.e. used for MIFARE) appr. 2.1 billion
т.е. у эти две карты белые и по идее повторяться не должны ?
да
может тогда правильнее генерить GUID на клиенте, например:
{654B34C0-48F4-45C5-A27E-ABCD354BF98D}
если убрать лишние разделители то
654B34C048F445C5A27EABCD354BF98D
он как раз 16 байт, попробовал записать \ считать - получилось
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040782
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekBelavikпропущено...

да
может тогда правильнее генерить GUID на клиенте, например:
{654B34C0-48F4-45C5-A27E-ABCD354BF98D}
если убрать лишние разделители то
654B34C048F445C5A27EABCD354BF98D
он как раз 16 байт, попробовал записать \ считать - получилось
Если ты используешь обычные карты Mifare Classic, то вероятность напороться на дубликат по UID почти нулю (по моим данным). Не уникальные UID используются на других картах
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040787
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelavikLelikBolekпропущено...

может тогда правильнее генерить GUID на клиенте, например:
{654B34C0-48F4-45C5-A27E-ABCD354BF98D}
если убрать лишние разделители то
654B34C048F445C5A27EABCD354BF98D
он как раз 16 байт, попробовал записать \ считать - получилось
Если ты используешь обычные карты Mifare Classic, то вероятность напороться на дубликат по UID почти нулю (по моим данным). Не уникальные UID используются на других картах
Но есть возможность попасть на карту от NXP и на ее клон по UID от Китайцев)))
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040791
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelavikBelavikпропущено...

Если ты используешь обычные карты Mifare Classic, то вероятность напороться на дубликат по UID почти нулю (по моим данным). Не уникальные UID используются на других картах
Но есть возможность попасть на карту от NXP и на ее клон по UID от Китайцев)))
Если уверен что чипы оригинальные - можно особо не заморачиваться) В проекте сколько карт будет использоваться?
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040802
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelavikBelavikпропущено...

Но есть возможность попасть на карту от NXP и на ее клон по UID от Китайцев)))
Если уверен что чипы оригинальные - можно особо не заморачиваться) В проекте сколько карт будет использоваться?
не могу сказать сколько, зависит от числа клиентов )) (бонусные карты)
и где потом эти карты будут покупаться - я не знаю и не могу предположить, у меня есть только сам ридер и несколько карт для тренировки
видимо вариант с генерацией и хранением на карте guid-а предпочтительнее ?
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39040904
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekBelavikпропущено...

Если уверен что чипы оригинальные - можно особо не заморачиваться) В проекте сколько карт будет использоваться?
не могу сказать сколько, зависит от числа клиентов )) (бонусные карты)
и где потом эти карты будут покупаться - я не знаю и не могу предположить, у меня есть только сам ридер и несколько карт для тренировки
видимо вариант с генерацией и хранением на карте guid-а предпочтительнее ?
Я бы хранил оба числа
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39041116
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Продолжаю копаться с картами mifare 1k

Загружаю ключ по умолчанию:
Load Authentication Keys: FF-82-00-00-06-FF-FF-FF-FF-FF-FF,SW1 SW2 = 90 00

Затем в цикле бегу по 4 блоку каждого сектора и пробую авторизоваться.
Первая попытка всегда не удачная, а последующие удачные :-(
Т.е. если начинаю с первого 4 блока (0х03) первого сектора, то к нему не успешно, а последующие успешны.
Добавил первым авторизацию к первому блоку первого сектора (0х00), тогда к нему не успешно а уже с 4 блока этого же первого сектора - успешно.

Вот лог:

Load Authentication Keys: FF-82-00-00-06-FF-FF-FF-FF-FF-FF,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-00-60-00,SW1 SW2 = 63 00
Authenticate: FF-86-00-00-05-01-00-03-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-07-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-0B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-0F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-13-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-17-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-1B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-1F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-23-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-27-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-2B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-2F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-33-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-37-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-3B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-3F-60-00,SW1 SW2 = 90 00

вот если убрать авторизацию к первому блоку первого сектора

Load Authentication Keys: FF-82-00-00-06-FF-FF-FF-FF-FF-FF,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-03-60-00,SW1 SW2 = 63 00
Authenticate: FF-86-00-00-05-01-00-07-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-0B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-0F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-13-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-17-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-1B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-1F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-23-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-27-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-2B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-2F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-33-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-37-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-3B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-3F-60-00,SW1 SW2 = 90 00

Почему так?
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39041197
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekПродолжаю копаться с картами mifare 1k

Загружаю ключ по умолчанию:
Load Authentication Keys: FF-82-00-00-06-FF-FF-FF-FF-FF-FF,SW1 SW2 = 90 00

Затем в цикле бегу по 4 блоку каждого сектора и пробую авторизоваться.
Первая попытка всегда не удачная, а последующие удачные :-(
Т.е. если начинаю с первого 4 блока (0х03) первого сектора, то к нему не успешно, а последующие успешны.
Добавил первым авторизацию к первому блоку первого сектора (0х00), тогда к нему не успешно а уже с 4 блока этого же первого сектора - успешно.

Вот лог:

Load Authentication Keys: FF-82-00-00-06-FF-FF-FF-FF-FF-FF,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-00-60-00,SW1 SW2 = 63 00
Authenticate: FF-86-00-00-05-01-00-03-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-07-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-0B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-0F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-13-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-17-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-1B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-1F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-23-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-27-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-2B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-2F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-33-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-37-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-3B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-3F-60-00,SW1 SW2 = 90 00

вот если убрать авторизацию к первому блоку первого сектора

Load Authentication Keys: FF-82-00-00-06-FF-FF-FF-FF-FF-FF,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-03-60-00,SW1 SW2 = 63 00
Authenticate: FF-86-00-00-05-01-00-07-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-0B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-0F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-13-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-17-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-1B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-1F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-23-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-27-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-2B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-2F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-33-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-37-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-3B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-3F-60-00,SW1 SW2 = 90 00

Почему так?
Нулевой сектор 3-й блок перезаписывал? Можешь его прочитать? Или ключи запорол или биты доступа выставил не так. А может и еще что
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39041201
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelavikLelikBolekПродолжаю копаться с картами mifare 1k

Загружаю ключ по умолчанию:
Load Authentication Keys: FF-82-00-00-06-FF-FF-FF-FF-FF-FF,SW1 SW2 = 90 00

Затем в цикле бегу по 4 блоку каждого сектора и пробую авторизоваться.
Первая попытка всегда не удачная, а последующие удачные :-(
Т.е. если начинаю с первого 4 блока (0х03) первого сектора, то к нему не успешно, а последующие успешны.
Добавил первым авторизацию к первому блоку первого сектора (0х00), тогда к нему не успешно а уже с 4 блока этого же первого сектора - успешно.

Вот лог:

Load Authentication Keys: FF-82-00-00-06-FF-FF-FF-FF-FF-FF,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-00-60-00,SW1 SW2 = 63 00
Authenticate: FF-86-00-00-05-01-00-03-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-07-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-0B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-0F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-13-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-17-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-1B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-1F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-23-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-27-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-2B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-2F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-33-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-37-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-3B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-3F-60-00,SW1 SW2 = 90 00

вот если убрать авторизацию к первому блоку первого сектора

Load Authentication Keys: FF-82-00-00-06-FF-FF-FF-FF-FF-FF,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-03-60-00,SW1 SW2 = 63 00
Authenticate: FF-86-00-00-05-01-00-07-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-0B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-0F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-13-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-17-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-1B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-1F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-23-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-27-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-2B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-2F-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-33-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-37-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-3B-60-00,SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-3F-60-00,SW1 SW2 = 90 00

Почему так?
Нулевой сектор 3-й блок перезаписывал? Можешь его прочитать? Или ключи запорол или биты доступа выставил не так. А может и еще что
А нет, логи не досмотрел. Нашел утилиту для работы с картой через PC/SC? Или все проходит через твой код?
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39041213
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelavikНулевой сектор 3-й блок перезаписывал? Можешь его прочитать? Или ключи запорол или биты доступа выставил не так. А может и еще что

да сектор перезаписывал, но сторонней утилиткой его читаю, да и своей прогой тоже, просто не с первого раза

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

лишняя авторизация к первому блоку нулевого сектора решает проблему, но это ж явно костыль ...


Load Authentication Keys: FF-82-00-00-06-FF-FF-FF-FF-FF-FF, SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-00-60-00, SW1 SW2 = 63 00
Authenticate: FF-86-00-00-05-01-00-03-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-00-10, SW1 SW2 = 90 00, Data = E1-B7-46-D9-C9-08-04-00-01-6B-91-28-15-20-48-1D
Read Binary: FF-B0-00-01-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-02-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-03-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-07-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-04-10, SW1 SW2 = 90 00, Data = 65-4B-34-C0-48-F4-45-C5-A2-7E-AB-CD-35-4B-F9-8D
Read Binary: FF-B0-00-05-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-06-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-07-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-0B-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-08-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-09-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-0A-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-0B-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-0F-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-0C-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-0D-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-0E-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-0F-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-13-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-10-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-11-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-12-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-13-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-17-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-14-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-15-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-16-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-17-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-1B-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-18-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-19-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-1A-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-1B-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-1F-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-1C-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-1D-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-1E-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-1F-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-23-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-20-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-21-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-22-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-23-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-27-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-24-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-25-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-26-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-27-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-2B-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-28-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-29-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-2A-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-2B-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-2F-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-2C-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-2D-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-2E-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-2F-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-33-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-30-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-31-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-32-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-33-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-37-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-34-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-35-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-36-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-37-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-3B-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-38-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-39-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-3A-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-3B-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-3F-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-3C-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-3D-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-3E-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-3F-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF


еще странности:

видим что в 4 блоке каждого сектора значение: 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
я так понял что ключ A - 00-00-00-00-00-00
ключ Б - FF-FF-FF-FF-FF-FF
маска доступа к сектору: FF-07-80-69

раз у меня чтение проходит, значит авторизация проходит ключем B ?
но у меня команда авторизации FF-86-00-00-05-01-00-03-60-00, тут значение цыфири 60 говорит что авторизация ключом А, а пустой ключ я вообще в ридер командрой загрузки ключей не загружал.. как это работает ?

и где почитать про формат маски доступа, гдето видел но не вспомню где ((
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39041220
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelavikА нет, логи не досмотрел. Нашел утилиту для работы с картой через PC/SC? Или все проходит через твой код?
да нашел и ей читается все и с первого раза:
загрузил ключ в ридер (ключь именно FF-FF-FF-FF-FF-FF, вот так: FF-82-00-00-06-FF-FF-FF-FF-FF-FF, SW1 SW2 = 90 00
авторизация в последнему блоку в секторе
чтение любого блока в секторе
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39041227
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и перезаписывал я первый блок первого сектора, там как раз какоето значение лежит, видно в логе, а третий блок нулевого вроде не трогал
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39041274
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekBelavikНулевой сектор 3-й блок перезаписывал? Можешь его прочитать? Или ключи запорол или биты доступа выставил не так. А может и еще что

да сектор перезаписывал, но сторонней утилиткой его читаю, да и своей прогой тоже, просто не с первого раза

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

лишняя авторизация к первому блоку нулевого сектора решает проблему, но это ж явно костыль ...


Load Authentication Keys: FF-82-00-00-06-FF-FF-FF-FF-FF-FF, SW1 SW2 = 90 00
Authenticate: FF-86-00-00-05-01-00-00-60-00, SW1 SW2 = 63 00
Authenticate: FF-86-00-00-05-01-00-03-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-00-10, SW1 SW2 = 90 00, Data = E1-B7-46-D9-C9-08-04-00-01-6B-91-28-15-20-48-1D
Read Binary: FF-B0-00-01-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-02-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-03-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-07-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-04-10, SW1 SW2 = 90 00, Data = 65-4B-34-C0-48-F4-45-C5-A2-7E-AB-CD-35-4B-F9-8D
Read Binary: FF-B0-00-05-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-06-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-07-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-0B-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-08-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-09-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-0A-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-0B-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-0F-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-0C-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-0D-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-0E-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-0F-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-13-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-10-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-11-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-12-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-13-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-17-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-14-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-15-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-16-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-17-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-1B-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-18-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-19-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-1A-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-1B-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-1F-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-1C-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-1D-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-1E-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-1F-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-23-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-20-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-21-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-22-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-23-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-27-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-24-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-25-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-26-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-27-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-2B-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-28-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-29-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-2A-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-2B-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-2F-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-2C-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-2D-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-2E-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-2F-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-33-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-30-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-31-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-32-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-33-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-37-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-34-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-35-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-36-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-37-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-3B-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-38-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-39-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-3A-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-3B-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
Authenticate: FF-86-00-00-05-01-00-3F-60-00, SW1 SW2 = 90 00
Read Binary: FF-B0-00-3C-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-3D-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-3E-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Read Binary: FF-B0-00-3F-10, SW1 SW2 = 90 00, Data = 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF


еще странности:

видим что в 4 блоке каждого сектора значение: 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
я так понял что ключ A - 00-00-00-00-00-00
ключ Б - FF-FF-FF-FF-FF-FF
маска доступа к сектору: FF-07-80-69

раз у меня чтение проходит, значит авторизация проходит ключем B ?
но у меня команда авторизации FF-86-00-00-05-01-00-03-60-00, тут значение цыфири 60 говорит что авторизация ключом А, а пустой ключ я вообще в ридер командрой загрузки ключей не загружал.. как это работает ?

и где почитать про формат маски доступа, гдето видел но не вспомню где ((
Твои биты доступа показывают, что ключ B может быть прочитан ключом А. Собственно значение ключа и выводится. Но значение ключа А не может быть прочитано ключом A, поэтому значение выводится в виде последовательности нулей (читай как звездочки)
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39041275
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekBelavikА нет, логи не досмотрел. Нашел утилиту для работы с картой через PC/SC? Или все проходит через твой код?
да нашел и ей читается все и с первого раза:
загрузил ключ в ридер (ключь именно FF-FF-FF-FF-FF-FF, вот так: FF-82-00-00-06-FF-FF-FF-FF-FF-FF, SW1 SW2 = 90 00
авторизация в последнему блоку в секторе
чтение любого блока в секторе
Ищи ошибку в коде значит
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39041327
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelavikТвои биты доступа показывают, что ключ B может быть прочитан ключом А. Собственно значение ключа и выводится. Но значение ключа А не может быть прочитано ключом A, поэтому значение выводится в виде последовательности нулей (читай как звездочки)

про биты доступа нашел
тут по англ, пункт 8.7.2
тут по рус, пункт 4.8.3
но не понимаю ((
у меня трейлеры блоков одинаковые: 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
судя по доке, бит 9 (со значением 69) мне ненужен
ключ А значит какой-то есть, но его значение я в трейлере не вижу, но раз чтение с ключем А по умолчанию работает, то его значение все же FF-FF-FF-FF-FF-FF. так ?
ключ B тоже есть и его значение опять же равно FF-FF-FF-FF-FF-FF, так ?

биты доступа 6,7,8 у меня: FF-07-80
С1 = FF
C2 = 07
C3 = 80

как понять при этом таблицу ?


ну и еще: что означает фраза "При чтении трейлера сектора байты с ключами обрамлены логическими нулями." или "When the sector trailer is read, the key bytes are blanked out by returning logical zeros"
где у меня эти магические логические нули в значении трэйлера ?
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39041366
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekключ А значит какой-то есть, но его значение я в трейлере не вижу, но раз чтение с ключем А по умолчанию работает, то его значение все же FF-FF-FF-FF-FF-FF. так ?
Да
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39041367
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekбиты доступа 6,7,8 у меня: FF-07-80
С1 = FF
C2 = 07
C3 = 80

как понять при этом таблицу ?
Разбирайся. Значение битов доступа надо перевести в двоичное ...
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39041368
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekну и еще: что означает фраза "При чтении трейлера сектора байты с ключами обрамлены логическими нулями." или "When the sector trailer is read, the key bytes are blanked out by returning logical zeros"
где у меня эти магические логические нули в значении трэйлера ?
Это та последовательность нулей вместо ключа A
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39048616
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelavikРазбирайся...
"И вновь продолжается бой..." (с)

Для чтения\записи блока сектора вроде как достаточно авторизоваться к одному из блоков сектора.
Без разницы к какому (к первому блоку данных или к трэйлеру с ключами и маской доступа) ?
Т.е. есть ли смысл авторизовываться к каждому блоку перед его чтением\записью (тратится лишнее время, правда пока не оценил на сколько существенное)?

Так и не победил проблему: если положить карточку на ридер, поймав событие что карта появилась, сразу начать ее считывать, то первая попытка авторизации к любому блоку - неудачная, последующие - удачные. Пока поставил костыль в виде лишней авторизации к первому блоку нулевого сектора (к нему как известно вообще авторизация для спецкоманды чтения UID-а не нужна), это "пробуждает" карту. Такой же эффект дает задержка перед чтением на 800мс (подобрал экспериментом). Если после первого чтения с неудачной первой авторизацией, сразу, не дожидаясь смены статуса карта на Unpowered, перечитать карту - первая же авторизация удачная.

PS:
А вообще, благодаря наводкам от Belavik, карты считываются, записываются, активируются, деактивируются.
За что ему человеческое спасибо!
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39048750
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще не очень понял смысл ATR, в какой момент его надо запрашивать и что из него него можно использовать ...
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39048768
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekИ еще не очень понял смысл ATR, в какой момент его надо запрашивать и что из него него можно использовать ...
Запрашивай перед чтением карты. Это ответ карты на операцию Reset. По поводу того, что она дает - смотри в спецификации (вроде в ISO-7816). Как вариант - по нему можно определить тип карты (но не всегда точно, а возможно и с ошибкой)
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39048770
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekДля чтения\записи блока сектора вроде как достаточно авторизоваться к одному из блоков сектора.
Без разницы к какому (к первому блоку данных или к трэйлеру с ключами и маской доступа) ?
Т.е. есть ли смысл авторизовываться к каждому блоку перед его чтением\записью (тратится лишнее время, правда пока не оценил на сколько существенное)?
Достаточно к одному блоку и без разницы какому (если используется PC/SC)
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39048779
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekТак и не победил проблему: если положить карточку на ридер, поймав событие что карта появилась, сразу начать ее считывать, то первая попытка авторизации к любому блоку - неудачная, последующие - удачные. Пока поставил костыль в виде лишней авторизации к первому блоку нулевого сектора (к нему как известно вообще авторизация для спецкоманды чтения UID-а не нужна), это "пробуждает" карту. Такой же эффект дает задержка перед чтением на 800мс (подобрал экспериментом).
Видимо в коде производятся какие-то операции с картой и она не готова авторизироваться. Так что в твоем случае первая ошибочная авторизация равнозначна задержки, после чего все работает без ошибок. В любом случае при работе с картой задержки в 800 мс - очень много. Думаю проблема в коде (хотя могут и карты быть косячными).
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39048781
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekИ еще не очень понял смысл ATR, в какой момент его надо запрашивать и что из него него можно использовать ...
Можешь здесь побаловаться https://smartcard-atr.appspot.com/
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39048801
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelavikLelikBolekТак и не победил проблему: если положить карточку на ридер, поймав событие что карта появилась, сразу начать ее считывать, то первая попытка авторизации к любому блоку - неудачная, последующие - удачные. Пока поставил костыль в виде лишней авторизации к первому блоку нулевого сектора (к нему как известно вообще авторизация для спецкоманды чтения UID-а не нужна), это "пробуждает" карту. Такой же эффект дает задержка перед чтением на 800мс (подобрал экспериментом).
Видимо в коде производятся какие-то операции с картой и она не готова авторизироваться. Так что в твоем случае первая ошибочная авторизация равнозначна задержки, после чего все работает без ошибок. В любом случае при работе с картой задержки в 800 мс - очень много. Думаю проблема в коде (хотя могут и карты быть косячными).
Если тебе такое время не критично - можешь оставить с задержкой (если уверен что в коде нет ошибок). Это лучше чем аутентификация с ошибкой.
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39048806
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelavikДостаточно к одному блоку и без разницы какому (если используется PC/SC)
Как то интересно я сектор запорол, сам не понял как, но вот что сейчас читается:

LoadKeyA: FF-82-00-00-06-FF-FF-FF-FF-FF-FF, SW1 SW2: 90 00, Data :
LoadKeyB: FF-82-00-01-06-FF-FF-FF-FF-FF-FF, SW1 SW2: 90 00, Data :

Authenticate: FF-86-00-00-05-01-00- 07 -60-00, SW1 SW2: 90 00, Data : //т.е. авторизация к треэйлеру 2-го сектора прошла успешно?
ERROR: ReadBinary : FF-B0-00-04-10, SW1 SW2: 63 00, Data : //а блок не читается
ERROR: ReadBinary : FF-B0-00-05-10, SW1 SW2: 63 00, Data : //а блок не читается
ERROR: ReadBinary : FF-B0-00-06-10, SW1 SW2: 63 00, Data : //а блок не читается
ERROR: ReadBinary : FF-B0-00- 07 -10, SW1 SW2: 63 00, Data : //а блок не читается

как так?
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39048812
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Belavik]Belavikпропущено...
Если тебе такое время не критично - можешь оставить с задержкой (если уверен что в коде нет ошибок). Это лучше чем аутентификация с ошибкой.
Чем лучше ?
Ошибочная авторизация происходит мгновенно, а задержка в 800 мс явно заметна ..
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39048814
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekBelavikДостаточно к одному блоку и без разницы какому (если используется PC/SC)
Как то интересно я сектор запорол, сам не понял как, но вот что сейчас читается:

LoadKeyA: FF-82-00-00-06-FF-FF-FF-FF-FF-FF, SW1 SW2: 90 00, Data :
LoadKeyB: FF-82-00-01-06-FF-FF-FF-FF-FF-FF, SW1 SW2: 90 00, Data :

Authenticate: FF-86-00-00-05-01-00- 07 -60-00, SW1 SW2: 90 00, Data : //т.е. авторизация к треэйлеру 2-го сектора прошла успешно?
ERROR: ReadBinary : FF-B0-00-04-10, SW1 SW2: 63 00, Data : //а блок не читается
ERROR: ReadBinary : FF-B0-00-05-10, SW1 SW2: 63 00, Data : //а блок не читается
ERROR: ReadBinary : FF-B0-00-06-10, SW1 SW2: 63 00, Data : //а блок не читается
ERROR: ReadBinary : FF-B0-00- 07 -10, SW1 SW2: 63 00, Data : //а блок не читается
а если аутентифицировать 4-й блок?

как так?
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39048819
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Belavik,


LelikBolekBelavikДостаточно к одному блоку и без разницы какому (если используется PC/SC)
Как то интересно я сектор запорол, сам не понял как, но вот что сейчас читается:

LoadKeyA: FF-82-00-00-06-FF-FF-FF-FF-FF-FF, SW1 SW2: 90 00, Data :
LoadKeyB: FF-82-00-01-06-FF-FF-FF-FF-FF-FF, SW1 SW2: 90 00, Data :

Authenticate: FF-86-00-00-05-01-00- 07 -60-00, SW1 SW2: 90 00, Data : //т.е. авторизация к треэйлеру 2-го сектора прошла успешно?
ERROR: ReadBinary : FF-B0-00-04-10, SW1 SW2: 63 00, Data : //а блок не читается
ERROR: ReadBinary : FF-B0-00-05-10, SW1 SW2: 63 00, Data : //а блок не читается
ERROR: ReadBinary : FF-B0-00-06-10, SW1 SW2: 63 00, Data : //а блок не читается
ERROR: ReadBinary : FF-B0-00- 07 -10, SW1 SW2: 63 00, Data : //а блок не читается

как так?
а если аутентифицировать 4-й блок?
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39048828
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Belavikа если аутентифицировать 4-й блок?
Authenticate: FF-86-00-00-05-01-00-07-60-00, SW1 SW2: 90 00, Data :

Authenticate: FF-86-00-00-05-01-00-04-60-00, SW1 SW2: 90 00, Data :
ERROR: ReadBinary : FF-B0-00-04-10, SW1 SW2: 63 00, Data :

Authenticate: FF-86-00-00-05-01-00-05-60-00, SW1 SW2: 90 00, Data :
ERROR: ReadBinary : FF-B0-00-05-10, SW1 SW2: 63 00, Data :

Authenticate: FF-86-00-00-05-01-00-06-60-00, SW1 SW2: 90 00, Data :
ERROR: ReadBinary : FF-B0-00-06-10, SW1 SW2: 63 00, Data :

Authenticate: FF-86-00-00-05-01-00-07-60-00, SW1 SW2: 90 00, Data :
ERROR: ReadBinary : FF-B0-00-07-10, SW1 SW2: 63 00, Data :

т.е. к каждому блоку сектора авторизация успешная но не блокине читаются
запорол именно я, неудачной попыткой смены маски и ключей, к сожалению лог не сохранили восстановить ошибочную команду не смог ((
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39048839
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т.е. к каждому блоку сектора авторизация успешная но не блоки не читаются
запорол именно я, неудачной попыткой смены маски и ключей, к сожалению лог не сохранили восстановить ошибочную команду не смог ((

вопрос в том, как понимать такую ситуацию, на сами блоки пофиг, карта тестовая
таких секторов у меня 2, на последующих секторах смена ключей и условий доступа получилась и теперь работает правильно, а с этими просто академический интерес
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39048851
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekBelavikа если аутентифицировать 4-й блок?
Authenticate: FF-86-00-00-05-01-00-07-60-00, SW1 SW2: 90 00, Data :

Authenticate: FF-86-00-00-05-01-00-04-60-00, SW1 SW2: 90 00, Data :
ERROR: ReadBinary : FF-B0-00-04-10, SW1 SW2: 63 00, Data :

Authenticate: FF-86-00-00-05-01-00-05-60-00, SW1 SW2: 90 00, Data :
ERROR: ReadBinary : FF-B0-00-05-10, SW1 SW2: 63 00, Data :

Authenticate: FF-86-00-00-05-01-00-06-60-00, SW1 SW2: 90 00, Data :
ERROR: ReadBinary : FF-B0-00-06-10, SW1 SW2: 63 00, Data :

Authenticate: FF-86-00-00-05-01-00-07-60-00, SW1 SW2: 90 00, Data :
ERROR: ReadBinary : FF-B0-00-07-10, SW1 SW2: 63 00, Data :

т.е. к каждому блоку сектора авторизация успешная но не блокине читаются
запорол именно я, неудачной попыткой смены маски и ключей, к сожалению лог не сохранили восстановить ошибочную команду не смог ((
Если запорол биты доступа - сектор уже не рабочий
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39048854
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikBolekт.е. к каждому блоку сектора авторизация успешная но не блоки не читаются
запорол именно я, неудачной попыткой смены маски и ключей, к сожалению лог не сохранили восстановить ошибочную команду не смог ((

вопрос в том, как понимать такую ситуацию, на сами блоки пофиг, карта тестовая
таких секторов у меня 2, на последующих секторах смена ключей и условий доступа получилась и теперь работает правильно, а с этими просто академический интерес
Значит что ключи доступа сходятся на карте и считывателе, а какие на них возложены права - определить не получилось
...
Рейтинг: 0 / 0
где что почитать про чтение\запись nfc карт Mifare
    #39048863
LelikBolek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelavikЕсли тебе такое время не критично - можешь оставить с задержкой (если уверен что в коде нет ошибок)
код то один и тотже, но:

вот начало лога после того как положил карту на ридер, автоматическое считывание карты по событию появления карты:

LoadKeyA: FF-82-00-00-06-FF-FF-FF-FF-FF-FF, SW1 SW2: 90 00, Data :
LoadKeyB: FF-82-00-01-06-FF-FF-FF-FF-FF-FF, SW1 SW2: 90 00, Data :
ERROR: Authenticate: FF-86-00-00-05-01-00-03 -60-00, SW1 SW2: 63 00, Data : //ошибочная авторизация
Authenticate: FF-86-00-00-05-01-00-[u]03 -60-00, SW1 SW2: 90 00, Data :[/u] //сразу за ней в тот же блок усешная
ReadBinary : FF-B0-00- 03 -10, SW1 SW2: 90 00, Data : 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF

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

LoadKeyA: FF-82-00-00-06-FF-FF-FF-FF-FF-FF, SW1 SW2: 90 00, Data :
LoadKeyB: FF-82-00-01-06-FF-FF-FF-FF-FF-FF, SW1 SW2: 90 00, Data :
Authenticate: FF-86-00-00-05-01-00-03 -60-00, SW1 SW2: 90 00, Data : //все ОК сразу
Authenticate: FF-86-00-00-05-01-00- 03 -60-00, SW1 SW2: 90 00, Data :

ReadBinary : FF-B0-00- 03 -10, SW1 SW2: 90 00, Data : 00-00-00-00-00-00-FF-07-80-69-FF-FF-FF-FF-FF-FF
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
где что почитать про чтение\запись nfc карт Mifare
    #39775873
А вот у меня встала необходимость работать с карточками, используя некий SAM модуль, который мне вручили (c виду на симку похож).
дали описание https://www.nxp.com/docs/en/data-sheet/P5DF081_SDS.pdf

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

Может сможете подсказать, что и где почитать, а то поиски по инету на тему SAM крайне скудные результаты дают.
...
Рейтинг: 0 / 0
62 сообщений из 62, показаны все 3 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / где что почитать про чтение\запись nfc карт Mifare
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]