
Eine leistungsstarke Python-Bibliothek und CLI-Tool zum Parsen, Analysieren und Manipulieren von YARA-Regeln mittels Abstract Syntax Tree (AST)-Darstellung.
YARA-Regeln parsen, analysieren und transformieren mit einem Python-AST-Toolkit
yaraast ist eine Python-Bibliothek zum Parsen und Manipulieren von YARA-Familienregeln mit Hilfe von abstrakten Syntaxbäumen (AST). Es unterstützt klassische YARA-, YARA-L- und YARA-X-Workflows mit automatischer Dialekterkennung und CLI-Tools.
Dialects YARA, YARA-L, YARA-X
Parsers Standard parser, unified parser, streaming parser
Outputs YARA, JSON, YAML, AST tree views
Tooling CLI, visitors, builders, serialization, semantic checks
pip install yaraast
git clone https://github.com/mriverolopez/yaraast.git
cd yaraast
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -e .
from yaraast.unified_parser import UnifiedParser
yara_code = """
rule example {
strings:
$a = "malware" nocase
condition:
$a
}
"""
ast = UnifiedParser.parse_string(yara_code)
print(ast.rules[0].name)
# Parse and print normalized YARA
yaraast parse rules.yar
# Parse to JSON
yaraast parse rules.yar --format json
# Parse with explicit dialect
yaraast parse rules.yar --dialect yara-x
# Validate file (syntax + parse checks)
yaraast validate rules.yar
# Format file in-place (AST-based formatter)
yaraast fmt rules.yar
# Check formatting without modifying file
yaraast fmt rules.yar --check
from yaraast.unified_parser import UnifiedParser
from yaraast.dialects import YaraDialect
# Auto-detect dialect
ast = UnifiedParser.parse_file("rules.yar")
# Force specific dialect
ast = UnifiedParser.parse_file("rules.yar", dialect=YaraDialect.YARA)
from yaraast 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(open("rules.yar", encoding="utf-8").read()).parse()
collector = RuleCollector()
collector.visit(ast)
print(collector.rules)
# LSP support
pip install yaraast[lsp]
# libyara integration
pip install yaraast[libyara]
# Performance tooling
pip install yaraast[performance]
# Visualization support
pip install yaraast[visualization]
# Everything
pip install yaraast[all]
Beiträge sind willkommen. Siehe CONTRIBUTING.md für Einrichtung, Qualitätsprüfungen und Workflow-Richtlinien.
git checkout -b feature/your-change)git commit -m "Add your change")git push origin feature/your-change)Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe LICENSE.
Autor
Entwickelt für Malware-Analyse- und Erkennungsentwicklungs-Workflows
| Funktion | Beschreibung |
|---|
| Multi-Dialekt-Parsing | Parsen von YARA, YARA-L und YARA-X aus Dateien oder Zeichenketten |
| Automatische Dialekterkennung | Einheitlicher Parser erkennt Regel-Dialekte automatisch |
| AST-Werkzeuge | ASTs erstellen, transformieren, diffen und serialisieren |
| Formatierung und Validierung | CLI-Befehle für Parse/Format/Validate-Workflows |
| Streaming-Unterstützung | Parsen sehr großer Dateien im Streaming-Modus |
| Ökosystem-Integrationen | Optionale LSP- und libyara-bezogene Fähigkeiten |
| Befehl | Beschreibung |
|---|
parse | Eine Regeldatei parsen und YARA/JSON/YAML/Baum ausgeben |
validate | Regeln validieren und Validierungs-Subbefehle ausführen |
fmt | AST-basierter Formatierer (mit --check und --diff) |
format | Eingabe in eine Zielausgabedatei formatieren |
validate-syntax | Syntaxorientierter Validierungseinstiegspunkt |
lsp | Language Server Protocol-Funktionen starten |