Тестирую компиляцию описания формата Kaitai Struct в диаграмму GraphViz
Сделали новую фичу в Kaitai Struct: раньше мы умели описания бинарных форматов файлов и пакетов смотреть в визуализаторе и компилировать в исходный код парсера на поддерживаемых языках программирования (к ним, кстати, медленно, но верно добавляются PHP и Perl), а теперь мы умеем еще и генерировать по описаниям форматов вот такие вот диаграммы.
На скриншоте - развернутая на фул-скрин схема базовых тестовых форматов стека OSI 2-4 уровней. Все начинается с pcap-файла (вне уровневой классификации), в который вложены фреймы формата Ethernet (2 уровень), в которые вложены IPv4-пакеты (3 уровень), в которые вложены либо TCP-сегменты (4 уровень), либо ICMP-пакеты (3 уровень). Таблички - классы. Жирные стрелки - включения типов один в другой, серые дуги - использования значений из какого-то поля в другом.
В правом верхнем углу - для сравнения - окошко с текстовым редактором, в котором видно, как выглядит исходник описания формата pcap в .ksy.
Схема получена абсолютно автоматически без каких-либо ручных правок и дорисовываний ровно за 2 шага:
1. Пачка файлов с описаниями форматов .ksy компилируется в graphviz:
ksc -t graphviz файлы.ksy
2. Полученный dot-файл банально обрабатывается graphviz:
dot -Tsvg <файл.dot -o файл.svg
Если стало интересно, вот еще пачка примеров:
- эта же схема в полноценном .svg и без окошек редактора
- формат PE .exe файла
- формат .gif файла
- формата .class файла Java с байткодом JVM
>>> Просмотр (3840x2160, 223 Kb)