Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
6JIoHgu

Персонализация (файловая система) карт ACOS

17.04.2013, 10:51. Показов 1356. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Итак по порядку. Поставлена задача, персонализировать (создать файловую структуру и перевести в USER Stage) несколько карт семейства ACOS. Алгоритм представлен в этом мануале по карте -> http://www.smartcardreader.ru/... _v1.07.pdf
код пишу на питоне.

Ну а теперь загвоздка =(. на пункте 5 алгоритма начинается сбой.
Суть в том что на предыдущих шагах в 3ий байт 1ой записи Personalization file мы записываем кол-во файлов, которое будет создано на карте (в нашем случае максимальное кол-во файлов 31, это значение и используется в коде ЗЫ другие значения <31 тоже пытался использовать, но никаких результатов это не дало), после ресета карты, на основании записанных данных в User File Management File автоматически создаются записи, в которые записывается информация о пользовательских файлах карты (адреса, особенности доступа и т.д.), кол-во записей равно кол-ву файлов, которое мы записали ранее.

НО! по после записи кол-ва файлов и ресета, необходимые записи не сохдаются, и как следствие не получается создать файловую структуру.

код для персонализации:
1ая часть до ресета:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from iso7816 import ISO7816
 
card = ISO7816()
ret = card.sr_apdu([0x80, 0x20, 0x07, 0x00, 0x08, 0x41, 0x43, 0x4F, 0x53, 0x54, 0x45, 0x53, 0x54 ])
print ret
ret = card.sr_apdu([0x80, 0xA4, 0x00, 0x00, 0x02, 0xFF, 0x01])
print ret
ret = card.sr_apdu([0x80, 0xD2, 0x01, 0x00, 0x01, 0xFF])
print ret
ret = card.sr_apdu([0x80, 0xA4, 0x00, 0x00, 0x02, 0xFF, 0x02])
print ret
ret = card.sr_apdu([0x80, 0xD2, 0x01, 0x00, 0x03, 0x35, 0x00, 0x1F])
print ret
Продолжение алгоритма после ресета:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from iso7816 import ISO7816
 
card = ISO7816()
ret = card.sr_apdu([0x80, 0x20, 0x07, 0x00, 0x08, 0x41, 0x43, 0x4F, 0x53, 0x54, 0x45, 0x53, 0x54 ])
print ret
ret = card.sr_apdu([0x80, 0xA4, 0x00, 0x00, 0x02, 0xFF, 0x04])
print ret
j = 0
for i in xrange(0x20):
    j += 1
    ret = card.sr_apdu([0x80, 0xD2, j, 0x00, 0x06, 0xA0, 0x10, 0x00, 0x00, 0x1f, j])
    print ret
ret = card.sr_apdu([0x80, 0xA4, 0x00, 0x00, 0x02, 0xFF, 0x02])
print ret
ret = card.sr_apdu([0x80, 0xD2, 0x01, 0x01, 0x01, 0x00])
print ret
ret = card.sr_apdu([0x80,0xD2, 0x01, 0x03, 0x01, 0x80])
print ret
теперь соответственно ответы при запуске :

часть первая, до ресета карты

['VERIFY apdu: 80 20 07 00 08 41 43 4F 53 54 45 53 54', 'sw1, sw2: 90 00 - normal processing: command accepted: no further qualification', (144, 0), []]
['SELECT FILE apdu: 80 A4 00 00 02 FF 01', 'sw1, sw2: 90 00 - normal processing: command accepted: no further qualification', (144, 0), []]
['apdu: 80 D2 01 00 01 FF', 'sw1, sw2: 90 00 - normal processing: command accepted: no further qualification', (144, 0), []]
['SELECT FILE apdu: 80 A4 00 00 02 FF 02', 'sw1, sw2: 90 00 - normal processing: command accepted: no further qualification', (144, 0), []]
['apdu: 80 D2 01 00 03 35 00 1F', 'sw1, sw2: 90 00 - normal processing: command accepted: no further qualification', (144, 0), []]


часть вторая, после ресета карты

['VERIFY apdu: 80 20 07 00 08 41 43 4F 53 54 45 53 54', 'sw1, sw2: 90 00 - normal processing: command accepted: no further qualification', (144, 0), []]
['SELECT FILE apdu: 80 A4 00 00 02 FF 04', 'sw1, sw2: 90 00 - normal processing: command accepted: no further qualification', (144, 0), []]
['apdu: 80 D2 01 00 06 A0 10 00 00 1F 01', 'sw1, sw2: 6A 83 - checking error: wrong parameter(s) P1-P2: record not found: undefined SW2 code: 0x83', (106, 131), []]
* * *
['apdu: 80 D2 1F 00 06 A0 10 00 00 1F 1F', 'sw1, sw2: 6A 83 - checking error: wrong parameter(s) P1-P2: record not found: undefined SW2 code: 0x83', (106, 131), []]
['apdu: 80 D2 20 00 06 A0 10 00 00 1F 20', 'sw1, sw2: 6A 83 - checking error: wrong parameter(s) P1-P2: record not found: undefined SW2 code: 0x83', (106, 131), []]
['SELECT FILE apdu: 80 A4 00 00 02 FF 02', 'sw1, sw2: 90 00 - normal processing: command accepted: no further qualification', (144, 0), []]
['apdu: 80 D2 01 01 01 00', 'sw1, sw2: 90 00 - normal processing: command accepted: no further qualification', (144, 0), []]
['apdu: 80 D2 01 03 01 80', 'sw1, sw2: 90 00 - normal processing: command accepted: no further qualification', (144, 0), []]

как видно во второй части, возникает ошибка что запись не найдена.

то что кол-во файлов записанно на предыдущих этапах в нужное место проверяю следующим кодом:
Python
1
2
3
4
5
6
7
from iso7816 import ISO7816
 
card = ISO7816()
ret = card.sr_apdu([0x80, 0xA4, 0x00, 0x00, 0x02, 0xFF, 0x02])
print ret
ret = card.sr_apdu([0x80,0xB2,0x01, 0x00, 0x04 ])
print ret
и получаем ответ:
Ответ

['SELECT FILE apdu: 80 A4 00 00 02 FF 02', 'sw1, sw2: 90 00 - normal processing: command accepted: no further qualification', (144, 0), []]
['READ RECORD apdu: 80 B2 01 00 04', 'sw1, sw2: 90 00 - normal processing: command accepted: no further qualification', (144, 0), [53, 0, 31, 128]]


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

Алексей.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.04.2013, 10:51
Ответы с готовыми решениями:

Файловая система
Товарищи, подскажите, пожалуйста. Есть две отладочная платы: - STM32F4Discovery - STM32F4Discovery-Disc1 Когда, мы...

Файловая система и система управления вводом-выводом в ОС Linux
Дали задание написать вот что: &quot;Разработать программу, которая выводит на экран содержимое текущего каталога, упорядоченное по времени...

Файловая система
Хочу сделать вот такой просмотр всех файлов компьютера(как, например, в WinSCP) на Python. Хотел бы сделать свой FTP-клиент. Не могли бы...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.04.2013, 10:51
Помогаю со студенческими работами здесь

Файловая система
Здравствуйте! Не могли бы вы подсказать как нужно форматировать логический диск, чтобы его видела Windows и Ubuntu?

Файловая система
Сначала отключился xorg, при перезагрузке выскочила надпись: error unknown filesystem grub rescue&gt; Я загрузился под ливСД и...

Файловая система в с++
Для многих задач на олимпиадах по информатике требуется файловая система.Начав изучать с++,я понял,что не могу понять ,как здесь ее...

Файловая система
Помогите. Я уже копаюсь не первые сутки не могу нормально скомпилировать две части кода и переделать их под Windows. Я наскрябал 2...

файловая система
Дано целое число K&gt;0 и текстовый файл. Создать 2 файла: текстовый, содержащий 1-е K символов каждой строки исходного файла, и символьный,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru