powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / где что почитать про чтение\запись nfc карт Mifare
25 сообщений из 62, страница 1 из 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
25 сообщений из 62, страница 1 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / где что почитать про чтение\запись nfc карт Mifare
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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