powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Чтение электронного полиса ОМС
25 сообщений из 30, страница 1 из 2
Чтение электронного полиса ОМС
    #38656720
ShadowMen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла необходимость считать данные со смарт-карты Полис ОМС
Карту подключить и определить смог. Получил атрибуты карты.
Далее затык... Куда копать?
PS Использую обертку WinSCard
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #38656721
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShadowMenКуда копать?
Копать в сторону "зачем я это сделал и что мне нужно в итоге?"
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #38656727
ShadowMen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman"зачем я это сделал и что мне нужно в итоге?"
Возникла необходимость считать данные со смарт-карты Полис ОМС
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #38656732
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShadowMenwadman"зачем я это сделал и что мне нужно в итоге?"
Возникла необходимость считать данные со смарт-карты Полис ОМС
Это понятно. С атрибутами то в чем проблема, раз они прочитаны? Зашифрованы?
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #38656745
ShadowMen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и что дальше делать со строкой ATR?
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #38697538
KIRCOMS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShadowMen,

а исходник чтения полиса покажите пож-та если это возможно (возникла такая же потребность)
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #38921633
Leo3456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я занимался этой темой все материалы которые удалось найти есть в статье http://myshinobi.ru/rabota-s-e-lektronny-mi-polisami-oms-smart-kartami-chast-pervaya/. Могу сказать просто командами не отделаетесь...Можно использовать готовые библиотеки они приложены в статье...А параметры вызова функций выдернуть из проекта на C++. Сейчас рабоатю над тем что реализовать это на Delphi.
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #38922553
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShadowMenи что дальше делать со строкой ATR?
Чтобы прочитать карту - ATR не нужен. Это всего лишь параметр карты - ответ карты на операцию Reset. По этому параметру (в идеальных условиях) можно определить тип карты.
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #38922555
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShadowMenwadman"зачем я это сделал и что мне нужно в итоге?"
Возникла необходимость считать данные со смарт-карты Полис ОМС
Что за смарт-карта?
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #38922559
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanShadowMenпропущено...

Возникла необходимость считать данные со смарт-карты Полис ОМС
Это понятно. С атрибутами то в чем проблема, раз они прочитаны? Зашифрованы?
Всё зависит от типа карты.
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #38922598
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leo3456Я занимался этой темой все материалы которые удалось найти есть в статье http://myshinobi.ru/rabota-s-e-lektronny-mi-polisami-oms-smart-kartami-chast-pervaya/. Могу сказать просто командами не отделаетесь...Можно использовать готовые библиотеки они приложены в статье...А параметры вызова функций выдернуть из проекта на C++. Сейчас рабоатю над тем что реализовать это на Delphi.
В этих исходниках ничего толкового. В чужой библиотеке метод, на вход которого подается наименование считывателя - на выходе данные. Были б исходники либы, была бы и возможность реализации своего метода чтения данных
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Чтение электронного полиса ОМС
    #39545004
ShadowMen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё успешно решено после правильного применения APDU комманд. APDU комманды можно вытащить из примера на C++
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #39545036
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShadowMen,

можно выложить код сюда? Идущий следом за тобой обязательно задаст вопрос, где взять примеры на С++. Следующим будет, как перевести этот код с "богомерзкого" © Си на дельфи :)
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #39545228
ShadowMen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это было в 2015 году... Исходники не сохранились за ненадобностью...
Но могу направить в нужное русло...
Чтение с карты осуществляется с помощью APDU комманд.
1. Подключаемся к карте. Получаем атрибуты карты (talkToMe в помощь)
2. Читаем root. Если всё сделано правильно должен возвратиться ответ с кодом 90

// Пример APDU комманд для чтения
00 a4 04 0c 09 66 6f 6d 73 5f 72 6f 6f 74 //Выбор foms_root
00 a4 04 0c 07 46 4f 4d 53 5f 49 44 //Выбор FOMS_ID
00 a4 02 0c 02 02 01 //Выбор файла 0201
00 b0 00 00 01 //(62)
00 b0 00 01 01 //(81)
00 b0 00 02 01 //(A7)
00 b0 00 03 a7 //Чтение данных
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #39579531
genok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShadowMen// Пример APDU комманд для чтения
00 a4 04 0c 09 66 6f 6d 73 5f 72 6f 6f 74 //Выбор foms_root
00 a4 04 0c 07 46 4f 4d 53 5f 49 44 //Выбор FOMS_ID
00 a4 02 0c 02 02 01 //Выбор файла 0201
00 b0 00 00 01 //(62)
00 b0 00 01 01 //(81)
00 b0 00 02 01 //(A7)
00 b0 00 03 a7 //Чтение данных

доброе время суток
а это точно для смарт-карты с полисом команды?
у меня на каждую из них возвращается 6D00
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #39579549
genok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
заработало, какие-то данные увидел
теперь надо понять что это за данные и как их декодировать

