Vor kurzem wurde die neue Version von Kaitai Struct 0.9 veröffentlicht â einer Beschreibungssprache und einem Werkzeug zur Analyse von verschiedenen BinĂ€rformaten (zum Beispiel Netzwerkpaketen, Dateien mit Bildern/Audios/Videos, Datenbanken, Archiven, Containern usw.). Trotz der nicht ernst wirkenden Versionsnummer 0.9 handelt es sich um ein groĂes Release, das Entwicklungen der letzten 2,5 Jahre umfasst. In dieser Zeit ist die Sprache zu einer ganzen Familie von Projekten gewachsen:
- einem Compiler, der es ermöglicht, aus einer Dateispezifikation (.ksy) einen fertigen Parser in vielen Programmiersprachen (C++, C#, Construct, Go, Java, JavaScript, Lua, Nim, Perl, PHP, Python, Ruby) zu generieren, sowie Diagramme im GraphViz-Format und menschenlesbare Formatspezifikationen in HTML;
- Werkzeuge zur komfortablen Entwicklung von Spezifikationen mit gleichzeitigem visuellem Monitoring: 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 Build-Prozess fĂŒr Maven, fĂŒr Gradle, fĂŒr Python, fĂŒr JavaScript/WebPack
- eine Formatbibliothek, die in diesem Release bereits 156 Beschreibungen umfasst (und weitere 78 Formate gerade in der ĂberprĂŒfung eines Pull-Requests sind).
- eine Bibliothek fĂŒr integrierte Kompressionsalgorithmen Kaitai Compress
- ein Modul fĂŒr FUSE â Kaitai FS, das es ermöglicht, eine Datei als ein Dateisystem zu mounten, wobei die ksy-Beschreibung ihres Formats verwendet wird
Sprache wurden anerkannt von GitHub und wird derzeit in mehr als 400 freien / Open-Source-Projekten zur Analyse von verschiedenen exotischen Datenformaten verwendet, angefangen von der RĂŒckentwicklung von Datenformaten proprietĂ€rer Spiele, bis hin zu der Analyse von Kommunikationsprotokollen von Satelliten..
Zu den wichtigsten Neuerungen in der Sprache 0.9 gehören:
- UnterstĂŒtzung neuer Zielsprachen (Python ĂŒber die Bibliothek Construct, Nim, Generierung von Dokumentation in HTML)
- vollstĂ€ndige UnterstĂŒtzung moderner C++ (Smart-Pointer, keine Notwendigkeit zur manuellen Speichermanagement, Behebung aller bekannten Speicherlecks)
- UnterstĂŒtzung der Adressierung von geschachtelten Typen durch Syntax wie foo::bar::baz
- UnterstĂŒtzung der Validierung gelesener Daten gemÀà den beschriebenen Bedingungen (valid)
- Berechnung der GröĂen statischer Datenstrukturen in Bytes und Bits (Operatoren sizeof und bitsizeof)
- formale Beschreibung der Sprache in Form von JSON-Schemas, aus dem jetzt Dokumentation generiert wird
Quelle: linux.org.ru

