Расшифровка BER TLV

У меня проблема с расшифровкой этого TLV

Тег шаблона (7001) 2 байта

Тег длины (0020) 2 байта

Значение — это другой TLV

Тег (e101) Длина (000f) Значение (373834313938353338353236313430)

Тег (e102) Длина (0009) Значение (0009303931383631393038)

70010020e101000f373834313938353338353236313430e1020009303931383631393038

когда я пробую любой декодер TLV, он читает тег шаблона только как 1 байт, а затем все остальное будет пропущено. не могли бы вы посоветовать, как его разобрать? кстати, я получаю данные как Base64String, потом конвертирую в HEX


person Hassan Abu Helweh    schedule 21.02.2021    source источник
comment
Вы не упоминаете какой-либо конкретный декодер TLV, но ваша интерпретация LENGTH ошибочна. Если присутствует поле длины, либо первый байт равен ‹ 7F, тогда он представляет прямую длину, либо 8x, тогда x кодирует количество последующих байтов, кодирующих длину. 0020 будет интерпретироваться как 00, а 20 как следующий тег. Подробности см. в ISO 7816, часть 4.   -  person guidot    schedule 22.02.2021
comment
Это, вероятно, было написано кем-то, кто хотел написать что-то похожее на TLV, но не имел должного знания правил. Поэтому формат кажется проприетарным, и я не думаю, что вы найдете подходящий парсер.   -  person Paul Bastian    schedule 22.02.2021
comment
Этот вопрос помечен asn.1. В ASN.1 BER (ITU-T X.690) 0x70 указывает на приложение, созданное тегом из 16. Таким образом, тег действительно будет 1 байтом. Данные либо неверны (если вы ожидаете чего-то другого), либо не являются данными X.690 BER, либо вы сами их неправильно интерпретируете.   -  person Kevin    schedule 22.02.2021


Ответы (1)


Декодер BER интерпретирует этот поток TLV следующим образом:

byte 1,     byte 2,     byte 3,     byte 4 
T=01110000, L=00000001, V=00000000, <end> 
                          ^ inner TLV, starts with T=0 and no place for LV
              ^ length of the V is 1 byte (!!! this why it ends prematurely !!!)
     ^ 10000=SEQUENCE or SEQUENCE OF tag 16
    ^ 1=constructed tag
  ^ 01=APPLICATION tag
person AKha    schedule 23.02.2021