binary-parsing
gojq
binary-parsing | gojq | |
---|---|---|
5 | 3 | |
839 | 3 | |
- | - | |
5.7 | 8.4 | |
27 days ago | 17 days ago | |
Go | ||
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
binary-parsing
- Reverse-engineering an encrypted IoT protocol
-
GNU poke: The extensible editor for structured binary data
* binary-parsing - https://github.com/dloss/binary-parsing
-
Ask HN: What software do you use to examine binary files?
There are a few hex/disk editors that support "templates" (but you need most times to create those yourself).
Here is a sort of "curated list" of related tools:
https://github.com/dloss/binary-parsing
The most complete/populated I know of is Kaitai:
http://kaitai.io/
http://formats.kaitai.io/
that you can use with Hiew with Kiewtai
https://github.com/taviso/kiewtai
If the question is slightly different, i.e. which bytes are used to identify a given file format, there is Trid:
https://mark0.net/soft-trid-e.html
Which has also a database of known headers/patterns.
- A list of tools for parsing binary data structures
-
Fq: Jq for Binary Formats
Nice! Some other tools and parsers: https://github.com/dloss/binary-parsing
gojq
-
To a Man with `Jq`, Everything Looks Like JSON
Yeap i've talked to itchyny quite a lot about various changes https://github.com/itchyny/gojq/issues/153 and also upstreamed quite a lot https://github.com/itchyny/gojq/issues?q=author%3Awader like custom iterators (to allow eval, own iterators and "empty" functions), query marshalling (query rewrite tricks) and a bunch of small things and bug fixes. But the largest change to add a JQValue interface is quite complex, other changes like extended literals is also a bit tricky.
Hmm weird list of changes for https://github.com/wader/gojq/compare/fq...itchyny:gojq:main but i guess it is because i haven't kept my main branch in sync. The fq branch should be based on latest gojq/main as of now. I usually try to rebase as quick as possible.
Let me know if you have any other questions or want to help out! maybe email etc as i usually don't check HN comments replies that often :)
-
Fq: Jq for Binary Formats
For query language i didn't prototype much, i know i really wanted jq as i had already used it extensively and know it was very powerful and had a terse syntax when working with structured data. I had some ideas of maybe using the C-version of jq via bindings or somehow let fq be tool that you used like this 'fq file | jq ... | fq' but it just felt strange and not very user friendly. Then i found gojq and i just felt that i have to make it work somehow, even if it would require lots of hard work and change to it (see https://github.com/wader/gojq/commits/fq, the JQValue change it probably to most interesting and support or custom iterators/functions that has been merged). And it turned out much better than i would expected, large parts becuse gojq's code is very nice and author has been very helpful.
What are some alternatives?
HexFiend - A fast and clever hex editor for macOS
fq - jq for binary formats - tool, language and decoders for working with binary and text formats
rasn - A Safe #[no_std] ASN.1 Codec Framework
Kaitai Struct - Kaitai Struct: declarative language to generate binary data parsers in C++ / C# / Go / Java / JavaScript / Lua / Nim / Perl / PHP / Python / Ruby
gojq - Pure Go implementation of jq
kaitai_struct_visualizer - Kaitai Struct: visualizer and hex viewer tool
jq - Command-line JSON processor
ImHex - 🔍 A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.
json-toolkit - "the best opensource converter I've found across the Internet" -- dene14
unblob - Extract files from any kind of container formats
json-logs - A tool to pretty-print JSON logs, like those from zap or logrus.