YARA Python Interface

4.5.4 · active · verified Sun Apr 12

yara-python is the official Python interface for YARA, a pattern matching tool used by security researchers to identify and classify malware. It provides bindings to the YARA C library, allowing Python applications to compile and apply YARA rules. The library is actively maintained, with new versions (currently 4.5.4) typically released in conjunction with updates to the underlying YARA engine.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to compile a simple YARA rule from a string and then apply it to scan binary data. It shows how to access the matched rule's name, tags, and details about the matched strings, including their identifiers, offsets, and data.

import yara

# Compile a YARA rule from a string
rules = yara.compile(source='rule foo: bar { strings: $a = "lmn" condition: $a }')

# Scan some data
data_to_scan = b'abcdefgjiklmnoprstuvwxyz'
matches = rules.match(data=data_to_scan)

# Process matches
if matches:
    for match in matches:
        print(f"Rule: {match.rule}, Tags: {match.tags}")
        # In YARA-Python 4.3.0+, match.strings is a list of yara.StringMatch objects
        for s in match.strings:
            print(f"  String: {s.identifier} at offset {s.instances[0].offset} with data '{s.instances[0].matched_data.decode()}'")
else:
    print("No matches found.")

view raw JSON →