breki
Bikkie's Reverse Engineering Kit
Features
archivesArchive: virtual filesystem (similar tozipfile.ZipFile)DiscImage: virtual disc image (tracks & sectors; behaves like aBinaryStream)
binaryxxd: hex view for terminalfind_all:.findbut it keeps lookingread_str: read stream until null byteread_struct&write_struct:structwrappers for working with binary streams
core- built on
structfrom the standard library Struct: robust base class for parsing objects from bytesMappedArray: used byStructfor handling nested structuresBitField: basic bitfield parser
- built on
filesCodePage: string encoding & decoding toolFile: virtual file wrapper (stream + metadata)FriendlyFile: base class for objects w/ data spread over multiple filesParsedFile: base class for objects representing file dataBinaryFile&TextFile:ParsedFilesubclasses for their matchingDataTypesHybridFile:ParsedFilesubclass for files with both binary & text representations
librariesGameLibrary: scans game folders for files we can parse
parseTokenClass: two-way string to python object conversion
Migration from bsp_tool
utils.binary->binarycorearchives- ArchiveClasses
- DiscClasses
tests.files->libraries- GameLibrary
- Librarians
- TODO:
~/.library_map.jsonconfig - bulk file parsing
- optionally defer w/ a generator
Maybes
lumpsLumpClass.from_countis handyBasicLumpClassis just as handy
apex_archive- but not hardcoded for apex
- for managing an archive of game updates
Installation
To use the latest unstable version, clone with git:
$ git clone git@github.com:snake-biscuits/breki.git
$ cd breki
$ pip install -e .
You can also clone with pip:
$ pip install git+https://github.com/snake-biscuits/breki.git
Or, use the latest stable release (August 2026 | 0.1.0 | Python 3.8-14):
$ pip install breki
Usage
TODO: usage guide / general docs
Common Mistakes
Archive / Filepath order
File.__init__ argument order is filepath, archive.
File.from_archive argument order is archive, filepath.
For .__init__: the archive is optional, so it can't come before filepath.
For .from_archive: the archive is essential & it comes first in the path string.
e.g.
folder/archive.zip/file.ext->.from_archive(Zip("folder/archive.zip"), "file.ext")
It's also worth noting that __init__ args are a valid way to open a file.
Since the data isn't read until File.stream is first cached.
Shoutouts
Tools
- 010 Editor
- HxD
- IDA Pro
- IsoBuster
- Kaitai Struct
- pakextract
- radare2
- xxd (included with vim)
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file breki-0.1.0.tar.gz.
File metadata
- Download URL: breki-0.1.0.tar.gz
- Upload date:
- Size: 86.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5707bfd48377fa770f43b22640afbad52e86697334332e8bd417fe000954d06
|
|
| MD5 |
1d79b489806b3dbfed5c8b063790261f
|
|
| BLAKE2b-256 |
688896b0ee6516cddea0d5e0b92e622fc954f8f5f232675fe5972c6b85eb561d
|
File details
Details for the file breki-0.1.0-py3-none-any.whl.
File metadata
- Download URL: breki-0.1.0-py3-none-any.whl
- Upload date:
- Size: 96.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4701c6d6264722ab06cf954a3d2f666d47329b8cac1a065728dadc88ab30b68b
|
|
| MD5 |
263de5c330e32e0a9414d0dcd1d41273
|
|
| BLAKE2b-256 |
8dc1c01d88d2fa213b1394ca64a1cbba7091d1261c5b222fea452177f630d401
|