Автор Тема: Проблемы с компонентой ZR1C  (Прочитано 9281 раз)

operasdk

  • Пользователь
  • *****
  • Сообщений: 10
Проблемы с компонентой ZR1C
« : 10 Октября 2018, 16:07 »
Здравствуйте. Приобрел у вас RFID считыватель Z-2 USB. Скачал установил последние драйвера с офф. сайта версии 2.12.26 (от 24.04.2017), также скачал последнюю версию компоненты для 1С версии 1.5.2 (от 24.08.2018) .

Возникшие проблемы:

1)При попытке чтение данных с карт Mifare UL компонента возвращает не полный список байтов, пробовал устанавливать разные значения переменных "c" и "b" - безрезультатно. При чтении данных этого тега через nfc телефона - я получаю полный список байтов. Тип тега 100% соответствует Mifare UL. Пробовал много разных тегов.

//   Компонента = ZR1C.ПолучитьИнтерфейс();
//   Компонента.ЗвукВключен = Ложь;
//   Компонента.Порт = DevId;         
//   Компонента.Подключить(DevId);
//   Отладка = "";
//   c = 0;
//   blob = ""; 
//   b = 16;
//   Компонента.ReadMifareUL(DevId, c, blob, b);

2) При попытке чтения карт Mifare Classic 1K с помощью функции GetLastError() получаю ошибку авторизации ключа. Это происходит потому, что в вашей компоненте переменной "Явный ключ авторизации" присваивается значение 0xFFFFFFFFFFFF, но этот ключ не подходит, так как мои метки используют технологию хранения данных NDEF, где для первого сектора используется ключ 0xA0A1A2A3A4A5, а для последующих секторов ключ 0xD3F7D3F7D3F7. Как мне передать эти ключи в Вашу функцию, если 1С не предоставляет возможности хранить числа в шестнадцатеричной системе счисления?

gsa

  • Пользователь
  • *****
  • Сообщений: 265
Re: Проблемы с компонентой ZR1C
« Ответ #1 : 10 Октября 2018, 20:40 »
Здравствуйте
1) Проверил в эмуляторе Z-2 USB с Mifare Ultralight
Данные считываются все, делал так:

Перем blob;
blob = "";
Компонента.ReadMifareUL(DevId, 0, blob, 16);
Сообщить(ЗначениеВСтрокуВнутр(blob));

В окно "Служебные сообщения" 1с выводит это:
{"#",87126200-3e98-44e0-b931-ccb1d7edc497,
{1,
{#base64:q5B4AFY0EgAAAAAAAAAAABI0VngaGxwdKissLTo7PD1KS0xNWltcXWprbG16e3x9
iouMjZqbnJ2qq6yturu8vQ==}
}
}

если декодировать base64 https://cryptii.com/pipes/base64-to-hex
получаются 64 байта с корректными значениями.
Если тип blob неудобен, то в каком виде лучше передавать?

2) Спасибо, действительно 64-битного целого типа нет в 1с, заменил на строку. Временное обновление здесь ZR1C v1.5.3 https://yadi.sk/d/vxB6L4I13P5JXp
Прошивка Z-2 USB не поддерживает функции чтения/записи на Mifare Classic, их поддерживает Z-2 USB MF.
« Последнее редактирование: 10 Октября 2018, 20:42 от gsa »

operasdk

  • Пользователь
  • *****
  • Сообщений: 10
Re: Проблемы с компонентой ZR1C
« Ответ #2 : 11 Октября 2018, 12:44 »
Здравствуйте. Извините, у меня Z-2 USB MF, я опечатался.

1) Спасибо, просмотрел все существующие типы Mifare UL, оказалось, что их несколько и они отличаются количеством страниц (Например у меня есть Mifare UL на 48 страницы (180 байтов)). В Вашей компоненте стоит ограничение на 16 страниц (64 байта) чтения и записи. Как мне прочитать обычные Mifare UL?

