Poke is neat, but its one of those tools with a really steep learning curve and not great documentation. I've played around with it and then given up when seemingly simple things to do are not obvious and grepping the documentation and googling fail to surface the solution.
If you really needed a tool like this I could see how you might get over that learning curve. Or if you know someone who's already and expert and can show you all the tricks. Otherwise its hard to imagine people reaching for it casually.
I wonder if this is the next generation of software delivery, an infrastructure team collects the payload from storage, stops it down to its core implementation, then repackages it in the process needed for the new system. It would be kind of like a post apocalyptic salvage of useful utilities that lack the necessary infrastructure from the previous era and can be remade useful through recompilation as a new process
You might be interested in ImHex https://github.com/WerWolv/ImHex
Seems similar to Hexfiend but cross platform and very powerful.
I have never used Hexfiend though, so can't really compare. Just going by the GitHub readme.
I am also working on a project in this space. It is a template format for binary data, and accompanying commandline tooling. It is usable today for tasks such as:
- generating structured binary diffs
- creating universal extractors, several custom game formats are covered already
It is in a early stage but would love some feedback!
Is there allowance for file formats whose contents are dynamic, based on the values present in other parts of the file?
For instance "if value at offset X is 123, then treat this other block of data as format ABC, otherwise treat it as as DEF". Obviously can get complex. The Adobe PSD format does horrible things like this all over the place (:
Not wanting to derail your work but you could take a look at the pattern language here for inspiration. Seems as if it has the same goal https://docs.werwolv.net/pattern-language/
Was there anything in particular you wanted to bring to my attention about the ImHex pattern language?
From a quick glance it looks similar indeed, with the same basic building blocks as feng (data types and structs), while they use a rust inspired format, and I use yaml format (however I also use the rust-inspired data type naming u8, u16, s16 and so on).
A major difference is that feng strives to be usable with minimal/no programming (a custom dsl was developed around this idea), while the ImHex pattern language does look rather classic programming focused data processing (like 010 templates but more pretty syntax)
15 comments
[ 4.4 ms ] story [ 50.5 ms ] threadIf you really needed a tool like this I could see how you might get over that learning curve. Or if you know someone who's already and expert and can show you all the tricks. Otherwise its hard to imagine people reaching for it casually.
https://news.ycombinator.com/item?id=36175000
Here's a previous comment of mine with a list of various such things: https://news.ycombinator.com/item?id=34990984
There was some good discussion on that previous post from others, as well.
- generating structured binary diffs
- creating universal extractors, several custom game formats are covered already
It is in a early stage but would love some feedback!
https://github.com/martinlindhe/feng
For instance "if value at offset X is 123, then treat this other block of data as format ABC, otherwise treat it as as DEF". Obviously can get complex. The Adobe PSD format does horrible things like this all over the place (:
You can see it in use in the PNG format template, here: https://github.com/martinlindhe/feng/blob/main/templates/ima...
Over the years there has been a silly amount of projects in this space, it is very hard to keep track of them all.
I did try to summarize the ones I know about in the feng project, see here, under "SIMILAR WORK":
https://github.com/martinlindhe/feng/blob/main/RESOURCES.md
Was there anything in particular you wanted to bring to my attention about the ImHex pattern language?
From a quick glance it looks similar indeed, with the same basic building blocks as feng (data types and structs), while they use a rust inspired format, and I use yaml format (however I also use the rust-inspired data type naming u8, u16, s16 and so on).
A major difference is that feng strives to be usable with minimal/no programming (a custom dsl was developed around this idea), while the ImHex pattern language does look rather classic programming focused data processing (like 010 templates but more pretty syntax)
The community page is also pretty basic https://pokology.org/pickles.html
Am I missing something obvious here?
GNU poke: The extensible editor for structured binary data - https://news.ycombinator.com/item?id=34986042 - March 2023 (34 comments)
Also related:
Erlang and GNU poke are better than hex editors - https://news.ycombinator.com/item?id=26435716 - March 2021 (2 comments)
GNU poke 1.0 - https://news.ycombinator.com/item?id=26274466 - Feb 2021 (38 comments)
GNU poke – new interactive editor for binary data - https://news.ycombinator.com/item?id=25131895 - Nov 2020 (7 comments)
GNU poke: An interactive, extensible editor for binary data - https://news.ycombinator.com/item?id=23031352 - April 2020 (2 comments)
* https://news.ycombinator.com/newsfaq.html