Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
yaraast — Une puissante bibliothèque Python et un outil CLI pour parser, analyser et manipuler les règles YARA via la représentation en arbre de syntaxe abstraite (AST) | Kitploit
Outils/GitHubGitHub/seifreed/yaraast
Analyse StatiqueAnalyse des VulnérabilitésAnalyse de CodeScripting et AutomatisationAnalyse de MalwareUtilitaires et Frameworks
GitHubseifreed/yaraast

yaraast

Une puissante bibliothèque Python et un outil CLI pour parser, analyser et manipuler les règles YARA via la représentation en arbre de syntaxe abstraite (AST)

Voir le dépôt
54588il y a 13 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

YARAAST

yaraast

Analysez, analysez et transformez les règles YARA avec une boîte à outils AST Python

CI License: MIT Python 3.11-3.14

GitHub Stars GitHub Issues Docs


Aperçu

yaraast est une bibliothèque Python pour analyser et manipuler les règles de la famille YARA à l'aide d'arbres de syntaxe abstraite (AST). Elle prend en charge les flux de travail classiques YARA, YARA-L et YARA-X avec détection automatique de dialecte et outils CLI.

Fonctionnalités clés

FonctionnalitéDescription
Analyse multi-dialectesAnalyse YARA, YARA-L et YARA-X à partir de fichiers ou de chaînes
Détection automatique de dialecteAnalyseur unifié qui détecte automatiquement les dialectes de règles
Outils ASTConstruire, transformer, différencier et sérialiser les AST
Formatage et validationCommandes CLI pour les flux de travail d'analyse/formatage/validation
Prise en charge du streamingAnalyse de très grands fichiers en mode streaming
Intégrations écosystèmeCapacités optionnelles liées à LSP et libyara

Écosystème de règles pris en charge

root@kitploit:~
Dialectes   YARA, YARA-L, YARA-X
Analyseurs  Analyseur standard, analyseur unifié, analyseur de streaming
Sorties     YARA, JSON, YAML, vues d'arbre AST
Outils      CLI, visiteurs, constructeurs, sérialisation, vérifications sémantiques

Les niveaux de prise en charge diffèrent selon le dialecte. Le YARA classique est stable, YARA-X est en version bêta, YARA-L est expérimental, et la détection automatique de dialecte est au mieux. Consultez la matrice de compatibilité pour connaître les moteurs et capacités exacts testés par CI.


Installation

Depuis PyPI (recommandé)

root@kitploit:~
pip install yaraast

Depuis la source

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 .

Démarrage rapide

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)

Utilisation

Interface en ligne de commande

root@kitploit:~
# Analyse et affiche le YARA normalisé
yaraast parse rules.yar

# Analyse en JSON
yaraast parse rules.yar --format json

# Analyse avec un dialecte explicite
yaraast parse rules.yar --dialect yara-x

# Valide le fichier (vérifications de syntaxe + d'analyse)
yaraast validate rules.yar

# Formate le fichier en place (formateur basé sur AST)
yaraast fmt rules.yar

# Vérifie le formatage sans modifier le fichier
yaraast fmt rules.yar --check

Commandes CLI principales

CommandeDescription
parseAnalyse un fichier de règles et génère YARA/JSON/YAML/arbre
validateValide les règles et exécute les sous-commandes de validation
fmtFormateur basé sur AST (avec --check et --diff)
formatFormate l'entrée vers un fichier de sortie cible
validate-syntaxPoint d'entrée de validation axé sur la syntaxe
lspLance les fonctionnalités du Language Server Protocol

Bibliothèque Python

Analyse unifiée

root@kitploit:~
from pathlib import Path

import yaraast

source = "rule example { condition: true }"

# Détection automatique du dialecte
document = yaraast.parse(source)

# Forcer un dialecte spécifique
document = yaraast.parse(source, dialect="yara")

# Analyser des fichiers, générer une nouvelle source et formater de manière canonique
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")

# Préserver chaque octet en dehors d'une modification d'octet UTF-8 explicite
offset = source.encode("utf-8").index(b"true")
rewritten = yaraast.rewrite_lossless(
    source,
    [yaraast.SourceEdit(offset, offset + 4, "false")],
)

# Les analyseurs publics appliquent des limites par défaut bornées. Remplacez-les par opération si nécessaire.
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) lève ParseCancelledError

ResourceLimits() désactive explicitement toutes les limites. L'analyse CLI utilise les valeurs par défaut publiques ; l'analyse LSP utilise des limites d'entrée, de jeton, d'imbrication, de motif et de délai plus strictes et ne met jamais en cache un résultat partiel après une annulation ou un échec de limite.

Analyseur direct + visiteur

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)

Dépendances optionnelles

root@kitploit:~
# Prise en charge LSP
pip install yaraast[lsp]

# Intégration libyara
pip install yaraast[libyara]

# Outils de performance
pip install yaraast[performance]

# Prise en charge de la visualisation
pip install yaraast[visualization]

# Pack de prise en charge d'exécution
pip install yaraast[all]

# Outils d'exécution et de développement
pip install yaraast[dev-all]

Documentation d'exécution

  • Compatibilité des dialectes : docs/compatibility.md
  • Internes d'exécution LSP : docs/lsp-runtime.md
  • Rapport de parité LSP : docs/lsp-parity-report.md
  • Artefact de benchmark d'exécution le plus récent : docs/benchmarks/lsp-runtime-latest.json

Prérequis

  • Python 3.11, 3.12, 3.13 ou 3.14
  • Consultez pyproject.toml pour la liste complète des dépendances et extras

Contribution

Les contributions sont les bienvenues. Consultez CONTRIBUTING.md pour la configuration, les contrôles de qualité et les directives de flux de travail.

  1. Forkez le dépôt
  2. Créez une branche (git checkout -b feature/your-change)
  3. Validez les modifications (git commit -m "Add your change")
  4. Poussez (git push origin feature/your-change)
  5. Ouvrez une Pull Request

La politique du projet est documentée dans SECURITY.md, CODE_OF_CONDUCT.md, CHANGELOG.md et MIGRATING.md.


Licence

Ce projet est sous licence MIT - voir LICENSE.

Auteur

  • Marc Rivero ([email protected])
  • Dépôt : github.com/seifreed/yaraast

Conçu pour les flux de travail d'analyse de logiciels malveillants et d'ingénierie de détection

Télécharger l’outil