2) Никак не получается считать данные Mifare Classic 1K, получаю ошибку авторизации ключа. Пытаюсь целенаправленно прочитать 4 сектор, чтобы протестировать работу считывателя. Делаю так:
   //Компонента = ZR1C.ПолучитьИнтерфейс();
   //Компонента.ЗвукВключен = Ложь;
   //Компонента.Порт = DevId;         
   //Компонента.Подключить(DevId);
   //Отладка = "";
   //НомерПервогоСектора = 4;
   //НомерПервогоБлока = 0;
   //СчитанныеДанные = "";
   //КоличествоБлоков = 4;
   //АвторизоватьсяПоКлючуБ = Ложь;
   //ПропуститьБлокиПроцепы = Ложь;
   //Компонента.ReadMifareC("Com3", НомерПервогоСектора, НомерПервогоБлока, СчитанныеДанные, КоличествоБлоков);

      Прилагаю скриншот структуры памяти метки, которую пытаюсь прочитать. Там видно, что для 4 сектора используется 0xFFFFFFFFFFFF ключ авторизации (Который по умолчанию подставляется в Вашу функцию чтения)

https://ibb.co/f0J2yp
« Последнее редактирование: 11 Октября 2018, 13:17 от operasdk »

gsa

  • Пользователь
  • *****
  • Сообщений: 265
Re: Проблемы с компонентой ZR1C
« Ответ #3 : 11 Октября 2018, 14:52 »
1)... Как мне прочитать обычные Mifare UL?
Изменил проверяемые границы с 16 до 255 (обновление https://yadi.sk/d/vxB6L4I13P5JXp), но возможно понадобиться дорабатывать прошивку считывателя (у меня сейчас нет таких карт, проверить не могу). Напишите support@ironlogic.ru, чтобы сделали поддержку новых карт Mifare Ultralight (48 страниц).

2) ... Там видно, что для 4 сектора используется 0xFFFFFFFFFFFF ключ авторизации (Который по умолчанию подставляется в Вашу функцию чтения) https://ibb.co/f0J2yp
На скриншоте видно только значение ключа Б, а значение ключа A не видно (key unavailable). Значение ключа, по которому авторизуется сектор, прочитать из сектора нельзя.
Проверил на реальном Z-2 USB MF + Mifare Classic 1K, данные считываются:
Перем blob;
blob = "";
Компонента.ReadMifareC(DevId, 0, 0, blob, 4, 0, "0xFFFFFFFFFFFF");
Сообщить(ЗначениеВСтрокуВнутр(blob));

{"#",87126200-3e98-44e0-b931-ccb1d7edc497,
{1,
{#base64:RimTiHSIBABGjjRVVRA0A961nFMBbJLF1bxeoS8oNskKSYR6i1g2VJWA7XpVI9aO
AAAAAAAA/weAaf///////w==}
}
}

operasdk

  • Пользователь
  • *****
  • Сообщений: 10
Re: Проблемы с компонентой ZR1C
« Ответ #4 : 11 Октября 2018, 17:34 »
1) Хорошо, спасибо большое.

2) Пробовал разные карты mf 1k, в которых виден ключ A и не виден ключ B и наоборот. Пробовал разные ключи авторизации и менять местами ключ A и B. Ничего не помогает, каждый раз ошибка авторизации. Даже написал программку, которая подставляла разные ключи из списка к разным секторам, к разным ключам A и B, пока не сможет прочитать какой-то сектор без ошибок. Но ничего также не получилось.

Проблема может быть в самом считывателе? Подскажите, пожалуйста, куда копать, я уже все попробовал.

operasdk

  • Пользователь
  • *****
  • Сообщений: 10
Re: Проблемы с компонентой ZR1C
« Ответ #5 : 11 Октября 2018, 19:12 »
Попробовал карты в которых не испольузется технология хранения данных ndef - их он читает без проблем (там стоит ключ 0xFFFFFFFFFFFF) и видны оба ключа A и B. Но почему карты с технологией NDEF читаться не хотят? Через Демо-программу sdk guard также не могу авторизоваться на ndef метках.

operasdk

  • Пользователь
  • *****
  • Сообщений: 10
Re: Проблемы с компонентой ZR1C
« Ответ #6 : 11 Октября 2018, 19:13 »
Метки не бракованные т.к. nfc телефона их читает и пишет.

gsa

  • Пользователь
  • *****
  • Сообщений: 265
Re: Проблемы с компонентой ZR1C
« Ответ #7 : 11 Октября 2018, 20:27 »
Попробовал карты в которых не испольузется технология хранения данных ndef - их он читает без проблем (там стоит ключ 0xFFFFFFFFFFFF) и видны оба ключа A и B. Но почему карты с технологией NDEF читаться не хотят? Через Демо-программу sdk guard также не могу авторизоваться на ndef метках.
ZR1C и Z-2 USB MF должны гарантированно работать только с картами, купленными у Ironlogic. Если карты не наши, то можете написать/позвонить https://ironlogic.ru/il_new.nsf/htm/ru_contacts попросить сделать поддержку этих карт (наверное, попросят прислать 1 карту для теста).