автор5F 26 10 36 31 35 31 37 31 30 38 38 36 30 30 30 34 36 30 5F 21 12 420 2018 420 A0 420 452 420 45E 420 408 420 490 420 98 420 45C 420 452 5F 22 0C 420 201C 420 452 420 203A 420 98 420 45C 420 452 5F 23 14 420 45C 420 98 420 459 420 45B 420 203A 420 452 420 2022 420 2019 420 45C 420 452 5F 25 01 02 5F 24 04 13 08 19 201A 7F 30 33 5F 31 06 420 A0 420 45B 420 A4 5F 32 27 420 A0 420 455 421 403 421 403 420 451 420 2116 421 403 420 454 420 B0 421 40F 20 420 A4 420 B5 420 491 420 B5 421 402 420 B0 421 2020 420 451 421 40F 5F 29 12 420 A0 420 45B 420 40E 420 45E 420 45B 420 2019 2D 420 45C 2F 420 201D 5F 2A 04 452 00
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #39579800
genok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShadowMen// Пример APDU комманд для чтения
00 b0 00 03 a7 //Чтение данных

данные получилось увидеть, но это только часть того, что на полисе лежит
какими командами остальное увидеть можно?
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #39580194
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
genok, фонд омс когда-то раздавал pcbcode.dll для дешифровки этих данных, сейчас не знаю.
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #39610145
genok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvbgenok, фонд омс когда-то раздавал pcbcode.dll для дешифровки этих данных, сейчас не знаю.

библиотеку эту очень не хотелось бы использовать

так и не могу остальные коды APВDU найти
неужто нет ни у кого?
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #39633269
Dstr1100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Благодаря вашей ветке получилось почти домучать ОМС полис.
Выполняя команды

ShadowMen
// Пример APDU комманд для чтения
00 a4 04 0c 09 66 6f 6d 73 5f 72 6f 6f 74 //Выбор foms_root
00 a4 04 0c 07 46 4f 4d 53 5f 49 44 //Выбор FOMS_ID
00 a4 02 0c 02 02 01 //Выбор файла 0201
00 b0 00 00 01 //(62)
00 b0 00 01 01 //(81)
00 b0 00 02 01 //(A7)
00 b0 00 03 a7 //Чтение данных

получил схожий набор данных как genok. Расшифровать их можно без дополнительных сторонних библиотек. Что бы увидеть результат, можно вставить выходной результат в Notepad++ (выделить весь текс) – Плагины-Converter-Hex to ANSII . А дальше кто на чем пишет (у меня задача на Java).
Между блоками 5F 26 и 5F 21 (Номер полиса)
Между блоками 5F 21 и 5F 22 (Фамилия)
Между блоками 5F 22 и 5F 23 (Имя)
Между блоками 5F 23 и 5F 25 (Отчество)
Между блоками 5F 24 и 5F 31 (Дата рождения в открытом виде ее сразу видно) остальные данные (наверно ОКАТО на двух полисах одинаково)
Между блоками 5F 31 и 5F 32 (Гражданство)
Между блоками 5F 32 и 5F 29 (Гражданин)
Между блоками 5F 29 и 90 00 (Кусок от Места рождения).
Возможно между 5F 25 и 5F 24 пол. (для тестов нет женского полиса только 2 мужских)
Название страховой находится в другом файле (00 a4 02 0c 02 02 01 //Выбор файла 0201). Пробовал 02 02 , 02 00, 03 01 В каком то вывалил информацию о карте. Может кто знает где лежат остальные данные?
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #39634045
genok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dstr1100,

там чуть не так
5F 26 - обозначение блока
далее - его длина, её нужно использовать

если будешь брать то, что типа между блоками лежит, то рискуешь напороться на проблему в случае, когда порядок блоков будет изменен.

по поводу остальных данных - остальная часть насколько я понял зашифрована
второй файл - это как раз сертификат ФОМСа и еще куча чего-то.
ХЗ как вытащить данные, так и не победил
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #39634049
genok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dstr1100,

вот еще про данные было
http://www.sql.ru/forum/1286879/javascript-delphi
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #39634565
Dstr1100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
genok,
Спасибо. Допилю.
Остальные зашифрованные данные в каком именно файле (попробую расшифровать)?
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #39635730
genok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
00 a4 02 0c 02 02 02 //Выбор файла 0202

насколько понял, тут
читал кусками его, он большой
...
Рейтинг: 0 / 0
Чтение электронного полиса ОМС
    #39673071
Фотография imkot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
genok,

А есть ли в природе описание структуры хранения данных?
Она ведь иерархическая?

В настоящий момент я нашел вот такое описание сигнатур для полей (вот тут это есть https://github.com/lr131/OMSReader):
# --- Возможные поля возвращаемого пакета ---
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
DATA_KEYS = {
    'pol_num': '5f26',
    'policy': '5f26',
    'family': '5f21',
    'name': '5f22',
    'patr': '5f23',
    'sex': '5f25',
    'bdate': '5f24',
    'country_code': '5f31',
    'country': '5f32',
    'snils': '5f27',
    'dataend': '5f28',
    'bplace': '5f29',
    'data_make_oms': '5f2a',
    'fimg': '5f41',
    'img': '5f42',
    'ogrn': '5f51',
    'okato': '5f52',
    'data_start_insurance': '5f53',
    'data_end_insurance': '5f54',
    #'ecp':'5f61'
    }



В этом проекте вполне понятно описан способ чтения информации по владельцу и по СМО.
Но меня смущает, что извлечение отдельных полей основано на поиске начала каждого блока в массиве байтов.

Пытался декомпилировать библиотеки работы с полисом, написаные на C#, но получается ерунда.

Можно где-то найти описание структуры записей электронного полиса?
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Чтение электронного полиса ОМС
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]