Adventures with lightweight and minimalist software for Linux

hexcurse: So many things done right

Is it time for another hex editor? It’s time for another hex editor. Here’s hexcurse, which by most accounts does everything right.

Let’s see if I can get a list going here:

Framed panels on the left and right

One key (TAB) switches between hex and ASCII panels

Corresponding cursor position is displayed in color in opposite panel

Scroll bar shows position in the file

Takes advantage of full screen dimensions

Allows you to resize the panel output to a specific width

On-screen F-key legend with corresponding CTRL key sequences

Pop-up help page

Warning to save changes on exit

Display options for decimal addresses and EBCDIC display

And a few more smaller options. And no, I swear I did not coach the hexcurse developers on how to make a great text-based program. But it is very, very well done.

What more could I tell you about a program that does so many things right? I could give you my standard disclaimer about never really needing hex editors, but you know that already.

I can find only one fault in hexcurse, and it’s rather nitpicky: If you ask for a specific width for the panel output, the function key reminders at the bottom of the screen still span the entire width. I’m not sure when that would be useful, so it seems like an oversight to me.

But hexcurse is doing quite well if that’s the only thing I can find wrong with it. Plain and simple, this as an example of a text-based tool with an excellent interface. Up-and-coming text-based software developers, take heed: hexcurse does it right.

Post navigation

3 thoughts on “hexcurse: So many things done right”

I still haven’t found a really good console hex editor, and this one doesn’t cut the muster unfortunately. It has a decent interface, but a fairly limited feature set – I can’t see any way to truncate a file at a given point or to select and copy/export a section of the file.

hexedit is has those features, but it’s interface is far less intuitive and it still is not feature complete. shed that you showed the other day lacks those features, but has some other really nice features, in that it could interpret bytes as 8, 16 and 32bit integers in big and little endian, but even that was still missing other data types, such as 64bit integers, and all types of floating point numbers. And as for text – none of them seem to support anything other than ASCII.

radare/radare2 can do some of these things in it’s visual mode (and can also interpret the data as instructions for various architectures), but it’s overkill for simple hexediting (it’s a full reverse engineering suite after all) and the learning curve is basically “go read the book”.

hexer and bviplus get bonus points for having vim like keybindings, which they then lose after realising that they aren’t really vim-like at all as they are missing all the features that make vim’s keybindings great (e.g. directions) and other keys that arbitrarily do completely different things. Also, their hex editing capability just didn’t seem that good.

hexedit is still my go to for most tasks, sometimes supplementing it with another hexeditor, but I have as yet to find the holy grail of console hex editors.