Skip to main content

OFRAK

OFRAK (Open Firmware Reverse Analysis Konsole) is a binary analysis and modification platform that combines the ability unpack, analyze, modify, and repack binaries.

OFRAK combines the ability to:

  • Identify and Unpack many binary formats
  • Analyze unpacked binaries with field-tested reverse engineering tools
  • Modify and Repack binaries with powerful patching strategies

OFRAK supports a range of embedded firmware file formats beyond userspace executables, including:

  • Compressed filesystems
  • Compressed & checksummed firmware
  • Bootloaders
  • RTOS/OS kernels

OFRAK equips users with:

  • A Graphical User Interface (GUI) for interactive exploration and visualization of binaries
  • A Python API for readable and reproducible scripts that can be applied to entire classes of binaries, rather than just one specific binary
  • Recursive identification, unpacking, and repacking of many file formats, from ELF executables, to filesystem archives, to compressed and checksummed firmware formats
  • Built-in, extensible integration with powerful analysis backends (angr, Binary Ninja, Ghidra, IDA Pro)
  • Extensibility by design via a common interface to easily write additional OFRAK components and add support for a new file format or binary patching operation

See ofrak.com for more details.

Package: ofrak

OFRAK
└───ofrak  <-- //YOU ARE HERE//
│   └───component   // Definitions for abstract Component classes (e.g. Analyzer)
│   └───core        // Definitions for common software and reverse engineering abstractions
│   └───model       // Definitions for core OFRAK data structures
│   └───service     // Definitions for core OFRAK services
│   
└───ofrak_components
└───ofrak_type
└───ofrak_io
└───ofrak_patch_maker
└───ofrak_tutorial

This is the package containing the core of the OFRAK framework. Install this first to get started with OFRAK!

What is included:

  • Definitions for core OFRAK data structures and services, such as Resource, OFRAKContext, and DataService.
  • Components to handle unpacking, modifying, and repacking common executable file formats:
    • ELF
    • PE Files
  • Definitions for common software and reverse engineering abstractions like Instruction, File, and BasicBlock
  • Miscellaneous helpful components:
    • MagicAnalyzer and two Identifier components which uses python-libmagic to automatically tag OFRAK Resources
    • Basic modifiers like StringFindReplaceModifier and BinaryInjectorModifier
    • Basic useful analyzers like Sha256Analyzer and MD5Analyzer which calculate the respective checksums of OFRAK Resources

This is only a representative sampling of the features in the core OFRAK. Consult the code reference docs for a complete manifest.

What is not included:

  • The OFRAK PatchMaker
  • Components (e.g. unpackers) for other filesystems and file formats like tar, ZIP, SquashFS, RAR, UImage, and more. These are in the ofrak_components package and have heavier dependencies
  • Components which integrate the disassembler backends (Ghidra, BinaryNinja, Angr, Capstone)

License

The code in this repository comes with an OFRAK Community License, which is intended for educational uses, personal development, or just having fun.

Users interested in using OFRAK for commercial purposes can request the Pro License, which for a limited period is available for a free 6-month trial. See OFRAK Licensing for more information.

Documentation

OFRAK has general documentation and API documentation, which can be viewed at https://ofrak.com/docs.

Metadata

Release files for ofrak 1.0.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 ofrak 1.0.0
File Size Uploaded
ofrak-1.0.0.tar.gz 162.1 kB Details

Release files / ofrak-1.0.0.tar.gz

Download URL ofrak-1.0.0.tar.gz
Size 162.1 kB
Tags Source
SHA-256 checksum
How to use checksums
42f620b0a56292ffb3de72a0b9c300521d87f71d2d1f5bfa9b3ce0173030e210
BLAKE2b-256 checksum
How to use checksums
cdffaa916f351c41cea4d04a422e299c055e5ec631093deb96e37690c6bbdb37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.6.3 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.1

Release history Release notifications | RSS feed

3.2.0

1 release file

3.1.0

1 release file

3.0.0

1 release file

2.2.1

1 release file

2.2.0

1 release file

2.1.1

1 release file

2.1.0

1 release file

2.0.0

1 release file

This release

1.0.0 This release

1 release file

0.0.1

2 release files

0.0.0

2 release files

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