Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/seifreed/yaraast
Статический анализАнализ уязвимостейАнализ КодаСкриптинг и автоматизацияАнализ вредоносных программУтилиты и фреймворки
GitHubseifreed/yaraast

yaraast

Мощная библиотека Python и инструмент командной строки для разбора, анализа и манипуляции правилами YARA с использованием представления в виде абстрактного синтаксического дерева (AST).

Репозиторий
5458812 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

YARAAST

yaraast

Разбор, анализ и преобразование YARA-правил с помощью Python-набора инструментов для работы с AST

CI License: MIT Python 3.11-3.14

GitHub Stars GitHub Issues Docs


Обзор

yaraast — это Python-библиотека для разбора и манипулирования правилами семейства YARA с использованием абстрактных синтаксических деревьев (AST). Она поддерживает классические рабочие процессы YARA, YARA-L и YARA-X с автоматическим определением диалекта и инструментами командной строки.

Ключевые возможности

ВозможностьОписание
Многодиалектный разборРазбор YARA, YARA-L и YARA-X из файлов или строк
Автоматическое определение диалектаЕдиный парсер автоматически определяет диалекты правил
Инструменты ASTСоздание, преобразование, сравнение и сериализация AST
Форматирование и проверкаКоманды CLI для рабочих процессов parse/format/validate
Потоковая поддержкаРазбор очень больших файлов в потоковом режиме
Интеграции экосистемыДополнительные возможности LSP и libyara

Поддерживаемая экосистема правил

root@kitploit:~
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

Уровни поддержки различаются в зависимости от диалекта. Классический YARA стабилен, YARA-X находится в стадии бета-тестирования, YARA-L — экспериментальный, а автоматическое определение диалекта работает по принципу «best effort». См. матрицу совместимости для точного перечня движков и возможностей, проверяемых CI.


Установка

Из PyPI (рекомендуется)

root@kitploit:~
pip install yaraast

Из исходного кода

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 .

Быстрый старт

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)

Использование

Интерфейс командной строки

root@kitploit:~
# Разбор и вывод нормализованного 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-библиотека

Единый разбор

root@kitploit:~
from pathlib import Path

import yaraast

source = "rule example { condition: true }"

# Автоматическое определение диалекта
document = yaraast.parse(source)

# Принудительное указание конкретного диалекта
document = yaraast.parse(source, dialect="yara")

# Разбор файлов, генерация нового исходного кода и каноническое форматирование
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")

# Сохранение каждого байта за пределами явного редактирования UTF-8
offset = source.encode("utf-8").index(b"true")
rewritten = yaraast.rewrite_lossless(
    source,
    [yaraast.SourceEdit(offset, offset + 4, "false")],
)

# Публичные парсеры применяют ограниченные значения по умолчанию. При необходимости переопределяйте их для каждой операции.
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) вызывает ParseCancelledError

ResourceLimits() явно отключает все ограничения. Разбор через CLI использует публичные значения по умолчанию; разбор через LSP использует более строгие ограничения на входные данные, токены, вложенность, шаблоны и сроки и никогда не кэширует частичный результат после отмены или сбоя ограничения.

Прямой парсер + посетитель

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)

Дополнительные зависимости

root@kitploit:~
# Поддержка LSP
pip install yaraast[lsp]

# Интеграция libyara
pip install yaraast[libyara]

# Инструменты производительности
pip install yaraast[performance]

# Поддержка визуализации
pip install yaraast[visualization]

# Полный пакет поддержки времени выполнения
pip install yaraast[all]

# Инструменты времени выполнения и разработки
pip install yaraast[dev-all]

Документация по времени выполнения

  • Совместимость диалектов: docs/compatibility.md
  • Внутреннее устройство LSP: docs/lsp-runtime.md
  • Отчёт о паритете LSP: docs/lsp-parity-report.md
  • Последний артефакт бенчмарка: docs/benchmarks/lsp-runtime-latest.json

Требования

  • Python 3.11, 3.12, 3.13 или 3.14
  • См. pyproject.toml для полного списка зависимостей и дополнительных пакетов

Участие в разработке

Вклад приветствуется. См. CONTRIBUTING.md для получения информации о настройке, проверках качества и рекомендациях по рабочему процессу.

  1. Сделайте форк репозитория
  2. Создайте ветку (git checkout -b feature/your-change)
  3. Зафиксируйте изменения (git commit -m "Add your change")
  4. Отправьте изменения (git push origin feature/your-change)
  5. Откройте Pull Request

Политика проекта описана в SECURITY.md, CODE_OF_CONDUCT.md, CHANGELOG.md и MIGRATING.md.


Лицензия

Этот проект лицензирован по лицензии MIT — см. LICENSE.

Автор

  • Marc Rivero ([email protected])
  • Репозиторий: github.com/seifreed/yaraast

Создано для рабочих процессов анализа вредоносных программ и разработки правил обнаружения

Скачать инструмент