bindiffscript
Project description
bindiffscript
Fancy diff tool for reverse engineering binary files using a scripted approach.
Install and use
You can either install bindiffscript via pipx
# have pipx installed first
pipx install bindiffscript
bindiffscript ...
.. simply run it via uvx provided by the uv package
# have uv installed first
uvx bindiffscript ...
.. or checkout the project and run it via uv run
# have git and uv installed first
git clone https://github.com/frans-fuerst/bindiffscript.git
cd bindiffscript
uv run bindiffscript ...
With all approaches you get an entry point bindiffscript with the
following syntax:
bindiffscript [<opts>..] <FILE>*
Since <FILE> can be a YAML file containing options and files to diff, you
can set a shebang to bindiffscript and make it executable:
#!/usr/bin/env bindiffscript
files:
- path: path/to/file1.txt
- path: path/to/file2.txt
.. which is the same as running bindiffscript example.yaml.
See the examples folder for syntax and inspiration!
Contribution
Initialize
git clone https://github.com/frans-fuerst/bindiffscript.git
cd bindiffscript
uv run pre-commit install
Manually run checks and fixes
# run all checks which would be executed on commit, but on unstaged stuff, too
uv run pre-commit run --hook-stage pre-commit --all-files
# run all type checking (mypy) on current (unstaged) state
uv run pre-commit run check-python-typing --all-files
uv run pre-commit run check-python-linting --all-files
uv run pre-commit run check-python-format --all-files
uv run pre-commit run check-python-isort --all-files
uv run pre-commit run check-python-unittest --all-files
uv run pre-commit run check-python-doctest --all-files
uv run pre-commit run check-yaml-linting --all-files
uv run pre-commit run fix-python-linting --hook-stage manual --all-files
uv run pre-commit run fix-python-format --hook-stage manual --all-files
uv run pre-commit run fix-python-isort --hook-stage manual --all-files
implement -> uv run pytest -> commit -> repeat
Manually run checks and fixes
uv version --bump <patch|minor|major>
uv build
# manual tests
git push
uv publish --token <TOKEN>
Wishlist
- Readme
- Make width configurable via
widthattribute or command line option - Allow to specify padding value
- Clip long files via
head - Configure cell format
- Show some sort of line number
- Skip identical lines
- Update on change
- Bash completion
- Show multiple files
- Highlight special/magic content
- Show hex/text side by side
- Scroll
- Show padding differently
- Auto-generate padding
- Padding: set to fixed position
- Padding: insert arbitrary data
- Padding: length from macro
- Annotations
External Sources
Project details
Release history Release notifications | RSS feed
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 bindiffscript-0.2.0.tar.gz.
File metadata
- Download URL: bindiffscript-0.2.0.tar.gz
- Upload date:
- Size: 87.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd9f688863b0b02674e89df3e872b259a4ea31dcf5b7752306f8e30fce448a9b
|
|
| MD5 |
252688cf8d08690685ffbb16ad5af8e4
|
|
| BLAKE2b-256 |
e52621d09b0e91dcfc5cf8838f7b4c0fecd9bb7760277e42638251e9b54be7c8
|
File details
Details for the file bindiffscript-0.2.0-py3-none-any.whl.
File metadata
- Download URL: bindiffscript-0.2.0-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef04844c43fa5f7b74b09e5762844fad31c9a19cfc54732bfb71ff0345ebd420
|
|
| MD5 |
5a7fbacb3e6fa742aa096c5dba26b8f7
|
|
| BLAKE2b-256 |
28d6b9332bdc8fe969f4d93c781bec6d865b10131bfd6a6c0e081bb6b3596fae
|