Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
yaraast — Eine leistungsstarke Python-Bibliothek und CLI-Tool zum Parsen, Analysieren und Manipulieren von YARA-Regeln mittels Abstract Syntax Tree (AST)-Darstellung. | Kitploit
Tools/GitHubGitHub/seifreed/yaraast
Statische AnalyseSchwachstellenanalyseCode-AnalyseScripting & AutomatisierungMalware-AnalyseDienstprogramme & Frameworks
GitHubseifreed/yaraast

yaraast

Eine leistungsstarke Python-Bibliothek und CLI-Tool zum Parsen, Analysieren und Manipulieren von YARA-Regeln mittels Abstract Syntax Tree (AST)-Darstellung.

Repository anzeigen
54546vor 12 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

YARAAST

yaraast

YARA-Regeln mit einem Python-AST-Toolkit parsen, analysieren und transformieren

CI License: MIT Python 3.11-3.14

GitHub Stars GitHub Issues Docs


Übersicht

yaraast ist eine Python-Bibliothek zum Parsen und Manipulieren von YARA-Familienregeln mithilfe von abstrakten Syntaxbäumen (AST). Sie unterstützt klassische YARA-, YARA-L- und YARA-X-Workflows mit automatischer Dialekterkennung und CLI-Werkzeugen.

Hauptfunktionen

FunktionBeschreibung
Multi-Dialekt-ParsingYARA, YARA-L und YARA-X aus Dateien oder Zeichenketten parsen
Automatische DialekterkennungEinheitlicher Parser erkennt Regeldialekte automatisch
AST-WerkzeugeASTs erstellen, transformieren, diffen und serialisieren
Formatierung & ValidierungCLI-Befehle für Parse-/Format-/Validierungs-Workflows
Streaming-UnterstützungSehr große Dateien im Streaming-Modus parsen
Ökosystem-IntegrationenOptionale LSP- und libyara-bezogene Fähigkeiten

Unterstütztes Regel-Ökosystem

root@kitploit:~
Dialekte   YARA, YARA-L, YARA-X
Parser     Standard-Parser, einheitlicher Parser, Streaming-Parser
Ausgaben   YARA, JSON, YAML, AST-Baumansichten
Werkzeuge  CLI, Besucher, Builder, Serialisierung, semantische Prüfungen

Der Unterstützungsgrad variiert je nach Dialekt. Klassisches YARA ist stabil, YARA-X ist Beta, YARA-L ist experimentell, und die automatische Dialekterkennung ist eine Best-Effort-Lösung. Siehe die Kompatibilitätsmatrix für die genauen Engines und Fähigkeiten, die von CI getestet werden.


Installation

Von PyPI (empfohlen)

root@kitploit:~
pip install yaraast

Aus dem Quellcode

root@kitploit:~
git clone https://github.com/seifreed/yaraast.git
cd yaraast
python3 -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate
pip install -e .

Schnellstart

root@kitploit:~
import yaraast

yara_code = """
rule example {
    strings:
        $a = "malware" nocase
    condition:
        $a
}
"""

document = yaraast.parse(yara_code)
print(document.ast.rules[0].name)

Verwendung

Befehlszeilenschnittstelle

root@kitploit:~
# Parsen und normalisiertes YARA ausgeben
yaraast parse rules.yar

# Als JSON parsen
yaraast parse rules.yar --format json

# Mit explizitem Dialekt parsen
yaraast parse rules.yar --dialect yara-x

# Datei validieren (Syntax- + Parse-Prüfungen)
yaraast validate rules.yar

# Datei direkt formatieren (AST-basierter Formatierer)
yaraast fmt rules.yar

# Formatierung prüfen, ohne die Datei zu ändern
yaraast fmt rules.yar --check

Zentrale CLI-Befehle

BefehlBeschreibung
parseEine Regeldatei parsen und YARA/JSON/YAML/Baum ausgeben
validateRegeln validieren und Validierungs-Unterbefehle ausführen
fmtAST-basierter Formatierer (mit --check und --diff)
formatEingabe in eine Zieldatei formatieren
validate-syntaxAuf Syntax fokussierter Validierungs-Einstiegspunkt
lspLanguage Server Protocol-Funktionen starten

