Я пытаюсь прочитать данные из файла на смарт-карте, я использую следующую команду APDU
00 B0 00 02 00
но я получаю этот ответ:
A1 1B 4F 0C A0 00 00 00 77 02 08 05 04 49 44 01 50 07 43 4E 49 2D 43 53 45 51 02 10 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00
Как преобразовать или прочитать это значение в шестнадцатеричном кодировании?
Последние два байта составляют слово состояния (SW), сначала 90
а затем 00
. Остальное представляет собой шестнадцатеричное кодирование двоичных данных в файле.
Похоже, что содержимое кодируется ASN.1 BER. Таким образом, вы должны BER декодировать ответ. BER - TLV (значение длины тега). Итак, первые два байта - это тег и значение, A1 1B
. Смысл текста зависит от контекста (так что посмотрите спецификацию для этого конкретного файла). Таким образом, ваш файл фактически содержит 2 + 1B
байт, или 29 байтов, остальные оставлены до значения по умолчанию 00
.
Декодирование BER указано в ISO 7816-4, которое вам действительно нужно понять, чтобы понять что-либо о смарт-картах на базе файлов. Также взгляните на страницу Википедии об ASN.1 и взгляните на декодированное значение здесь.
Вам необходимо следовать TS 11.11, TS 11.14, TS 03.48.
http://www.etsi.org/deliver/etsi_ts/100900_100999/100977/08.14.00_60/ts_100977v081400p.pdf
http://www.etsi.org/deliver/etsi_ts/101200_101299/101267/08.18.00_60/ts_101267v081800p.pdf
http://www.etsi.org/deliver/etsi_ts/101100_101199/101181/08.09.00_60/ts_101181v080900p.pdf