08.11.2005 7:30:21ASN.1 BER - парсер Ответов: 4
Евгений
Если кто-нить писал ASN.1-парсер или BER-декодер или работал в этом направлении - подскажите, плз.
Теории по данному вопросу предостаточно, но на практике - есть вопросы.
Нужно знать в каком виде закодированы данные в BER-файле.
Как я понял - что-то типа:
[идентиф.октеты1][октет длины1][октеты контента1][идентиф.октеты2][октет длины2][октеты контента2]...

Задача - считать из BER-закодированного файла ASN.1 выборочно некоторую информацию. Формат описания ASN.1-файла для простоты таков:
...
Name1 ::= [APPLICATION 101] IMPLICIT SEQUENCE {NI1 IA5String, FI1 IA5String}
Name2 ::= [APPLICATION 102] IMPLICIT SEQUENCE {NI2 IA5String, FI2 IA5String}
...
Мне нужно получить значение NI2.
Идея такова: произвести поиск идентификационного октета в BER-файле по его типу (APPLICATION), типу кодирования (PRIMITIVE)и числовой метке (102), затем используя октет джлины выделить октеты контента и получить значение NI2.
Правильно ли это?
Если что не так понимаю - наведите на правильный путь, плз.


P.S. Просьба не отправлять на платные компиляторы.
 
Ответы:
18.11.2005 2:59:54serge3leo
Что посоветовать.

1. Лучше использовать нормальный компилятор;
2. В крайнем случае, можно использовать бесплатный компилятор (т.е. мышеловку), такие тоже есть;
3. Не пожалеть пары сотен рублей, прибрести на www.gost.ru ГОСТ Р ИСО/МЭК 8825-1-2003 и читать до просветления;
4. Найти код dumpasn1 от Гутмана и стащить оттуда нужный кусочек кода;

Успехов.
25.11.2005 11:12:01Юрий
Старый, добрый и хороший - компилятор snacc. Сейчас почти забыт. Бесплатный.

Новый, хороший - компилятор asn1c. Бесплатный.

Везде есть исходный код и куча документации.
25.11.2005 19:08:53Serge3leo
Эти компиляторы snacc и, так сказать, "asn1c" (это самоназвание, между прочим, конфликтует с зарегистрированной торговой маркой вполне пристойного компилятора от Objective Systems Inc.) я и имел в виду под мышеловкой с бесплатным сыром. А наличие исходных кодов, качества им не прибавляет.
19.03.2006 20:14:25Lev Walkin
fyi, Objective Systems, Inc нет торговой марки на asn1c в США.