GNU poke 1.0
jemarch.net
jemarch.net
https://www.youtube.com/watch?v=92Sykut06N8
Think of it as the missing tool between an hex editor and a programming language. Hachoir, Kaitai, linker scripts or most reverse engineering toolkits (radare, etc.) all try to address a similar problem, but from a different angle.
This program looks pretty awesome and seems to fit into a use-case that I frequently want. I've usually just consigned myself to using standard hex editors, sometimes little bits of Python to wrangle whatever data I'm trying to manage.
Shouldn't it also have a companion utility named peek?
:-D
Honestly I don't suggest that, just having fun. Simple is good in a name. Then again, so is a unique search term.
I'll have to give this one a try. It would be nice to be able to sift through binary data like bytecode or some non-standard serialization format without writing a one-off utility for it.
https://www.sweetscape.com/010editor/
It lets you write "templates" in a weird hybrid syntax that looks a lot like a C header file but also allows control statements that can decode complicated data structures in a few lines of script. It looks to have very similar capabilities to GNU Poke, but with a GUI.
But it least the VM is much faster than 101
type Packet =
struct
{
byte magic;
uint<16> length;
byte[length] data;
}
It also seems to have optional fields using conditions, using the optional extended header in MP3 id3v2 tag as an example: struct ID3V2_Tag =
struct
{
ID3V2_Hdr hdr;
IDV2_Ext_Hdr ext_hdr if hdr.extended_hdr_present;
}
(this is an alternative to another way it provides by using unions which work similar to C unions but each alternative also has conditions for when it is valid).So at least from the above i think it should be possible to declare types that work with variable length and prefixes like that.
https://git.savannah.gnu.org/cgit/poke.git/tree/etc/poke-mod...
./backup.sh | poke username
Where username would accept a system user, phone number, email address, webhook url, whatever. ./backup.sh | ( notify-send "$(cat)" )
though that could also be written: notify-send "$(./backup.sh)"
If you also want the output in the terminal, you could use tee: ./backup.sh | tee >(notify-send "$(cat)")
If you want it to be an email or SMS, there are probably commands that you could replace notify-send with.Or sprinkle some AI on it and decide based on the destination. I wouldn't want a huge log being sent via sms but nbd for email.
Or avoid that overcomplication and specify what you want. As the one writing the command, you should know if the output is big and what the ideal is for the destination you want.
It's also a command I could throw together in about an hour with a bit of bash if I really wanted it. Mix in a bit of curl, bit of whatever the sendmail command is these days, bit of Twilio. Job's a good'un.
For the record "sprinkle some AI on it" is if statements, it was a yoke.
poke username -- path/to/command arg1 arg2
The command would fork, execute the child, wait for the child to finish, then send out its notification.
This would also allow flags like:
poke --on-failure @koolba -- path/to/foo
Or even handling the child taking too long:
poke --on-lagging 20m @koolba -- path/to/something-that-might-hang
https://slate.com/business/2014/06/marc-andreessen-explains-...