Skip to main content

flopz - Low Level Assembler and Firmware Instrumentation Toolkit

Project description

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
  • IA-32 (work in progress)

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flopz-0.1.1.tar.gz (52.7 kB view details)

Uploaded Source

File details

Details for the file flopz-0.1.1.tar.gz.

File metadata

  • Download URL: flopz-0.1.1.tar.gz
  • Upload date:
  • Size: 52.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.10

File hashes

Hashes for flopz-0.1.1.tar.gz
Algorithm Hash digest
SHA256 393c4aec28e78944dd25a22cf93a9604fb7b17da943912dbe7f6b70be1ba9797
MD5 037a84d43d7edb995abe5483e19862aa
BLAKE2b-256 5163ca8809a4f60c870ec1bf8a79c7cb1740e23973d38db4c29b414de952f2a2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page