skillfed

python-flirt

A Python library for parsing, compiling, and matching Fast Library Identification and Recognition Technology (FLIRT) signatures.

python-flirt v0.10.0 104.1K downloads/30d#12,771 on PyPI113
Permissive license Active released

What it is and what it does

python-flirt is a Python binding to the Rust-based lancelot-flirt library, enabling FLIRT signature parsing, compilation, and matching without IDA Pro. FLIRT signatures are binary patterns used to identify statically-linked library functions in compiled code; this library reverse-engineers the matching engine and provides both .sig (compiled binary) and .pat (ASCII text) file format support.

The library works by parsing signature definitions into an intermediate representation, compiling them into a matcher, and then matching those patterns against raw byte sequences to identify recognized functions. It supports recursive matching via "references" for disambiguating functions with identical byte patterns, though client code must coordinate the recursive invocation. Zero runtime dependencies and prebuilt wheels for modern Python versions on major platforms make installation straightforward.

Use it for:

  • Recognize statically-linked library functions in PE or other binary formats for malware analysis or reverse engineering
  • Identify common C/C++ runtime library routines in compiled binaries to reduce manual analysis effort
  • Integrate FLIRT matching into binary analysis tools or frameworks without requiring IDA Pro
  • Build signature-based function identification into automated security scanning or code reuse detection pipelines
  • Parse and validate FLIRT signature files (.pat, .sig) for custom binary analysis workflows

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Parse, compile, and match FLIRT signatures (Fast Library Identification and Recognition Technology) against byte sequences to recognize statically-linked code without IDA Pro.

Yes, if you need FLIRT signature matching in Python without IDA Pro. The library is actively maintained, has no known vulnerabilities, carries a permissive license, and offers prebuilt wheels for modern Python versions. Install friction is moderate but manageable. Main consideration: recursive reference matching requires manual coordination in your code—review the lancelot implementation before integrating.

Install

python-flirt on PyPI

pip

pip install python-flirt

uv

uv add python-flirt

poetry

poetry add python-flirt

Installing python-flirt

Before you install

Medium install friction due to compiled wheels; however, prebuilt binaries are available for Python 3.10–3.12 across macOS, Linux, and Windows architectures. Maintenance is active with a recent release 36 days ago and ongoing repository activity.

License in practice

Licensed under Apache License 2.0 (permissive), allowing commercial and private use. The library itself is redistributable; however, note that FLIRT signatures from Hex-Rays should not be redistributed—use open-source signature databases instead.

Quickstart

import flirt

# Parse FLIRT signature file
sigs = flirt.parse_pat(pat_content)

# Compile signatures into matcher
matcher = flirt.compile(sigs)

# Match against byte buffer
for match in matcher.match(buffer):
    print(match.names[0][0])

Requires Python 3.10 or later. Recursive reference matching requires manual coordination in client code—see lancelot::core::analysis::flirt for implementation details.

Verify before relying

  • Whether .sig file decompression (zlib-like) is actually unsupported or planned
  • Performance characteristics when matching large buffers or many signatures
  • Availability and quality of open-source FLIRT signature databases mentioned

Package facts

License not declared (permissive)
Python support supports the current Python release (>=3.10)
Install friction medium — platform-specific wheel
Runtime dependencies none
Maintenance actively maintained — 36 days since the last release
Last repo commit
First released
Downloads 104,075/month — #12,771 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: python_flirt-0.10.0-cp310-cp310-macosx_10_12_x86_64.whl; python_flirt-0.10.0-cp310-cp310-macosx_11_0_arm64.whl; python_flirt-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; python_flirt-0.10.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl; python_flirt-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; python_flirt-0.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl; python_flirt-0.10.0-cp310-cp310-win32.whl; python_flirt-0.10.0-cp310-cp310-win_amd64.whl; python_flirt-0.10.0-cp310-cp310-win_arm64.whl; python_flirt-0.10.0-cp311-cp311-macosx_10_12_x86_64.whl; python_flirt-0.10.0-cp311-cp311-macosx_11_0_arm64.whl; python_flirt-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; python_flirt-0.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl; python_flirt-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; python_flirt-0.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl; python_flirt-0.10.0-cp311-cp311-win32.whl; python_flirt-0.10.0-cp311-cp311-win_amd64.whl; python_flirt-0.10.0-cp311-cp311-win_arm64.whl; python_flirt-0.10.0-cp312-cp312-macosx_10_12_x86_64.whl; python_flirt-0.10.0-cp312-cp312-macosx_11_0_arm64.whl

Keywords: flirt

Development Status :: 3 - AlphaLicense :: OSI Approved :: Apache Software LicenseNatural Language :: EnglishOperating System :: OS IndependentProgramming Language :: RustTopic :: SecurityTopic :: Software Development :: Disassemblers

Tags

flirt signature matchingbinary code recognitionstatic library identificationida pro signatureshex-rays flirt parsingbytecode pattern matchingfunction recognition
binary-analysisreverse-engineeringpattern-matching

More Security packages