Есть SDK :: Смарт-карты в 1С:Предприятие, ридер ACR122u, смарт карта MIFARE 1K.
В комплекте разработчика есть примеры работы через 1с. Пытаюсь через эту обработку поменять стандартный ключ (HEХ - FFFFFFFFFFFF) В обработке пишет максимальная длина ключей 6 символов. Т.е. я так понимаю надо из шестнадцатеричного ключа сделать другой, который имел бы шесть символов. Кто сталкивался? Какой ключ надо вбивать?
В комплекте разработчика есть примеры работы через 1с. Пытаюсь через эту обработку поменять стандартный ключ (HEХ - FFFFFFFFFFFF) В обработке пишет максимальная длина ключей 6 символов. Т.е. я так понимаю надо из шестнадцатеричного ключа сделать другой, который имел бы шесть символов. Кто сталкивался? Какой ключ надо вбивать?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) bajen, я работал
1) В комплекте разработки идет БД для 1С 8.1 с примерами работы с картами.
2) Если внимательно смотреть примеры, там используются функции для перевода из HEX в обычную строку и обратно, вот ими и надо пользоваться.
3) Там также есть мануал с описанием всех функций: MakeBinaryCode, блок функций Hex
1) В комплекте разработки идет БД для 1С 8.1 с примерами работы с картами.
2) Если внимательно смотреть примеры, там используются функции для перевода из HEX в обычную строку и обратно, вот ими и надо пользоваться.
3) Там также есть мануал с описанием всех функций: MakeBinaryCode, блок функций Hex
(8) bajen,
У SDK :: Смарт-карты в 1С:Предприятие есть такой глюк, что под Windows XP на смарт-карточки драйвера не требуются, а вот для Windows 7 требуется установка драйверов имено для карточек, так вот, этого делать не надо, а чтобы не надоедали постояные сообщения, надо где-то в Администраторский настройках отключить службу смарт-карт, где точно сказать не могу, не отключал. Возможно проблеммы из-за этого.
У SDK :: Смарт-карты в 1С:Предприятие есть такой глюк, что под Windows XP на смарт-карточки драйвера не требуются, а вот для Windows 7 требуется установка драйверов имено для карточек, так вот, этого делать не надо, а чтобы не надоедали постояные сообщения, надо где-то в Администраторский настройках отключить службу смарт-карт, где точно сказать не могу, не отключал. Возможно проблеммы из-за этого.
Здравствуйте.
дело в том что я с ними не работал до этого. даже не сталкивался можно сказать. и незнаю при вставке что должно происходит.
например открываю блокнот и вставляю карту, ничего не происходит. винда 7 (32). возможно дело в драйвере.
модель считывателя карты ACR38U-I1.
Считываемые карты GSM карты с симками, дело в том что заказчик собирает в коробки эти самые карты, перед тем как ложить в коробку хотят считать данные т.е. ICCID номер и Номер телефона, распечатать сразу стикер и наклеить в коробку, но я даже и не работал с ними, незнаю принцип работы этих ридеров. если это так же как и со сканерами (при вставке считывается в любой текстовый редактор) то разберусь без проблем, но у меня даже этого не происходит, может драйвер не тот. =((
дело в том что я с ними не работал до этого. даже не сталкивался можно сказать. и незнаю при вставке что должно происходит.
например открываю блокнот и вставляю карту, ничего не происходит. винда 7 (32). возможно дело в драйвере.
модель считывателя карты ACR38U-I1.
Считываемые карты GSM карты с симками, дело в том что заказчик собирает в коробки эти самые карты, перед тем как ложить в коробку хотят считать данные т.е. ICCID номер и Номер телефона, распечатать сразу стикер и наклеить в коробку, но я даже и не работал с ними, незнаю принцип работы этих ридеров. если это так же как и со сканерами (при вставке считывается в любой текстовый редактор) то разберусь без проблем, но у меня даже этого не происходит, может драйвер не тот. =((
26.
Геннадьевич
22
21.05.14 08:57
Сейчас в теме
Кто может поделиться примерами работы с этими картами?
Сама библиотека есть, описание есть, хотелось бы взглянуть на примеры.
Сама библиотека есть, описание есть, хотелось бы взглянуть на примеры.
(28) вот короче пример того как я вытаскивал нужный мне код, в твоем случае немного может отличатся.
ПодключитьВнешнююКомпоненту("AddIn.PCSCCard");
Карта = Новый("AddIn.PCSCCard");
Результат = Карта.НастроитьРидерНаТипКарт();
Карта.ИмяРидера = readername;
Результат = Карта.Подключиться();
//#select EF (elementary file) [SELECT FILE]
//Transmit: A0 A4 00 00 02 2F E2
//Card answered: 9F 0F
Карта.ПередатьAPDU("A0A40000022FE2",260);
//#забираю ответ карты [GET RESPONSE]
//Transmit: A0 C0 00 00 0F
//Card answered: 90 00
//00 00 00 0A 2F E2 04 00 0F F0 44 05 02 00 00
//Карт.ПередатьAPDU("A0C000000F",20);
//#Читаю файл с ICCID[READ BINARY]
//Transmit: A0 B0 00 00 0A
//Card answered: 90 00
//98 07 01 01 80 25 62 03 16 16
Карта.ПередатьAPDU("A0B000000A",260);
ОтветКарты = Карта.ОтветКарты;
Карта.Отключиться();
iccid = "";
псНеЧетное = "";
Для Инд=1 По СтрДлина(ОтветКарты) Цикл
псЧисло = Сред(ОтветКарты,Инд,1);
Остаток = Инд%2;
Если Остаток=0 Тогда //Четное
iccid = iccid + псЧисло + псНеЧетное;
псНеЧетное = "";
Иначе //Нечетное
псНеЧетное = псЧисло;
КонецЕсли;
КонецЦикла;
iccid = Сред(iccid,2,18);
ТекСтрока.ICCIDКарта = iccid; Показать
30.
Геннадьевич
22
22.05.14 12:26
Сейчас в теме
(29) a3a, Скажите марку Вашего ридера и карт. А с примерами из SDK ваш ридер работает?
у меня обычная карта где симка еще не отломлена.
например меня ATR карты был: 3B1F9480310073122113574A33052C323400
там еще я заметил что новые карты, там чип немного другой, они моментально считываются, а старого образца с таким же количеством полей считываются через сек 10-15.
например меня ATR карты был: 3B1F9480310073122113574A33052C323400
там еще я заметил что новые карты, там чип немного другой, они моментально считываются, а старого образца с таким же количеством полей считываются через сек 10-15.
35.
Геннадьевич
22
22.05.14 13:06
Сейчас в теме
(34) a3a, Собственно это и возвращает. В тех поддержке SDK сказали, что мой ридер не поддерживается, хотя, карту видет и ATR её читает. Только сами данные не читает и не пишет.
Есть пример как чарез APDU работать? Что бы понять как это вообще работает?
Есть пример как чарез APDU работать? Что бы понять как это вообще работает?
PCSCCard_ACOS не будет работать
а вот
Карта = Новый("AddIn.PCSCCard");
Карта.ИмяРидера = readername;
Результат = Карта.Подключиться(
подключается тока надо работать с APDU командами.
я же пример закинул в 29 посте, просто нацепи на кнопку эту процедуру и прогони, должнен вызвратить.
а вот
Карта = Новый("AddIn.PCSCCard");
Карта.ИмяРидера = readername;
Результат = Карта.Подключиться(
подключается тока надо работать с APDU командами.
я же пример закинул в 29 посте, просто нацепи на кнопку эту процедуру и прогони, должнен вызвратить.
Карты тахографов можно прочитать только через APDU команды, высокоуровневых функций для работы с таким типом карт в SDK нет.
На текущий момент поддерживаются высокоуровневые команды для карт:
Бесконтактных:
Смарт-карты Mifare Utralight, Mifare Ultralight C, Mifare ID;
Смарт-карты Mifare Classic 1K/4K;
Смарт-карты Mifare DESFire, Mifare DESFire EV1;
Смарт-карты Mifare Plus S/X 1К/2K/4K SL1.
Контактных:
Микропроцессорные карты: ACOS3-72k, ACOS3х (вплоть до 256К);
Карты памяти SLE4442, SLE4428, Microchip 24LC.
Остальные карты (как контактные так и бесконтактные) можно поддержать на уровне приема-передачи APDU команд.
Также приведу список официально поддерживающихся устройств для чтения-записи смарт-карт:
Бесконтактные и дуальные:
ACS ACR122u, ACR1281u, ACR1251u, ACR1252u.
HID OMNIKEY 5х21;
IDENTIVE SDIххх, SCLхх;
Контактные:
ACS ACR 38х-хх, ACR 39х-хх;
Семейство устройств HID OMNIKEY;
Семейство контактных ридеров IDENTIVE (ранее – SCM Microsystems).
Официальный производитель:
Техподдержка и консультация по почте: helpdesk@isbc.ru
На текущий момент поддерживаются высокоуровневые команды для карт:
Бесконтактных:
Смарт-карты Mifare Utralight, Mifare Ultralight C, Mifare ID;
Смарт-карты Mifare Classic 1K/4K;
Смарт-карты Mifare DESFire, Mifare DESFire EV1;
Смарт-карты Mifare Plus S/X 1К/2K/4K SL1.
Контактных:
Микропроцессорные карты: ACOS3-72k, ACOS3х (вплоть до 256К);
Карты памяти SLE4442, SLE4428, Microchip 24LC.
Остальные карты (как контактные так и бесконтактные) можно поддержать на уровне приема-передачи APDU команд.
Также приведу список официально поддерживающихся устройств для чтения-записи смарт-карт:
Бесконтактные и дуальные:
ACS ACR122u, ACR1281u, ACR1251u, ACR1252u.
HID OMNIKEY 5х21;
IDENTIVE SDIххх, SCLхх;
Контактные:
ACS ACR 38х-хх, ACR 39х-хх;
Семейство устройств HID OMNIKEY;
Семейство контактных ридеров IDENTIVE (ранее – SCM Microsystems).
Официальный производитель:
Техподдержка и консультация по почте: helpdesk@isbc.ru
Делали свой ридер и интегрировали его в 1с без особых проблем. Для карт mifare classic 1к.
Запись карт пакетно из 1С так и в одиночном режиме. Устройство ставит пароли на блоки карты, шифрует всю информацию перед записью. Есть дисплей для чтения информации с карт и отображения процессов записи. Прелесть устройства не только доступная цена, но и то что все алгоритмы шифрования и пароли не доступны для третьих лиц.
Запись карт пакетно из 1С так и в одиночном режиме. Устройство ставит пароли на блоки карты, шифрует всю информацию перед записью. Есть дисплей для чтения информации с карт и отображения процессов записи. Прелесть устройства не только доступная цена, но и то что все алгоритмы шифрования и пароли не доступны для третьих лиц.
Делали свой ридер и интегрировали его в 1с без особых проблем. Для карт mifare classic 1к.
Запись карт пакетно из 1С так и в одиночном режиме. Устройство ставит пароли на блоки карты, шифрует всю информацию перед записью. Есть дисплей для чтения информации с карт и отображения процессов записи. Прелесть устройства не только доступная цена, но и то что все алгоритмы шифрования и пароли не доступны для третьих лиц.
Запись карт пакетно из 1С так и в одиночном режиме. Устройство ставит пароли на блоки карты, шифрует всю информацию перед записью. Есть дисплей для чтения информации с карт и отображения процессов записи. Прелесть устройства не только доступная цена, но и то что все алгоритмы шифрования и пароли не доступны для третьих лиц.
(46) Взлетело на 8.3? Если да то поделитесь как.
У меня нет. Пишет установка внешней компоненты не выполнена.
Что сделал: загрузил ESDK2_1C.dll в общий макет как двоичные данные, назвал макет "ВнешняяКомпонента"
Пишу код на кнопку с именем тест:
У меня нет. Пишет установка внешней компоненты не выполнена.
Что сделал: загрузил ESDK2_1C.dll в общий макет как двоичные данные, назвал макет "ВнешняяКомпонента"
Пишу код на кнопку с именем тест:
&НаКлиенте
Процедура Тест(Команда)
ПодключитьКомпоненту(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПодключитьКомпоненту(УстановитьЕслиНеПодключено) Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеПодключения", ЭтотОбъект, УстановитьЕслиНеПодключено);
НачатьПодключениеВнешнейКомпоненты( ОписаниеОповещения,"AddIn.PCSCCapture");
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодключения(Подключено,УстановитьЕслиНеПодключено) Экспорт
Если Подключено Тогда
// Внешняя компонента подключена
ИначеЕсли УстановитьЕслиНеПодключено Тогда
НачатьУстановкуВнешнейКомпоненты(
Новый ОписаниеОповещения(
"ПодключитьКомпоненту",
ЭтотОбъект,
Ложь),
"ОбщийМакет.ВнешняяКомпонента");
Иначе
// Не удалось установить или подключить
// внешнюю компоненту
КонецЕсли;
КонецПроцедуры Показать
(51)
Процедура ПодключитьКомпонентуСчитывателя() Экспорт
#Если ВебКлиент тогда
глСчитыватель.Работает = Ложь;
#Иначе
Ошибка = 0;
глСчитыватель = Новый Структура;
глСчитыватель.Вставить("Работает", Истина);
Если ПодключитьВнешнююКомпоненту("AddIn.PCSCCapture") Тогда
глСчитыватель.Вставить("Захват", Новый("AddIn.PCSCCapture"));
Иначе
Ошибка = Ошибка + 1;
ЗаписатьСобытиеСчитывателя(Новый Структура("Сообщение, УровеньОшибки", "PCSCCapture ошибка подключения", "Ошибка"));
КонецЕсли;
Если ПодключитьВнешнююКомпоненту("AddIn.PCSCCard_Mifare") Тогда
глСчитыватель.Вставить("Карта", Новый("AddIn.PCSCCard_Mifare"));
Иначе
Ошибка = Ошибка + 1;
ЗаписатьСобытиеСчитывателя(Новый Структура("Сообщение, УровеньОшибки", "PCSCCard_Mifare ошибка подключения", "Ошибка"));
КонецЕсли;
Если ПодключитьВнешнююКомпоненту("AddIn.PCSCInfo") Тогда
глСчитыватель.Вставить("Инфо", Новый("AddIn.PCSCInfo"));
Иначе
Ошибка = Ошибка + 1;
ЗаписатьСобытиеСчитывателя(Новый Структура("Сообщение, УровеньОшибки", "PCSCInfo ошибка подключения", "Ошибка"));
КонецЕсли;
Если ПодключитьВнешнююКомпоненту("AddIn.DataHelper") Тогда
глСчитыватель.Вставить("Дата", Новый("AddIn.DataHelper"));
Иначе
Ошибка = Ошибка + 1;
ЗаписатьСобытиеСчитывателя(Новый Структура("Сообщение, УровеньОшибки", "DataHelper ошибка подключения", "Ошибка"));
КонецЕсли;
Если Ошибка > 0 Тогда
глСчитыватель.Работает = Ложь;
КонецЕсли;
#КонецЕсли
КонецПроцедуры
Показать
(52)
Спасибо добрый человек!
для тех у кого не получается: нужно DLL сложить на 8.3 не в C:\Program Files (x86) как раньше, а в
C:\Users\UsersTest\AppData\Local\Programs\1cv8_x86\8.3.25.1501\bin (имя пользователя ваше и релиз 1с то же.)
так же глСчитыватель - переменная с типом Произвольный кидаем на форму.
на x64 позже буду мучить, отпишусь.
Спасибо добрый человек!
для тех у кого не получается: нужно DLL сложить на 8.3 не в C:\Program Files (x86) как раньше, а в
C:\Users\UsersTest\AppData\Local\Programs\1cv8_x86\8.3.25.1501\bin (имя пользователя ваше и релиз 1с то же.)
так же глСчитыватель - переменная с типом Произвольный кидаем на форму.
на x64 позже буду мучить, отпишусь.
(51)
Функция ПрочитатьКодКарты() Экспорт
KeyA = "";
BinKeyA = "";
VARFALSE = 0;
CL_KEYTYPE_MIFARE_A = 96;
BinData = "";
aSectorData = "";
глСчитыватель.Карта.BeginTransaction();
глСчитыватель.Карта.MakeBinaryCode(KeyA, BinKeyA);
/// загружаем ключ
Если глСчитыватель.Карта.LoadKey(VARFALSE,CL_KEYTYPE_MIFARE_A,0,BinKeyA) = 1 Тогда
//Сообщить("Ключа А1 " + BinKeyA + " загружен в ридер.");
Иначе
ЗаписатьСобытиеСчитывателя(Новый Структура("Сообщение, УровеньОшибки", "Ошибка при загрузке ключа А в считыватель " + глСчитыватель.Карта.ИмяРидера, "Ошибка"));
return 0;
КонецЕсли;
глСчитыватель.Карта.Authenticate(1,VARFALSE,CL_KEYTYPE_MIFARE_A,0);
Если глСчитыватель.Карта.ReadBinary(4) = 1 Тогда
BinData = глСчитыватель.Карта.ОтветКарты;
глСчитыватель.Дата.HexStringToString(BinData, aSectorData);
Возврат ЛЕВ(aSectorData,16);
Иначе
ЗаписатьСобытиеСчитывателя(Новый Структура("Сообщение, УровеньОшибки", "Ошибка чтения с карты Mifare с блока 4 " + глСчитыватель.Карта.ИмяРидера, "Ошибка"));
//return;
КонецЕсли;
// заканчиваем транзацию
глСчитыватель.Карта.EndTransaction();
КонецФункции Показать
(53) на ключ тут ругается, но мне от карты нужно только получить её номер и найти по базе кому принадлежит карта, т.е. установить физлицо.
Написал вот такой код
Не выполняется условие глСчитыватель.Карта.Connect() = 1. Пока ищё что-не так.
Написал вот такой код
&НаКлиенте
Процедура ПрочитатьКодКарты2()
Если глСчитыватель.Захват.InitializeCapture() <> 1 Тогда
Сообщить("Ошибка при инициализации захвата");
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные) экспорт
ATR = "";
Если(Источник = "PCSCCapture") и (Событие = "КартаЗахвачена") Тогда
глСчитыватель.Карта.ИмяРидера = Данные;
Если глСчитыватель.Карта.Connect() = 1 Тогда
uid = "";
глСчитыватель.Карта.GetUID(uid);
Сообщить(uid);
//глСчитыватель.Карта.Disconnect();
//Иначе
// uid = "";
// Сообщить("Карта не опознана");
КонецЕсли;
КонецЕсли;
КонецПроцедуры ПоказатьНе выполняется условие глСчитыватель.Карта.Connect() = 1. Пока ищё что-не так.
(52)
(55)
Делаем захват
Ловим во внешнем событии прикладывание карты
На 32 битах работает на 64 -нет.
@sys1c вы на 32 битной 1с сидите или на 64-битной? в C:\Program Files\1cv8\8.3.25.1501\bin положил драйвера, отрегал, но не работает что-то.... не взлетит? Получается тех кто будет работать с ридером запускать в 32 битном режиме?
(55)
Делаем захват
Если глСчитыватель.Захват.InitializeCapture() <> 1 Тогда
Сообщить("Ошибка при инициализации захвата");
Возврат;
КонецЕсли;
Ловим во внешнем событии прикладывание карты
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если(Источник = "PCSCCapture") и (Событие = "КартаЗахвачена")
Тогда
Карта = глСчитыватель.Карта;
Результат = Карта.НастроитьРидерНаТипКарт();
Карта.ИмяРидера = Данные;
Результат = Карта.Подключиться();
Карта.ПередатьAPDU("FFCA000000",256);
ОтветКарты = Карта.ОтветКарты;
UID = Сред(ОтветКарты, 1, СтрДлина(ОтветКарты) - 4);
Сообщить("ОтветКарты4 = "+ОтветКарты);
Сообщить("UID = "+UID);
Карта.Отключиться();
UID_Исходный = UID;
UID_Обратный = ОбратитьБайтыHEX(UID_Исходный);
Сообщить(UID_Обратный);
КонецЕсли;
КонецПроцедуры ПоказатьНа 32 битах работает на 64 -нет.
@sys1c вы на 32 битной 1с сидите или на 64-битной? в C:\Program Files\1cv8\8.3.25.1501\bin положил драйвера, отрегал, но не работает что-то.... не взлетит? Получается тех кто будет работать с ридером запускать в 32 битном режиме?
Чтение 4ого сектора на ACR1252U:
ПодключитьВнешнююКомпоненту("AddIn.PCSCCard");
КартаMifare = Новый("AddIn.PCSCCard");
Если КартаMifare.Connect() = 1 и КартаMifare.BeginTransaction()=1 тогда
//Загрузка ключа
КартаMifare.Transmit("FF82000006FFFFFFFFFFFF","20");
//Возвращает 90 00, все ок
//Аутентификация
КартаMifare.Transmit("FF8800046000","20");
//Возвращает 90 00, все ок
//Читаем 4ый сектор
КартаMifare.Transmit("FFB0000410","20");
//Получили значение 4того сектора.
aData = КартаMifare.ОтветКарты;
КонецЕсли; Показать
59.
ishbulatova68
28.05.26 15:16
Сейчас в теме
Люди добрые!Скиньте ,пожалуйста, dll и описание. Хотели купить этот sdk (очень нужен),но нам сказали: тех. отдел разогнали,"SDK :: Смарт-карты в 1С:Предприятие" не поддерживаем и не продаем.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот