Das Projekt rars wurde vorgestellt, das eine freie Implementierung von Werkzeugen für das RAR-Format entwickelt, geschrieben in Rust und unterstützt nicht nur das Entpacken, sondern auch das Erstellen von RAR-Archiven. Das Werkzeug unterstützt sowohl ältere Formate RAR 1.3/1.4 mit der Signatur „RE~^“ als auch die neueste Version RAR 7. Erweiterte Operationen wie das Aufteilen in Volumes, Passwortschutz, Verschlüsselung von Headern, das Hinzufügen von Kommentaren, RARVM-Filter, Indizes für schnelles Öffnen und Mechanismen zur Wiederherstellung beschädigter Daten sind verfügbar. Der Code wird unter den Lizenzen MIT und Apache-2.0 veröffentlicht. Basierend auf der PyO3-Bibliothek wurden Bindungen für die Programmiersprache Python erstellt, die eine API im Stil von rarfile für das Durchsuchen, Testen und Extrahieren von Archiven sowie eine API im Stil von RarBuilder für das Erstellen oder Wiederpacken von Archiven implementieren.
Das Besondere an diesem Projekt ist, dass es die Arbeit mit dem RAR-Format ohne die Verwendung des Unrar-Utility-Codes umsetzt, welcher unter einer nicht-freien Lizenz steht, die die Verwendung des Unrar-Codes zur Rekonstruktion des RAR-Kompressionsalgorithmus oder zur Entwicklung eines RAR-kompatiblen Archivers untersagt. Aufgrund dieser Einschränkung beschränkten sich die meisten freien Archiver lediglich auf das Entpacken von RAR-Dateien, während zum Erstellen von RAR-Archiven proprietäre Werkzeuge von RARLAB verwendet werden mussten.
Separat wurde das Repository rar-research erstellt, in dem die Spezifikationen für die Formate RAR 1.3/1.4, RAR 1.5-4.x und RAR 5.0/7.0 veröffentlicht sind sowie Notizen zu den verwendeten Algorithmen, Filtern, Integritätsprüfungen und -wiederherstellung, Verschlüsselung, Volumenerstellung und Schutzmechanismen. Da zum Zeitpunkt der Erstellung des Projekts rars keine offizielle vollständige Spezifikation existierte, wurde die Dokumentation anhand des Codes von Entpackern, alten Implementierungen, Testarchiven und einer Analyse der Binärversionen von RAR für DOS und Windows rekonstruiert.
Die Umsetzung wurde mit Hilfe der KI-Tools OpenAI Codex 5.5 und Claude Opus 4.7 während der Freizeit über einen Zeitraum von etwa fünf Wochen erstellt. In der ersten Phase wurden die Modelle zur Systematisierung der Informationen über das Format und zur Schließung von Lücken in der Beschreibung eingesetzt, wonach der Code in der Programmiersprache Rust basierend auf den wiederhergestellten Spezifikationen generiert wurde. Zur Verfeinerung der Spezifikationen und zur Optimierung der Umsetzung wurde die Funktionalität an realen Archiven getestet und mit Referenzimplementierungen verglichen.
Es wurde festgestellt, dass die KI-Tools gut darin waren, formale Beschreibungen in Code zu übertragen und routinemäßig umfangreiche Funktionalitäten zu implementieren, aber sie konnten keinen architektonischen Überblick gewährleisten. Ohne strengen Aufsicht neigten die KI-Modelle dazu, Tests zu umgehen, den Code zu verkomplizieren und offensichtliche Probleme, die die Benutzerfreundlichkeit beeinträchtigen, zu übersehen. Nach Einschätzung des Autors wurden in einem Projekt dieser Größenordnung Tests, Dokumentationen und Kommentare nicht nur zu Prüfwerkzeugen, sondern auch zu Methoden, um die Codegenerierung in die richtige Richtung zu lenken.
Die Entwicklung konnte nach der Einführung des Modus „/goal“ in OpenAI Codex vorangetrieben werden. Dieser ermöglicht es dem KI-Agenten, längere Zeit an einer Aufgabe zu arbeiten, indem er den Kontext komprimiert und nach Überlauf fortfährt. In diesem Modus hat Codex mehrmals über 6 Stunden und einmal fast 16 Stunden gearbeitet, wobei ein erheblicher Teil der verbleibenden Funktionen, wie Datenwiederherstellung, Verschlüsselung und mehrteilige Archive, umgesetzt wurde. Unter Berücksichtigung der erheblichen Token-Subventionen wurden 40 Pfund Sterling ausgegeben.
In Bezug auf die Komprimierungsrate liegt RAR im Durchschnitt 5-10 % hinter WinRAR zurück. Bei der Geschwindigkeit von Komprimierung und Dekomprimierung ist RAR aufgrund fehlender umfassender Optimierungen deutlich langsamer als WinRAR. Das Projekt verfügt jedoch bereits über den Modus „—features fast“, der Optimierungen auf Basis von SIMD-Anweisungen zur Beschleunigung von Komprimierung und Dekomprimierung anwendet, dieser ist allerdings an eine experimentelle API std::simd gebunden, die nur in Test-Builds des Rust-Toolkits verfügbar ist. Zudem wurde der Modus „—features parallel“ implementiert, der die Rayon-Bibliothek zur Parallelisierung der Komprimierung einzelner Dateien nutzt.
Evgeny Roshal, der Schöpfer von RAR, äußerte sich zum Einsatz von Reverse Engineering bei der Entwicklung von RAR-Dateien, was durch die Lizenzvereinbarung untersagt ist. Laut Evgeny hat er noch keine Entscheidung getroffen, wie er damit umgehen soll, und möchte auf die Meinung der Win.rar GmbH warten.
Quelle: opennet.ru
