python-flirt
A Python library for parsing, compiling, and matching Fast Library Identification and Recognition Technology (FLIRT) signatures.
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-flirtuv
uv add python-flirtpoetry
poetry add python-flirtInstalling 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
Tags
More Security packages
Provides Python bindings to the FreeDesktop.org…
permissive · top 1,000 on PyPI
msalMSAL for Python handles OAuth2 and OpenID…
permissive · top 1,000 on PyPI
joserfcjoserfc implements JOSE standards (JWS, JWE,…
permissive · top 1,000 on PyPI
AuthlibAuthlib provides a complete implementation of…
permissive · top 1,000 on PyPI
argon2-cffi-bindingsProvides low-level CFFI bindings to the…
permissive · top 1,000 on PyPI
adalADAL for Python authenticates applications with…
permissive · top 1,000 on PyPI
idaproEnables programmatic binary analysis and…
permissive · top 15,000 on PyPI
identifyIdentifies file types by examining file paths,…
permissive · top 1,000 on PyPI
signifyValidates and inspects Windows Authenticode…
permissive · top 15,000 on PyPI
ida-hcliida-hcli is a command-line interface for…
permissive · top 15,000 on PyPI
ida-settingsProvides a Python API for IDA Pro plugins to…
unclear · top 15,000 on PyPI
pydantic-function-modelsWraps Python functions to validate their…
permissive · top 15,000 on PyPI
yara-pythonyara-python provides a Python interface to…
permissive · top 5,000 on PyPI
sigtoolsSigtools provides utilities to inspect and…
permissive · top 5,000 on PyPI
PyByteBufferPyByteBuffer provides Java ByteBuffer-style…
copyleft · top 5,000 on PyPI
plum-pyTransforms byte sequences into Python objects…
permissive · top 15,000 on PyPI