Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3      [все]
 где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
Есть вот такой ридер карт
Есть под него карточки на 1K

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

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


--
понимать что ты чего-то не знаешь - мудро,
понимать что ты даже не знаешь, что чего-то не знаешь - печально,
но это факт, который таки очень полезно понимать :-)
24 авг 15, 10:23    [18058564]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3261
LelikBolek,

Правильно, сначала изучить PC/SC API ридера затем изучить , что такое MIFARE 1K , изучить AN10787 MIFARE Application Directory (MAD) . Или в случае кастомного хранения данных на карте писать в сектора. Не совсем понятен вопрос ваш.
24 авг 15, 13:56    [18059924]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
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
но до понимания еще не дошел
24 авг 15, 14:47    [18060136]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3261
LelikBolek,

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

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

И прежде всего понимание предметной области применения и сами, сами или адресная консультация , но это работа с вознаграждением
24 авг 15, 16:55    [18060385]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Алексей К
Member

Откуда: Новосибирск
Сообщений: 13633
pcsc-sharp
25 авг 15, 04:45    [18062329]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
С помощью pcsc-sharp получилось увидеть карту, но с этими APDU командами что-то труба совсем.
И по-русски информации практически нет или я плохо искал? Посоветуйте какие-нить нормальные мануалы по этим APDU (( ?
Как я понял для доступа к каждому блоку нужна авторизация (на каждый блок своя авторизация)
Для карт есть ключи А и B по умолчанию, но их как то можно поменять , опять же командой ADPU чтоб потом не всякий смог прочитать блоки?
Ключи тогда должны быть зашиты в коде управления ридером?
Не укладывается понятие записи в []byte структуру ((
Каша в голове (
26 авг 15, 13:13    [18069974]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3261
LelikBolek,

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

[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;
        }
    }
26 авг 15, 14:11    [18070422]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
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 вот такой код нормально читает идентификатор карты из первого блока первого (нулевого) сектора:
+
 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 еще не дошел вообще ...

Уфффф... прошу пояснить и направить ...
28 авг 15, 10:24    [18079702]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
Коллеги, прошу помощи:

вот пример:
отправляем команду в ридер: 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 подразумевает чтение сразу всех данных карты ? а потом уж парсинг того что получили? но как тогда авторизовываться для каждого блока в отдельности ?

мне нужно: поменять ключи по умолчанию на свои (для чтения и записи), читать одними ключами, а писать другими, чтобы пользователь без нужных прав не смог прочитать и изменить содержимое карты
31 авг 15, 11:57    [18090317]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
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 надо использовать последовательность команд аутентификация сектора - чтение блока. И, соответственно, требуется чтобы ключ на чтение блока совпадал с ключом в слоте ридера.
31 авг 15, 14:26    [18091019]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
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 надо использовать последовательность команд аутентификация сектора - чтение блока. И, соответственно, требуется чтобы ключ на чтение блока совпадал с ключом в слоте ридера.

Разберитесь для начала с командами. Скачайте простенькое приложение, которое посредством APDU команд позволит Вам общаться через ридер с картами. А потом уже эти "отработанные" команды используйте в своем приложении
31 авг 15, 14:27    [18091031]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
И еще, в соответствии со спецификацией на Mifare - переводить шестнадцатеричный идентификатор карты в другие форматы - дурной тон
31 авг 15, 14:29    [18091052]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
LelikBolek
Как я понял для доступа к каждому блоку нужна авторизация (на каждый блок своя авторизация)

С помощью команд аутентификации - аутентифицируется по любому блоку весь сектор. Так что, если хотите прочитать весь сектор, достаточно произвести аутентификацию по-любому блоку из этого сектора. В картах Mifare Plus - если у секторов ключи совпадают - достаточно тоже одной аутентификации.
LelikBolek
Для карт есть ключи А и B по умолчанию, но их как то можно поменять , опять же командой ADPU чтоб потом не всякий смог прочитать блоки?

Перезаписываются командой Write
LelikBolek
Ключи тогда должны быть зашиты в коде управления ридером?

Ключи должны быть в памяти считывателя (в энергозащищенной или энергонезащищенной)
31 авг 15, 14:33    [18091079]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
Belavik
И еще, в соответствии со спецификацией на Mifare - переводить шестнадцатеричный идентификатор карты в другие форматы - дурной тон

А чем это плохо ? Если это идентификатор уникальный, а мне дальше этот идентификатор надо использовать в учетной системе для привязки данных владельца карты к карте.
Я и думал переведенный идентификатор использовать как ID карты. В чем могут быть грабли ?
1 сен 15, 07:19    [18093671]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
LelikBolek
Belavik
И еще, в соответствии со спецификацией на Mifare - переводить шестнадцатеричный идентификатор карты в другие форматы - дурной тон

А чем это плохо ? Если это идентификатор уникальный, а мне дальше этот идентификатор надо использовать в учетной системе для привязки данных владельца карты к карте.
Я и думал переведенный идентификатор использовать как ID карты. В чем могут быть грабли ?

Этот идентификатор не у всех карт уникален. Можешь почитать MIFARE and handling of UIDs
1 сен 15, 11:29    [18094337]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
Belavik
LelikBolek
пропущено...

А чем это плохо ? Если это идентификатор уникальный, а мне дальше этот идентификатор надо использовать в учетной системе для привязки данных владельца карты к карте.
Я и думал переведенный идентификатор использовать как 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х байтный (если не серые китайские карты) и так обеспечат мне уникальность ...
1 сен 15, 11:55    [18094512]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
Еще по поводу UID:

читаем UID командой GET DATA: {FF CA 00 00 00 } получаем UID: E1B746D9
читаем первый блок первого сектора командой READ BINARY: {FF B0 00 00 10} получаем значение manufactured блока: E1B746D9C9080400016B91281520481D
видим что первые 4 байта - это тот же самый UID, а что тогда означают оставшиеся 12 байт ?
1 сен 15, 15:21    [18095835]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
LelikBolek
Еще по поводу UID:

читаем UID командой GET DATA: {FF CA 00 00 00 } получаем UID: E1B746D9
читаем первый блок первого сектора командой READ BINARY: {FF B0 00 00 10} получаем значение manufactured блока: E1B746D9C9080400016B91281520481D
видим что первые 4 байта - это тот же самый UID, а что тогда означают оставшиеся 12 байт ?

Эти UID могу не совпадать. UID не всегда уникален. Зависит от того, в каком диапазоне его значение.
Максимальное значение в 4 байта - 4.294.967.295 - уже давно исчерпано
1 сен 15, 15:54    [18096027]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
Belavik
LelikBolek
Еще по поводу UID:

читаем UID командой GET DATA: {FF CA 00 00 00 } получаем UID: E1B746D9
читаем первый блок первого сектора командой READ BINARY: {FF B0 00 00 10} получаем значение manufactured блока: E1B746D9C9080400016B91281520481D
видим что первые 4 байта - это тот же самый UID, а что тогда означают оставшиеся 12 байт ?

Эти UID могу не совпадать. UID не всегда уникален. Зависит от того, в каком диапазоне его значение.
Максимальное значение в 4 байта - 4.294.967.295 - уже давно исчерпано

В тех 12 байтах производитель может писать что угодно. Встречал инфу о чипе
1 сен 15, 15:55    [18096031]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
LelikBolek
Еще по поводу UID:

читаем UID командой GET DATA: {FF CA 00 00 00 } получаем UID: E1B746D9
читаем первый блок первого сектора командой READ BINARY: {FF B0 00 00 10} получаем значение manufactured блока: E1B746D9C9080400016B91281520481D
видим что первые 4 байта - это тот же самый UID, а что тогда означают оставшиеся 12 байт ?

В некоторых картах нулевой блок нулевого сектора читается без аутентификации
1 сен 15, 15:56    [18096042]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
Belavik
Эти UID могу не совпадать. UID не всегда уникален. Зависит от того, в каком диапазоне его значение.
Максимальное значение в 4 байта - 4.294.967.295 - уже давно исчерпано

и как с этим жить ? как по правильному обеспечить уникальность карты ?
считать 4 байтное UID командой CA
сгенерить еще 4 байта (например) от случайного числа, записать его в блок 2 сектора 0
и потом получая UID складывать эти два значений (склеивать) ?
или есть более правильные способы ?
или в http://www.nxp.com/documents/application_note/AN10927.pdf об этом и говорится. но я не понял ?
1 сен 15, 15:59    [18096052]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
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 об этом и говорится. но я не понял ?

Пиши в свободный блок свое число. Или надейся что дубликат карты не попадется
1 сен 15, 16:00    [18096064]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
Belavik
LelikBolek
пропущено...

и как с этим жить ? как по правильному обеспечить уникальность карты ?
считать 4 байтное UID командой CA
сгенерить еще 4 байта (например) от случайного числа, записать его в блок 2 сектора 0
и потом получая UID складывать эти два значений (склеивать) ?
или есть более правильные способы ?
или в http://www.nxp.com/documents/application_note/AN10927.pdf об этом и говорится. но я не понял ?

Пиши в свободный блок свое число. Или надейся что дубликат карты не попадется

МОжно проанализировать uid по значению и понять, может ли у него быть дубликат
1 сен 15, 16:01    [18096069]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
Belavik
Belavik
пропущено...

Пиши в свободный блок свое число. Или надейся что дубликат карты не попадется

МОжно проанализировать uid по значению и понять, может ли у него быть дубликат

см таблицу на стр №5
1 сен 15, 16:02    [18096074]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
Belavik
Belavik
пропущено...

МОжно проанализировать uid по значению и понять, может ли у него быть дубликат

см таблицу на стр №5

что-то не осилил ту таблицу:
вот два singeUid: E1B746D9 и 6ADC50D5 как им правильно проанализировать на возможность дубликатов ?
1 сен 15, 16:07    [18096100]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
LelikBolek
Belavik
пропущено...

см таблицу на стр №5

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


они относятся к :
x0... x7 Proprietary use (i.e. used for MIFARE) appr. 2.1 billion
т.е. у эти две карты белые и по идее повторяться не должны ?
1 сен 15, 16:10    [18096121]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
LelikBolek
LelikBolek
пропущено...

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


они относятся к :
x0... x7 Proprietary use (i.e. used for MIFARE) appr. 2.1 billion
т.е. у эти две карты белые и по идее повторяться не должны ?

да
1 сен 15, 16:14    [18096150]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
Belavik
LelikBolek
пропущено...
они относятся к :
x0... x7 Proprietary use (i.e. used for MIFARE) appr. 2.1 billion
т.е. у эти две карты белые и по идее повторяться не должны ?

да

может тогда правильнее генерить GUID на клиенте, например:
{654B34C0-48F4-45C5-A27E-ABCD354BF98D}
если убрать лишние разделители то
654B34C048F445C5A27EABCD354BF98D
он как раз 16 байт, попробовал записать \ считать - получилось
1 сен 15, 16:18    [18096169]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
LelikBolek
Belavik
пропущено...

да

может тогда правильнее генерить GUID на клиенте, например:
{654B34C0-48F4-45C5-A27E-ABCD354BF98D}
если убрать лишние разделители то
654B34C048F445C5A27EABCD354BF98D
он как раз 16 байт, попробовал записать \ считать - получилось

Если ты используешь обычные карты Mifare Classic, то вероятность напороться на дубликат по UID почти нулю (по моим данным). Не уникальные UID используются на других картах
1 сен 15, 16:24    [18096233]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
Belavik
LelikBolek
пропущено...

может тогда правильнее генерить GUID на клиенте, например:
{654B34C0-48F4-45C5-A27E-ABCD354BF98D}
если убрать лишние разделители то
654B34C048F445C5A27EABCD354BF98D
он как раз 16 байт, попробовал записать \ считать - получилось

Если ты используешь обычные карты Mifare Classic, то вероятность напороться на дубликат по UID почти нулю (по моим данным). Не уникальные UID используются на других картах

Но есть возможность попасть на карту от NXP и на ее клон по UID от Китайцев)))
1 сен 15, 16:25    [18096243]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
Belavik
Belavik
пропущено...

Если ты используешь обычные карты Mifare Classic, то вероятность напороться на дубликат по UID почти нулю (по моим данным). Не уникальные UID используются на других картах

Но есть возможность попасть на карту от NXP и на ее клон по UID от Китайцев)))

