Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
yaraast — YARA 규칙을 구문 분석, 분석 및 조작하기 위한 강력한 Python 라이브러리 및 CLI 도구로, 추상 구문 트리(AST) 표현을 통해 작동합니다. | Kitploit
도구/GitHubGitHub/seifreed/yaraast
Static AnalysisVulnerability AnalysisCode AnalysisScripting & AutomationMalware AnalysisUtilities & Frameworks
GitHubseifreed/yaraast

yaraast

YARA 규칙을 구문 분석, 분석 및 조작하기 위한 강력한 Python 라이브러리 및 CLI 도구로, 추상 구문 트리(AST) 표현을 통해 작동합니다.

저장소 보기
5458812일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

YARAAST

yaraast

Python AST 툴킷으로 YARA 규칙을 파싱, 분석, 변환하세요

CI License: MIT Python 3.11-3.14

GitHub Stars GitHub Issues Docs


개요

yaraast는 추상 구문 트리(AST)를 사용하여 YARA 계열 규칙을 파싱하고 조작하기 위한 Python 라이브러리입니다. 자동 방언 감지와 CLI 도구를 지원하며 클래식 YARA, YARA-L, YARA-X 워크플로우를 지원합니다.

주요 기능

기능설명
다중 방언 파싱파일 또는 문자열에서 YARA, YARA-L, YARA-X 파싱
자동 방언 감지통합 파서가 규칙 방언을 자동 감지
AST 도구AST 빌드, 변환, diff, 직렬화
포맷팅 및 검증파싱/포맷/검증 워크플로우용 CLI 명령
스트리밍 지원스트리밍 모드로 매우 큰 파일 파싱
생태계 통합선택적 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/tree 출력
validate규칙 검증 및 검증 하위 명령 실행
fmtAST 기반 포맷터 (--check 및 --diff 지원)
format입력을 대상 출력 파일로 포맷
validate-syntax구문 중심 검증 진입점
lspLanguage 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) raises 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

악성코드 분석 및 탐지 엔지니어링 워크플로우를 위해 제작됨

도구 다운로드