seifreed/yaraast

GitHub: seifreed/yaraast

一个基于 Python AST 的 YARA 规则解析与操作库,支持多方言解析、验证、格式化和 IDE 集成。

Stars: 51 | Forks: 4

YARAAST

yaraast

使用 Python AST 工具包解析、分析和转换 YARA 规则

PyPI Version Python Versions License Docs

GitHub Stars GitHub Issues

## 概述 **yaraast** 是一个使用抽象语法树 (AST) 解析和操作 YARA 系列规则的 Python 库。它支持经典的 YARA、YARA-L 和 YARA-X 工作流,具备自动方言检测和 CLI 工具支持。 ### 主要功能 | 功能 | 描述 | |---------|-------------| | **多方言解析** | 从文件或字符串解析 YARA、YARA-L 和 YARA-X | | **自动方言检测** | 统一解析器自动检测规则方言 | | **AST 工具** | 构建、转换、对比 (diff) 和序列化 AST | | **格式化与验证** | 用于解析/格式化/验证工作流的 CLI 命令 | | **流式支持** | 通过流式模式解析超大文件 | | **生态系统集成** | 可选的 LSP 和 libyara 相关功能 | ### 支持的规则生态系统 ``` 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 ``` ## 安装 ### 从 PyPI 安装 (推荐) ``` 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) ``` ## 用法 ### 命令行界面 ``` # 解析并打印规范化 YARA yaraast parse rules.yar # 解析为 JSON yaraast parse rules.yar --format json # 使用显式方言解析 yaraast parse rules.yar --dialect yara-x # 验证文件(语法 + 解析检查) yaraast validate rules.yar # 原地格式化文件(基于 AST 的格式化工具) yaraast fmt rules.yar # 检查格式而不修改文件 yaraast fmt rules.yar --check ``` ### 核心 CLI 命令 | 命令 | 描述 | |--------|-------------| | `parse` | 解析规则文件并输出 YARA/JSON/YAML/树形结构 | | `validate` | 验证规则并运行验证子命令 | | `fmt` | 基于 AST 的格式化工具 (支持 `--check` 和 `--diff`) | | `format` | 将输入格式化为目标输出文件 | | `validate-syntax` | 侧重于语法的验证入口 | | `lsp` | 启动 Language Server Protocol 功能 | ## Python 库 ### 统一解析 ``` from yaraast.unified_parser import UnifiedParser from yaraast.dialects import YaraDialect # 自动检测方言 ast = UnifiedParser.parse_file("rules.yar") # 强制指定方言 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 支持 pip install yaraast[lsp] # libyara 集成 pip install yaraast[libyara] # 性能工具 pip install yaraast[performance] # 可视化支持 pip install yaraast[visualization] # 所有内容 pip install yaraast[all] ``` ## 运行时文档 - LSP 运行时内部机制: [docs/lsp-runtime.md](docs/lsp-runtime.md) - LSP 一致性报告: [docs/lsp-parity-report.md](docs/lsp-parity-report.md) - 最新运行时基准测试产物: [docs/benchmarks/lsp-runtime-latest.json](docs/benchmarks/lsp-runtime-latest.json) ## 系统要求 - Python 3.13+ - 完整依赖和扩展列表请参见 [pyproject.toml](pyproject.toml) ## 许可证 本项目基于 MIT 许可证授权 - 详见 [LICENSE](LICENSE)。 **作者** - Marc Rivero ([mriverolopez@gmail.com](mailto:mriverolopez@gmail.com)) - 仓库: [github.com/mriverolopez/yaraast](https://github.com/mriverolopez/yaraast)

专为恶意软件分析和检测工程工作流而构建

标签:AMSI绕过, DAST, odt, PyPI, YARA, YARA-L, YARA-X, 云安全监控, 云资产可视化, 代码操作, 代码格式化, 威胁检测, 恶意软件分析, 抽象语法树, 文档结构分析, 网络安全, 网络调试, 自动化, 自动化payload嵌入, 规则管理, 规则解析, 解析器, 语法验证, 逆向工具, 隐私保护, 静态分析