Skip to main content

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 width attribute 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


Download files

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

Source Distribution

bindiffscript-0.2.0.tar.gz (87.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bindiffscript-0.2.0-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

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

Hashes for bindiffscript-0.2.0.tar.gz
Algorithm Hash digest
SHA256 dd9f688863b0b02674e89df3e872b259a4ea31dcf5b7752306f8e30fce448a9b
MD5 252688cf8d08690685ffbb16ad5af8e4
BLAKE2b-256 e52621d09b0e91dcfc5cf8838f7b4c0fecd9bb7760277e42638251e9b54be7c8

See more details on using hashes here.

File details

Details for the file bindiffscript-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for bindiffscript-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ef04844c43fa5f7b74b09e5762844fad31c9a19cfc54732bfb71ff0345ebd420
MD5 5a7fbacb3e6fa742aa096c5dba26b8f7
BLAKE2b-256 28d6b9332bdc8fe969f4d93c781bec6d865b10131bfd6a6c0e081bb6b3596fae

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