A user-friendly re-implementation of existing hex tools in Rust

Overview

Hex

Picture of Hex being used

A project to create alternate (and more user friendly) versions of existing hex tools.

The project can be installed as a extension to the github-cli.

Installation

To install as a standalone binary, run the following commands:

git clone https://github.com/sohomdatta1/hex.git
cd hex
./script/normal-build.sh

For use with github-cli, run the following commands:

git clone https://github.com/sohomdatta1/hex.git
cd hex
./script/build.sh
gh extension install .

Operations

Currently, the following operations are supported:

  • str - Dumps out readable strings in a particular file
  • dump - Dumps out a particular file in hexdump format

If a pager is not desired, the NOPAGER env variable can be set. If colored output is not desired, the NOCOLOR env variable can be set.

Language

The project is written in Rust, mainly as a way for me to learn the language. I feel like implementing common tools such as these will be a nice way to get familiar with the basics.

You might also like...
A curated list of replacements for existing software written in Rust

Awesome Alternatives in Rust A curated list of replacements for existing software written in Rust. If you want to contribute, please read CONTRIBUTING

Rust TUI library - Clipping region is a set of min/max x/y values applied to the existing region

TinyBit Clipping region is a set of min/max x/y values applied to the existing region A TUI lib This is not yet production ready T O D O TODO: bugs: T

🐢 Atuin replaces your existing shell history with a SQLite database, and records additional context for your commands
🐢 Atuin replaces your existing shell history with a SQLite database, and records additional context for your commands

Atuin replaces your existing shell history with a SQLite database, and records additional context for your commands. Additionally, it provides optional and fully encrypted synchronisation of your history between machines, via an Atuin server.

📦 Distribute Roblox games as standalone executables -- No existing client necessary. 🚧
📦 Distribute Roblox games as standalone executables -- No existing client necessary. 🚧

📦 Packer Distribute Roblox games as standalone executables. 🚧 Packer is still being worked on. Among many other things, Windows is not currently sup

A BASIC language interpreter. Does not conform to existing standards. Mostly a toy.
A BASIC language interpreter. Does not conform to existing standards. Mostly a toy.

JW-Basic A toy language that is somewhat like QBasic. Features: Graphics: 160x96 (255 colors & transparent) Text: 32x16 (4x5 font) Character set: ASCI

Pure rust library for reading / writing DNG files providing access to the raw data in a zero-copy friendly way.

DNG-rs   A pure rust library for reading / writing DNG files providing access to the raw data in a zero-copy friendly way. Also containing code for re

Synthia is a lightweight and beginner-friendly interpreted programming language developed in Rust
Synthia is a lightweight and beginner-friendly interpreted programming language developed in Rust

Synthia is a lightweight and beginner-friendly interpreted programming language developed in Rust. With a simple, intuitive syntax and a focus on ease of use, Synthia is perfect for both newcomers to programming and experienced developers looking for a flexible scripting language

This is choose, a human-friendly and fast alternative to cut and (sometimes) awk
This is choose, a human-friendly and fast alternative to cut and (sometimes) awk

Choose This is choose, a human-friendly and fast alternative to cut and (sometimes) awk Features terse field selection syntax similar to Python's list

UnixString is An FFI-friendly null-terminated byte string

UnixString is an FFI-friendly null-terminated byte string that may be constructed from a String, a CString, a PathBuf, an OsString or a collection of bytes.

Comments
  • Investigate performance issues in `dump`

    Investigate performance issues in `dump`

    hexyl appears to be marginally faster while computing the hexdump. Investigate why this is the case, and make performance improvements (especially will be benificial for larger files)

    help wanted 
    opened by sohomdatta1 0
  • Investigate the idea of adding profiles

    Investigate the idea of adding profiles

    Profiles (being able to color code bytes of a particular format depending on some kind of grouping) -- so like for the binary dump of a http request, the header would be a different color from the body and so on.

    enhancement 
    opened by sohomdatta1 0
  • Add diff

    Add diff

    Diffing for binary files is a bit scattered here and there with the current best solution being hexdump file1 > file1.bin && hexdump file2 > file2.bin && diff file1.bin file2.bin which is inconvinient and sometimes misleading. We should provide that under this tool.

    enhancement 
    opened by sohomdatta1 0
  • Add grep

    Add grep

    Currently my workflow for grepping/searching for a sequence of bytes is effectively to run the following command hexdump filename | grep 'ca fe'. I feel like a better CLI interface for this is necessary.

    enhancement 
    opened by sohomdatta1 0
Owner
Sohom Datta
Volunter developer @wikimedia, CTF player w/ @Cryptonite-MIT, student at Manipal Institute of Technology
Sohom Datta
Estratto is a powerful and user-friendly Rust library designed for extracting rich audio features from digital audio signals.

estratto 〜 An Audio Feature Extraction Library estratto is a powerful and user-friendly Rust library designed for extracting rich audio features from

Amber J Blue 5 Aug 25, 2023
fd is a program to find entries in your filesystem. It is a simple, fast and user-friendly alternative to find

fd is a program to find entries in your filesystem. It is a simple, fast and user-friendly alternative to find. While it does not aim to support all of find's powerful functionality, it provides sensible (opinionated) defaults for a majority of use cases.

David Peter 25.9k Jan 9, 2023
A user-friendly TUI for secure file transfers, with arrow-key and VIM-style navigation

gsftp SFTP with an interactive text-based user interface (TUI). Transfer files through an encrypted connection with a visual interface, so you can see

Ben Jiron 3 Jul 7, 2022
OSINT from your favorite services in a friendly terminal user interface

osintui Open Source Intelligence Terminal User Interface Report Bug · Request Feature Installation First, install Rust (using the recommended rustup i

Will Sheldon 639 Jan 4, 2023
A user-friendly, lightweight TUI for disk imaging

Caligula Burning Tool Caligula is a user-friendly, lightweight TUI for imaging disks. $ caligula burn -h Burn an image to a disk Usage: caligula burn

Astrid Yu 25 Mar 26, 2023
Cork is a simple command-line calculator, mainly targeted towards people who deal with hex numbers

Cork is a simple command-line calculator, mainly targeted towards people who deal with hex numbers. It deals only with integer arithmetic. Expressions may involve mixed bases (limited to decimal, hexadecimal, octal and binary numbers). The global output format may be set to a particular radix - by default it is hex.

Deep Majumder 50 Dec 22, 2022
Parse hex colors to tui::style::Color

Color -> Tui Parse hex colors to tui rgb colors #c3f111 -> Color::Rgb(195,241,17) Note that the indexed colors are NOT HEX #142 -> Color::Indexed(142)

Uttarayan Mondal 1 Nov 8, 2021
hexyl is a simple hex viewer for the terminal. It uses a colored output to distinguish different categories of bytes

hexyl is a simple hex viewer for the terminal. It uses a colored output to distinguish different categories of bytes (NULL bytes, printable ASCII characters, ASCII whitespace characters, other ASCII characters and non-ASCII).

David Peter 7.3k Dec 29, 2022
convert nostr keys and note-ids between hex and bech32

Key-Convertr People are copy-pasting nostr private keys into webpages to convert between the original hex-encoding and bech32-encoding (specified in N

Rijndael 14 Jan 9, 2023
⚙️ A curated list of static analysis (SAST) tools for all programming languages, config files, build tools, and more.

This repository lists static analysis tools for all programming languages, build tools, config files and more. The official website, analysis-tools.de

Analysis Tools 10.7k Jan 2, 2023