Если уверен что чипы оригинальные - можно особо не заморачиваться) В проекте сколько карт будет использоваться?
1 сен 15, 16:26    [18096256]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
Belavik
Belavik
пропущено...

Но есть возможность попасть на карту от NXP и на ее клон по UID от Китайцев)))

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

не могу сказать сколько, зависит от числа клиентов )) (бонусные карты)
и где потом эти карты будут покупаться - я не знаю и не могу предположить, у меня есть только сам ридер и несколько карт для тренировки
видимо вариант с генерацией и хранением на карте guid-а предпочтительнее ?
1 сен 15, 16:30    [18096296]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
LelikBolek
Belavik
пропущено...

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

не могу сказать сколько, зависит от числа клиентов )) (бонусные карты)
и где потом эти карты будут покупаться - я не знаю и не могу предположить, у меня есть только сам ридер и несколько карт для тренировки
видимо вариант с генерацией и хранением на карте guid-а предпочтительнее ?

Я бы хранил оба числа
1 сен 15, 18:37    [18096736]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
Продолжаю копаться с картами 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

Почему так?
2 сен 15, 09:12    [18098216]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
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-й блок перезаписывал? Можешь его прочитать? Или ключи запорол или биты доступа выставил не так. А может и еще что
2 сен 15, 10:32    [18098628]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
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-й блок перезаписывал? Можешь его прочитать? Или ключи запорол или биты доступа выставил не так. А может и еще что

