IronLogic СКУД
Адаптеры & Конвертеры => Z-2 Base => Тема начата: operasdk от 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С не предоставляет возможности хранить числа в шестнадцатеричной системе счисления?
-
Здравствуйте
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 (https://cryptii.com/pipes/base64-to-hex)
получаются 64 байта с корректными значениями.
Если тип blob неудобен, то в каком виде лучше передавать?
2) Спасибо, действительно 64-битного целого типа нет в 1с, заменил на строку. Временное обновление здесь ZR1C v1.5.3 https://yadi.sk/d/vxB6L4I13P5JXp (https://yadi.sk/d/vxB6L4I13P5JXp)
Прошивка Z-2 USB не поддерживает функции чтения/записи на Mifare Classic, их поддерживает Z-2 USB MF.
-
Здравствуйте. Извините, у меня 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
-
1)... Как мне прочитать обычные Mifare UL?
Изменил проверяемые границы с 16 до 255 (обновление https://yadi.sk/d/vxB6L4I13P5JXp (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==}
}
}
-
1) Хорошо, спасибо большое.
2) Пробовал разные карты mf 1k, в которых виден ключ A и не виден ключ B и наоборот. Пробовал разные ключи авторизации и менять местами ключ A и B. Ничего не помогает, каждый раз ошибка авторизации. Даже написал программку, которая подставляла разные ключи из списка к разным секторам, к разным ключам A и B, пока не сможет прочитать какой-то сектор без ошибок. Но ничего также не получилось.
Проблема может быть в самом считывателе? Подскажите, пожалуйста, куда копать, я уже все попробовал.
-
Попробовал карты в которых не испольузется технология хранения данных ndef - их он читает без проблем (там стоит ключ 0xFFFFFFFFFFFF) и видны оба ключа A и B. Но почему карты с технологией NDEF читаться не хотят? Через Демо-программу sdk guard также не могу авторизоваться на ndef метках.
-
Метки не бракованные т.к. nfc телефона их читает и пишет.
-
Попробовал карты в которых не испольузется технология хранения данных ndef - их он читает без проблем (там стоит ключ 0xFFFFFFFFFFFF) и видны оба ключа A и B. Но почему карты с технологией NDEF читаться не хотят? Через Демо-программу sdk guard также не могу авторизоваться на ndef метках.
ZR1C и Z-2 USB MF должны гарантированно работать только с картами, купленными у Ironlogic. Если карты не наши, то можете написать/позвонить https://ironlogic.ru/il_new.nsf/htm/ru_contacts (https://ironlogic.ru/il_new.nsf/htm/ru_contacts) попросить сделать поддержку этих карт (наверное, попросят прислать 1 карту для теста).
-
Я использую Ваши же карты, тот же тип, все точно такое же. Авторизация доступна ровно до того момента, пока я не запишу что-то на карту с любого телефона с любой программы. Потому что после записи с любого устройства ключи авторизации меняются на NDEF'cкие. И когда я пытаюсь по этим ключам авторизоваться - выдает ошибку авторизации. Попробуйте взять карту, на которой Вы выше успешно авторизовались по ключу 0xFFFFFFFFFFFF, и записать на нее с любого andoid-устройства ссылку, контактные данные или просто текст. Потом попробуйте авторизоваться на этой карте (Она не блокируется после записи со смартфона, она доступна для записи и любой смартфон может ее читать и писать). Если у Вас получится авторизоваться - значит я что-то делаю не так.
-
...Попробуйте взять карту, на которой Вы выше успешно авторизовались по ключу 0xFFFFFFFFFFFF, и записать на нее с любого andoid-устройства ссылку, контактные данные или просто текст.
У меня нет таких устройств, телефон не поддерживает NFC.
Пробовал установить в карту другой ключ A="0xAB9078563412" и конфигурацию как на скриншоте https://ibb.co/f0J2yp (https://ibb.co/f0J2yp), успешно авторизуется через ReadMifareC. Пробовал авторизоваться по ключу B="0xFFFFFFFFFFFF", обнаружил, что ReadMifareC игнорирует флаг "Ключ B"=true, исправил (обновление https://yadi.sk/d/vxB6L4I13P5JXp (https://yadi.sk/d/vxB6L4I13P5JXp)), теперь успешно авторизуется и читает данные и по ключу B.
На скриншоте виден ключ B="0xFFFFFFFFFFFF", попробуйте установить обновление и авторизоваться ключом B.
Компонента.ReadMifareC(DevId, 0, 0, blob, 4, 0, "0xFFFFFFFFFFFF", true);
Если ключом B авторизует, а ключом A - нет, то скорее всего в ReadMifareC передается неправильный ключ A.
-
https://ibb.co/jhZAop
https://ibb.co/fM6C19
И все же по-моему компонента не особо хочет работать. На первом скрине я авторизуюсь на карте через Вашу демо программу, в первом секторе, по ключу 0xA0A1A2A3A4A5, авторизация прошла успешно. На втором скрине я пытаюсь авторизоваться на той же карте, в том же секторе, по такому же ключу, но пишет ошибку авторизации.
-
На первом скрине я авторизуюсь на карте через Вашу демо программу, в первом секторе, по ключу 0xA0A1A2A3A4A5, авторизация прошла успешно.
На первом скрине используется ключ A =0xA5A4A3A2A1A0, а не 0xA0A1A2A3A4A5. В Demo байты ключа отображаются слева направо, младший A0. На втором скрине идёт авторизация по ключу B.
-
Спасибо, действительно получилось.
Если тип blob неудобен, то в каком виде лучше передавать?
А Вы можете сделать NDEF формат чтения и записи данных на метку?
-
А Вы можете сделать NDEF формат чтения и записи данных на метку?
Делать ли такие доработки решает мой начальник, можете попросить https://ironlogic.ru/il_new.nsf/htm/ru_contacts (https://ironlogic.ru/il_new.nsf/htm/ru_contacts)
-
А можно имя Вашего начальника?
-
А можно имя Вашего начальника?
Журавский Александр Николаевич
-
Не подскажите Ваше имя?
-
Не подскажите Ваше имя?
Гончаров Сергей Александрович, разработчик ZR1C