Просмотр файловой структуры смарт-карты с помощью команд APDU

У меня есть смарт-карта (Carte Vitale, используемая во Франции), и мне нужно знать, где хранится дата рождения. Но я не нашел никакой информации о файловой структуре.

Для бельгийской карты eID я сделал то же самое, и я могу легко прочитать дату рождения с помощью команд APDU. Но бельгийское правительство предоставило достойную информацию о файловой структуре карты.

Есть ли способ «просмотреть» файловую структуру смарт-карты с помощью APDU, чтобы увидеть, что на ней и по какому адресу, ничего об этом не зная?

EDIT: я нашел дополнительную информацию о чтении информации из Carte Vitale: здесь и здесь.

Кусок из первой ссылки, раздел "API или не API? Вот в чем вопрос...". Переведено Google... не идеально, но вы поняли:

* Общеизвестно, что BC C0 00 00 08 определяет последний адрес карты памяти, первой неизменно является команда 0200h. Обычно (ADMAX = 2188h), и мы находим от 2128h до 2180h «производственную область», содержащую указатели на все интересующие области (в нашем случае чтение без пробелов будет простираться от 0288h до 2180h). При этом команда BC 02 88 04 B0 вернет содержимое первого 32-битного слова, а BC B0 21 80 04 — последнего. Между ними столько всего интересного! Непосредственно перед производственной зоной несколько слов напоминают о «сопоставлении компонентов», упомянутом на странице 20 спецификации нагрузок V1.40. Представьте, и команда BC B0 20 18 F8 возвращает следующие данные:

3F FF 88 C3  
3F 20 C3 50  
20 80 02 F0  
00 3F C2 B8  
2D 3F C2 A0  
2C FF 98 C2  

Среди "указателей" (?) на C388h C298h обращает на себя внимание 02F0h. Итак, давайте BC B0 02 14 F0, и доставим нас к простой расшифровке первых двух слов:

3F FF F5 40  0011 1111 1111 1111 1111 0101 0100 0000  
24 08 43 FF  0010 0100 0000 1000 0100 0011 1111 1111  
3F FF FF FF  
3F FF FF FF  
3F FF FF F8  

Игнорируя первые два бита каждого слова, а затем формируя группы из четырех бит, можно легко извлечь числа BCD 54 09 02 и, в частности, дату рождения единственного бенефициара 09.02.1954!*

Мой ADMAX отличается: это 21 20. Означает ли это, что я могу написать программу, которая выполняет BC B0 02 00 08 для чтения первых 8 байтов, затем добавляет 8 байтов к адресу 02 00, затем читает это снова и так далее? , вплоть до ADMAX 21 20? Смогу ли я тогда прочитать все читаемые даты на карте? Или я вижу вещи слишком простыми?

Спасибо еще раз!


person SonOfGrey    schedule 12.07.2013    source источник
comment
Я не знаю, пытаетесь ли вы читать старую Carte Vitale. Новые, выпущенные с октября прошлого года, являются процессорными картами, не охваченными вашими недавно добавленными (но довольно устаревшими) ссылками.   -  person guidot    schedule 16.07.2013


Ответы (1)


Поскольку вы упоминаете «по какому адресу», я твердо предполагаю, что бельгийская карта - это простая карта памяти.

Carte Vitale — процессорная карта. Такие карты не обязательно имеют средства, сравнимые с командой каталога; иногда есть информационные файлы, поддерживающие это, но без спецификации вы совсем потеряетесь. В закрытых системах со специфическими приложениями такие информационные файлы маловероятны.

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

Вот страница медицинского страхования на французском языке, но моего знания французского языка недостаточно, чтобы найти спецификацию карты.

person guidot    schedule 12.07.2013