| ||||
| ||||
Если кто-нить писал 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. Просьба не отправлять на платные компиляторы. | ||||
Ответы: | ||||
| ||||
Что посоветовать. 1. Лучше использовать нормальный компилятор; 2. В крайнем случае, можно использовать бесплатный компилятор (т.е. мышеловку), такие тоже есть; 3. Не пожалеть пары сотен рублей, прибрести на www.gost.ru ГОСТ Р ИСО/МЭК 8825-1-2003 и читать до просветления; 4. Найти код dumpasn1 от Гутмана и стащить оттуда нужный кусочек кода; Успехов. | ||||
| ||||
Старый, добрый и хороший - компилятор snacc. Сейчас почти забыт. Бесплатный. Новый, хороший - компилятор asn1c. Бесплатный. Везде есть исходный код и куча документации. | ||||
| ||||
Эти компиляторы snacc и, так сказать, "asn1c" (это самоназвание, между прочим, конфликтует с зарегистрированной торговой маркой вполне пристойного компилятора от Objective Systems Inc.) я и имел в виду под мышеловкой с бесплатным сыром. А наличие исходных кодов, качества им не прибавляет. | ||||
| ||||
fyi, Objective Systems, Inc нет торговой марки на asn1c в США. | ||||