Как разбирать форматы

Feb 11, 2015 10:59

В рамках священной борьбы с разнообразием взор непременно обращается к форматам файлов. На моем винте около 5000 разных расширений файлов, 800 из которых встречаются 10 и чаще раз. Часть из них созданы неизвестно кем, часть непонятно для чего, еще часть неведомо как читать ( Read more... )

software, программирование

Leave a comment

Comments 16

lionet February 11 2015, 08:48:41 UTC
Есть ещё ASN.1 ECN. Позволяет описывать неизвестные форматы с целью генерации парсеров всяких, и конверторов.

Reply

sharpc February 12 2015, 02:19:02 UTC
А оно где-нибудь используется в близких моим целям? Есть репозиторий форматов?

Reply

lionet February 12 2015, 09:26:25 UTC
Я туда боюсь погружаться. Блок какой-то. Слишком много других частей стандарта обчитался.

Reply


shark_ru February 11 2015, 10:15:23 UTC
Ждём:
Buffer Overrun in DFDL Processing Could Allow Code Execution

Reply


the__listener February 11 2015, 22:18:54 UTC
Сходил. Посмотрел. Очередная гадость, непригодная ни к каким практическим применениям.

Такое ощущение, что разработчики ни разу не видели реального формата данных (не искуственного, который сделан для длгосрочного промежуточного хранения и interoperability, а реального, повседневно используемого).

И вообще, декларативный подход к описанию форматов - работает только на совсем-совсем синтетике.

Пока, единственный практичный способ описания форматов - это шаблоны 010. (Если интересно, могу привести несколько примеров из реальной жизни). Да, оно ужасно - но работает.

Аналогично, в реальной жизни не работает FLIRT, уже лет шесть как. Да, можно что-то определить с его помощью, если в .exe вкомпилена статическая библиотека без модификаций. На практике, такое происходит очень редко. Даже простое включение link-time code generation делает половину библиотечных функций нераспознаваемыми. Так что, если хочется результатов - приходится писать .idc, который матчит не коды команд, а куски CFG и call graph

Reply

max_tx February 12 2015, 02:12:01 UTC
Можно поподробнее про шаблоны 010? Это просто побитные маски?

Reply

sharpc February 12 2015, 02:22:43 UTC
Шаблоны 010 это оно? Поторопился с выводами, нашел репозиторий, да, сейчас это более мощная штука.

Я в качестве примера самого сложного формата для своих велосипедов использовал PE. Вроде бы DFDL его парсит, если я ничего не пропустил. Знаете формат сложнее или что не распарсит DFDL?

Почему именно 6 лет?

Не согласен с вашим мнением о декларативном подходе. Мой велосипед создавался из си-кода преобразованием в несколько облегченный AST (что делаем в этой точке парсинга, в каком виде данные, куда их кладем), вполне декларативное описание парсера файла, более удобное, чем собственно си-код, возможностью остановок по требованию и проверок, возможностью подключения вместо компиляции.

Reply

the__listener February 12 2015, 06:46:01 UTC
Ну, здесь я вынужден попросить прощения. Из-за профдеформации я не мог и подумать, что PE можно счесть сложным форматом ( ... )

Reply


(The comment has been removed)

sharpc February 13 2015, 04:20:38 UTC
Да, у TTF 4-й по размеру .bt файл. Шрифты сложные.

Reply


black_eric December 28 2015, 09:59:08 UTC
Утащил к себе. Вдруг пригодиться, хотя из опыта ковыряния форматов различных файлов - они все очень разные и их лучше всего описывать обычными С-шными структурами.

Reply


Leave a comment

Up