А нет, логи не досмотрел. Нашел утилиту для работы с картой через PC/SC? Или все проходит через твой код?
2 сен 15, 10:34    [18098640]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
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 говорит что авторизация ключом А, а пустой ключ я вообще в ридер командрой загрузки ключей не загружал.. как это работает ?

и где почитать про формат маски доступа, гдето видел но не вспомню где ((
2 сен 15, 10:44    [18098703]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
Belavik
А нет, логи не досмотрел. Нашел утилиту для работы с картой через PC/SC? Или все проходит через твой код?

да нашел и ей читается все и с первого раза:
загрузил ключ в ридер (ключь именно FF-FF-FF-FF-FF-FF, вот так: FF-82-00-00-06-FF-FF-FF-FF-FF-FF, SW1 SW2 = 90 00
авторизация в последнему блоку в секторе
чтение любого блока в секторе
2 сен 15, 10:49    [18098731]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
и перезаписывал я первый блок первого сектора, там как раз какоето значение лежит, видно в логе, а третий блок нулевого вроде не трогал
2 сен 15, 10:53    [18098751]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
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 говорит что авторизация ключом А, а пустой ключ я вообще в ридер командрой загрузки ключей не загружал.. как это работает ?

и где почитать про формат маски доступа, гдето видел но не вспомню где ((

Твои биты доступа показывают, что ключ B может быть прочитан ключом А. Собственно значение ключа и выводится. Но значение ключа А не может быть прочитано ключом A, поэтому значение выводится в виде последовательности нулей (читай как звездочки)
2 сен 15, 11:21    [18098941]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
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
авторизация в последнему блоку в секторе
чтение любого блока в секторе

Ищи ошибку в коде значит
2 сен 15, 11:21    [18098944]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
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"
где у меня эти магические логические нули в значении трэйлера ?
2 сен 15, 12:03    [18099187]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
LelikBolek
ключ А значит какой-то есть, но его значение я в трейлере не вижу, но раз чтение с ключем А по умолчанию работает, то его значение все же FF-FF-FF-FF-FF-FF. так ?

Да
2 сен 15, 12:33    [18099330]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
LelikBolek
биты доступа 6,7,8 у меня: FF-07-80
С1 = FF
C2 = 07
C3 = 80

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

Разбирайся. Значение битов доступа надо перевести в двоичное ...
2 сен 15, 12:34    [18099334]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
LelikBolek
ну и еще: что означает фраза "При чтении трейлера сектора байты с ключами обрамлены логическими нулями." или "When the sector trailer is read, the key bytes are blanked out by returning logical zeros"
где у меня эти магические логические нули в значении трэйлера ?

Это та последовательность нулей вместо ключа A
2 сен 15, 12:34    [18099335]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
Belavik
Разбирайся...

"И вновь продолжается бой..." (с)

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

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

PS:
А вообще, благодаря наводкам от Belavik, карты считываются, записываются, активируются, деактивируются.
За что ему человеческое спасибо!
11 сен 15, 06:31    [18135599]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
И еще не очень понял смысл ATR, в какой момент его надо запрашивать и что из него него можно использовать ...
11 сен 15, 10:07    [18136117]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
LelikBolek
И еще не очень понял смысл ATR, в какой момент его надо запрашивать и что из него него можно использовать ...

Запрашивай перед чтением карты. Это ответ карты на операцию Reset. По поводу того, что она дает - смотри в спецификации (вроде в ISO-7816). Как вариант - по нему можно определить тип карты (но не всегда точно, а возможно и с ошибкой)
11 сен 15, 10:16    [18136178]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

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

Достаточно к одному блоку и без разницы какому (если используется PC/SC)
11 сен 15, 10:17    [18136186]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

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

Видимо в коде производятся какие-то операции с картой и она не готова авторизироваться. Так что в твоем случае первая ошибочная авторизация равнозначна задержки, после чего все работает без ошибок. В любом случае при работе с картой задержки в 800 мс - очень много. Думаю проблема в коде (хотя могут и карты быть косячными).
11 сен 15, 10:20    [18136224]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
LelikBolek
И еще не очень понял смысл ATR, в какой момент его надо запрашивать и что из него него можно использовать ...

Можешь здесь побаловаться https://smartcard-atr.appspot.com/
11 сен 15, 10:22    [18136236]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

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

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

Если тебе такое время не критично - можешь оставить с задержкой (если уверен что в коде нет ошибок). Это лучше чем аутентификация с ошибкой.
11 сен 15, 10:37    [18136361]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
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 : //а блок не читается

как так?
11 сен 15, 10:39    [18136377]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
[quot Belavik]
Belavik
пропущено...
Если тебе такое время не критично - можешь оставить с задержкой (если уверен что в коде нет ошибок). Это лучше чем аутентификация с ошибкой.

Чем лучше ?
Ошибочная авторизация происходит мгновенно, а задержка в 800 мс явно заметна ..
11 сен 15, 10:41    [18136398]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
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 : //а блок не читается
а если аутентифицировать 4-й блок?

как так?
11 сен 15, 10:42    [18136409]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
Belavik,


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 : //а блок не читается

как так?

а если аутентифицировать 4-й блок?
11 сен 15, 10:45    [18136429]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
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 :

т.е. к каждому блоку сектора авторизация успешная но не блокине читаются
запорол именно я, неудачной попыткой смены маски и ключей, к сожалению лог не сохранили восстановить ошибочную команду не смог ((
11 сен 15, 10:49    [18136459]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
т.е. к каждому блоку сектора авторизация успешная но не блоки не читаются
запорол именно я, неудачной попыткой смены маски и ключей, к сожалению лог не сохранили восстановить ошибочную команду не смог ((


вопрос в том, как понимать такую ситуацию, на сами блоки пофиг, карта тестовая
таких секторов у меня 2, на последующих секторах смена ключей и условий доступа получилась и теперь работает правильно, а с этими просто академический интерес
11 сен 15, 10:55    [18136507]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
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 :

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

Если запорол биты доступа - сектор уже не рабочий
11 сен 15, 11:03    [18136563]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Belavik
Member

Откуда: ПТ-У
Сообщений: 27601
LelikBolek
т.е. к каждому блоку сектора авторизация успешная но не блоки не читаются
запорол именно я, неудачной попыткой смены маски и ключей, к сожалению лог не сохранили восстановить ошибочную команду не смог ((


вопрос в том, как понимать такую ситуацию, на сами блоки пофиг, карта тестовая
таких секторов у меня 2, на последующих секторах смена ключей и условий доступа получилась и теперь работает правильно, а с этими просто академический интерес

Значит что ключи доступа сходятся на карте и считывателе, а какие на них возложены права - определить не получилось
11 сен 15, 11:04    [18136569]     Ответить | Цитировать Сообщить модератору
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
LelikBolek
Member

Откуда: Челябинск
Сообщений: 568
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
11 сен 15, 11:10    [18136589]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: где что почитать про чтение\запись nfc карт Mifare  [new]
Алексей Колодезный
Member

Откуда:
Сообщений: 70
А вот у меня встала необходимость работать с карточками, используя некий SAM модуль, который мне вручили (c виду на симку похож).
дали описание https://www.nxp.com/docs/en/data-sheet/P5DF081_SDS.pdf

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

Может сможете подсказать, что и где почитать, а то поиски по инету на тему SAM крайне скудные результаты дают.
18 фев 19, 19:12    [21813638]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / WinForms, .Net Framework Ответить