operasdk

  • Пользователь
  • *****
  • Сообщений: 10
Re: Проблемы с компонентой ZR1C
« Ответ #8 : 12 Октября 2018, 11:08 »
Я использую Ваши же карты, тот же тип, все точно такое же. Авторизация доступна ровно до того момента, пока я не запишу что-то на карту с любого телефона с любой программы. Потому что после записи с любого устройства ключи авторизации меняются на NDEF'cкие. И когда я пытаюсь по этим ключам авторизоваться - выдает ошибку авторизации. Попробуйте взять карту, на которой Вы выше успешно авторизовались по ключу 0xFFFFFFFFFFFF, и записать на нее с любого andoid-устройства ссылку, контактные данные или просто текст. Потом попробуйте авторизоваться на этой карте (Она не блокируется после записи со смартфона, она доступна для записи и любой смартфон может ее читать и писать). Если у Вас получится авторизоваться - значит я что-то делаю не так.
« Последнее редактирование: 12 Октября 2018, 11:25 от operasdk »

gsa

  • Пользователь
  • *****
  • Сообщений: 265
Re: Проблемы с компонентой ZR1C
« Ответ #9 : 12 Октября 2018, 12:19 »
...Попробуйте взять карту, на которой Вы выше успешно авторизовались по ключу 0xFFFFFFFFFFFF, и записать на нее с любого andoid-устройства ссылку, контактные данные или просто текст.
У меня нет таких устройств, телефон не поддерживает NFC.

Пробовал установить в карту другой ключ A="0xAB9078563412" и конфигурацию как на скриншоте https://ibb.co/f0J2yp, успешно авторизуется через ReadMifareC. Пробовал авторизоваться по ключу B="0xFFFFFFFFFFFF", обнаружил, что ReadMifareC игнорирует флаг "Ключ B"=true, исправил (обновление https://yadi.sk/d/vxB6L4I13P5JXp), теперь успешно авторизуется и читает данные и по ключу B.
На скриншоте виден ключ B="0xFFFFFFFFFFFF", попробуйте установить обновление и авторизоваться ключом B.
Компонента.ReadMifareC(DevId, 0, 0, blob, 4, 0, "0xFFFFFFFFFFFF", true);Если ключом B авторизует, а ключом A - нет, то скорее всего в ReadMifareC передается неправильный ключ A.

operasdk

  • Пользователь
  • *****
  • Сообщений: 10
Re: Проблемы с компонентой ZR1C
« Ответ #10 : 12 Октября 2018, 13:34 »
https://ibb.co/jhZAop
https://ibb.co/fM6C19

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

gsa

  • Пользователь
  • *****
  • Сообщений: 265
Re: Проблемы с компонентой ZR1C
« Ответ #11 : 12 Октября 2018, 13:43 »
На первом скрине я авторизуюсь на карте через Вашу демо программу, в первом секторе, по ключу 0xA0A1A2A3A4A5, авторизация прошла успешно.
На первом скрине используется ключ A =0xA5A4A3A2A1A0, а не 0xA0A1A2A3A4A5. В Demo байты ключа отображаются слева направо, младший A0. На втором скрине идёт авторизация по ключу B.
« Последнее редактирование: 12 Октября 2018, 13:45 от gsa »

operasdk

  • Пользователь
  • *****
  • Сообщений: 10
Re: Проблемы с компонентой ZR1C
« Ответ #12 : 12 Октября 2018, 17:13 »
Спасибо, действительно получилось.


Если тип blob неудобен, то в каком виде лучше передавать?


А Вы можете сделать NDEF формат чтения и записи данных на метку?

gsa

  • Пользователь
  • *****
  • Сообщений: 265
Re: Проблемы с компонентой ZR1C
« Ответ #13 : 12 Октября 2018, 20:13 »
А Вы можете сделать NDEF формат чтения и записи данных на метку?
Делать ли такие доработки решает мой начальник, можете попросить https://ironlogic.ru/il_new.nsf/htm/ru_contacts

operasdk

  • Пользователь
  • *****
  • Сообщений: 10
Re: Проблемы с компонентой ZR1C
« Ответ #14 : 12 Октября 2018, 23:24 »
А можно имя Вашего начальника?