Vor kurzem wurde die nächste Version von Kaitai Struct 0.9 veröffentlicht – einer Beschreibungssprache und Tools zum Parsen verschiedener Binärformate (z. B. Netzwerkpakete, Bild-/Audio-/Videodateien, Datenbanken, Archive, Container usw.). Trotz der oberflächlich wirkenden Versionsnummer 0.9 handelt es sich hierbei um eine Hauptversion, die Entwicklungen der letzten 2.5 Jahre beinhaltet. In dieser Zeit hat sich aus der Sprache eine ganze Familie von Projekten entwickelt:
- ein Compiler, der es Ihnen ermöglicht, einen vorgefertigten Parser-Quellcode in einer Vielzahl von Programmiersprachen (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby) aus einem Format zu erhalten Spezifikationsdatei (.ksy) sowie Diagramme im Format GraphViz und menschenlesbare Formatspezifikationen in HTML;
- Werkzeuge zur komfortablen Erstellung von Spezifikationen bei gleichzeitiger visueller Kontrolle: Web-IDE, Konsolenvisualisierer, Plugin für Visual Studio Code, Hobbits, Veles, Plugin für Hiew, Plugin für Binary Ninja;
- Module zur Integration von Kaitai Struct in den Montageprozess für Maven, für Gradle, für Python, für JavaScript/WebPack
- Formatbibliothek, das in dieser Version bereits 156 Beschreibungen enthält (und 78 weitere Formate befinden sich im Prozess der Pull-Request-Überprüfung).
- Bibliothek von Plug-in-Komprimierungsalgorithmen Kaitai-Kompresse
- Modul für FUSE - Kaitai FS, mit dem Sie eine Datei mithilfe der ksy-Beschreibung ihres Formats als Dateisystem mounten können
Sprache Von GitHub erkannt und wird mittlerweile in mehr als 400 kostenlosen/Open-Source-Projekten zum Parsen aller Arten exotischer Datenformate verwendet, von Reverse Engineering proprietärer Spieldatendateienabspritzen Analyse von Satellitenkommunikationsprotokollen.
Unter den wichtigsten Neuerungen der Sprache 0.9 sind hervorzuheben:
- Unterstützung neuer Zielsprachen (Python über die Construct-Bibliothek, Nim, Generierung der Dokumentation in HTML)
- volle Unterstützung für modernes C++ (intelligente Zeiger, keine manuelle Speicherverwaltung erforderlich, behebt alle bekannten Speicherlecks)
- Unterstützung für die Adressierung verschachtelter Typen über Syntax wie foo::bar::baz
- Unterstützung für die Validierung gelesener Daten gemäß den beschriebenen Bedingungen (gültig)
- Berechnen der Größen statischer Datenstrukturen in Bytes und Bits (Operatoren „sizeof“ und „bitsizeof“)
- formale Beschreibung einer Sprache im Formular JSON-Schemas, von dem jetzt Dokumentation wird erstellt
Source: linux.org.ru