Python-Bibliothek

Einheitliches Parsing

root@kitploit:~
from pathlib import Path

import yaraast

source = "rule example { condition: true }"

# Dialekt automatisch erkennen
document = yaraast.parse(source)

# Bestimmten Dialekt erzwingen
document = yaraast.parse(source, dialect="yara")

# Dateien parsen, neuen Quellcode erzeugen und kanonisch formatieren
Path("rules.yar").write_text(source, encoding="utf-8")
file_document = yaraast.parse_file("rules.yar")
generated = yaraast.generate(file_document)
formatted = yaraast.format_canonical(source, dialect="yara")

# Jedes Byte außerhalb einer expliziten UTF-8-Byte-Änderung erhalten
offset = source.encode("utf-8").index(b"true")
rewritten = yaraast.rewrite_lossless(
    source,
    [yaraast.SourceEdit(offset, offset + 4, "false")],
)

# Öffentliche Parser wenden begrenzte Standardwerte an. Bei Bedarf pro Vorgang überschreiben.
limits = yaraast.ResourceLimits(max_input_bytes=1024 * 1024, parse_deadline=5.0)
document = yaraast.parse(source, resource_limits=limits)

cancel = yaraast.CancellationToken()
cancel.cancel()
# yaraast.parse(source, cancellation_token=cancel) löst ParseCancelledError aus

ResourceLimits() deaktiviert alle Grenzen explizit. CLI-Parsing verwendet die öffentlichen Standardwerte; LSP-Parsing verwendet strengere Eingabe-, Token-, Verschachtelungs-, Muster- und Frist- Grenzen und speichert nach einem Abbruch oder einem Grenzwertfehler niemals ein Teilergebnis zwischen.

Direkter Parser + Besucher

root@kitploit:~
from pathlib import Path

from yaraast.parser import Parser
from yaraast.visitor import BaseVisitor

class RuleCollector(BaseVisitor):
    def __init__(self):
        self.rules = []

    def visit_rule(self, node):
        self.rules.append(node.name)
        super().visit_rule(node)

ast = Parser(Path("rules.yar").read_text(encoding="utf-8")).parse()
collector = RuleCollector()
collector.visit(ast)
print(collector.rules)

Optionale Abhängigkeiten

root@kitploit:~
# LSP-Unterstützung
pip install yaraast[lsp]

# libyara-Integration
pip install yaraast[libyara]

# Leistungswerkzeuge
pip install yaraast[performance]

# Visualisierungsunterstützung
pip install yaraast[visualization]

# Laufzeit-Unterstützungspaket
pip install yaraast[all]

# Laufzeit- und Entwicklungswerkzeuge
pip install yaraast[dev-all]

Laufzeit-Dokumentation

  • Dialekt-Kompatibilität: docs/compatibility.md
  • LSP-Laufzeit-Interna: docs/lsp-runtime.md
  • LSP-Paritätsbericht: docs/lsp-parity-report.md
  • Neuestes Laufzeit-Benchmark-Artefakt: docs/benchmarks/lsp-runtime-latest.json

Anforderungen

  • Python 3.11, 3.12, 3.13 oder 3.14
  • Siehe pyproject.toml für die vollständige Liste der Abhängigkeiten und Extras

Mitwirken

Beiträge sind willkommen. Siehe CONTRIBUTING.md für Einrichtung, Qualitätsprüfungen und Workflow-Richtlinien.

  1. Repository forken
  2. Branch erstellen (git checkout -b feature/your-change)
  3. Änderungen committen (git commit -m "Add your change")
  4. Pushen (git push origin feature/your-change)
  5. Pull Request öffnen

Die Projektrichtlinien sind dokumentiert in SECURITY.md, CODE_OF_CONDUCT.md, CHANGELOG.md und MIGRATING.md.


Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe LICENSE.

Autor

  • Marc Rivero ([email protected])
  • Repository: github.com/seifreed/yaraast

Entwickelt für Malware-Analyse- und Detection-Engineering-Workflows

Tool herunterladen