
YARA नियमों को Abstract Syntax Tree (AST) प्रतिनिधित्व के माध्यम से पार्स करने, विश्लेषण करने और हेरफेर करने के लिए एक शक्तिशाली Python लाइब्रेरी और CLI टूल
YARA नियमों को Python AST टूलकिट से पार्स करें, विश्लेषण करें और रूपांतरित करें
yaraast एक Python लाइब्रेरी है जो YARA-परिवार के नियमों को Abstract Syntax Trees (AST) का उपयोग करके पार्स करने और हेरफेर करने के लिए है। यह क्लासिक YARA, YARA-L और YARA-X वर्कफ़्लो को स्वचालित डायलेक्ट डिटेक्शन और CLI टूलिंग के साथ समर्थन करता है।
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]
योगदान का स्वागत है। सेटअप, गुणवत्ता जाँच और वर्कफ़्लो दिशानिर्देशों के लिए CONTRIBUTING.md देखें।
git checkout -b feature/your-change)git commit -m "Add your change")git push origin feature/your-change)यह प्रोजेक्ट MIT लाइसेंस के तहत लाइसेंस प्राप्त है - LICENSE देखें।
लेखक
मैलवेयर विश्लेषण और डिटेक्शन इंजीनियरिंग वर्कफ़्लो के लिए निर्मित
| फीचर | विवरण |
|---|
| बहु-बोली पार्सिंग | फ़ाइलों या स्ट्रिंग्स से YARA, YARA-L और YARA-X पार्स करें |
| स्वचालित बोली पहचान | एकीकृत पार्सर स्वचालित रूप से नियम बोलियों का पता लगाता है |
| AST टूलिंग | AST बनाएं, रूपांतरित करें, अंतर देखें और क्रमबद्ध करें |
| फ़ॉर्मेटिंग और मान्यता | पार्स/फ़ॉर्मेट/मान्य वर्कफ़्लो के लिए CLI कमांड |
| स्ट्रीमिंग समर्थन | स्ट्रीमिंग मोड के साथ बहुत बड़ी फ़ाइलें पार्स करें |
| इकोसिस्टम एकीकरण | वैकल्पिक LSP और libyara-संबंधी क्षमताएँ |
| कमांड | विवरण |
|---|
parse | एक नियम फ़ाइल को पार्स करें और YARA/JSON/YAML/tree आउटपुट करें |
validate | नियमों को मान्य करें और मान्यता उपकमांड चलाएँ |
fmt | AST-आधारित फ़ॉर्मेटर (--check और --diff के साथ) |
format | इनपुट को लक्ष्य आउटपुट फ़ाइल में फ़ॉर्मेट करें |
validate-syntax | सिंटैक्स-केंद्रित मान्यता प्रवेश बिंदु |
lsp | लैंग्वेज सर्वर प्रोटोकॉल सुविधाएँ लॉन्च करें |