Skip to main content

Flopz - Firmware Liberation on Python

Python application

Flopz is an assembler toolkit written in pure python. Use it to:

  • Create shellcode for embedded systems
  • Dynamically patch large collections of binaries
  • Instrument firmware images, for debugging and fuzzing

Currently, Flopz supports:

  • ARM: Thumb Mode
  • PPC: VLE, only
  • RISC-V: RV32I, RV32C
  • IA-32

If you'd like to see another architecture implemented, feel free to reach out anytime - we enjoy doing this!

What makes Flopz different from keystone, rasm2, gcc* etc. ?

Instead of just turning assembly strings into bytes, Flopz aims to make interactive patching and instrumenting firmware easier. For this, it provides a low-level instruction and register API that allows you to build up shellcode, modules and functions directly in python, without dealing with strings of assembly syntax.

In embedded security testing, no device is like another: Because of this, we provide an object-oriented approach for defining custom targets, so that as many components as possible can be reused across projects involving different devices & processor architectures.

Since Flopz has been written from scratch in pure python, it may not support as many architectures as other tools (such as those based on Clang/LLVM). However, it is our goal to cover exactly those architectures that matter to embedded security people which may not be covered by other tools. Also, extending Flopz is made less challenging through a maintained set of unit tests and code documentation.

Flopz is meant to work together with other tools. In particular, there is a Ghidra Extension which helps you instrument firmware directly in Ghidra.

Documentation

The provided documentation makes it easy to work with flopz and use its interface in your projects.

Metadata

Release files for flopz 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for flopz 0.2.0
File Size Uploaded
flopz-0.2.0.tar.gz 60.3 kB Details

Release files / flopz-0.2.0.tar.gz

Download URL flopz-0.2.0.tar.gz
Size 60.3 kB
Tags Source
SHA-256 checksum
How to use checksums
77c86ab7767176ff91f7bcbfef4e500b7f0011c4855f4317fa1fc298ab78cd5c
BLAKE2b-256 checksum
How to use checksums
8dc2dd947d7be329549df14fcb56a4f3b78f8879f60ef4e69a179d0a0811975c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.10

Release history Release notifications | RSS feed

This release

0.2.0 This release

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page