Адаптеры & Конвертеры > Z-2 Base

Проблемы с компонентой ZR1C

(1/4) > >>

operasdk:
Здравствуйте. Приобрел у вас 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:
Здравствуйте
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.

operasdk:
Здравствуйте. Извините, у меня 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

gsa:

--- Цитата: operasdk от 11 Октября 2018, 12:44 ---1)... Как мне прочитать обычные Mifare UL?
--- Конец цитаты ---
Изменил проверяемые границы с 16 до 255 (обновление https://yadi.sk/d/vxB6L4I13P5JXp), но возможно понадобиться дорабатывать прошивку считывателя (у меня сейчас нет таких карт, проверить не могу). Напишите support@ironlogic.ru, чтобы сделали поддержку новых карт Mifare Ultralight (48 страниц).


--- Цитата: operasdk от 11 Октября 2018, 12:44 ---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:
1) Хорошо, спасибо большое.

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

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

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии