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

Откуда: Новосибирск
Сообщений: 13631
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]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / WinForms, .Net Framework Ответить