GNU Poke 1.0 Is Released
Poke is a new interactive editor for binary data with a full-fledged procedural, interactive programming language designed to describe data structures and to operate on them. This is the first release after 3 years of work by 19 contributors.
Poke is a interactive editor for binary data. It is not a graphical editor with menus and things like that. It takes a file as an argument and it has five basic commands:
|dump||display the contents of a range in the current IO space.|
|copy||Copy a range of memory.|
|save||Save a range of an IO space to a file.|
|extract||Extract the contents of a mapped value to a mem IOS.|
|scrabble||Scrabble part of an IO space based on patterns|
There is a built-in help function you can call with
.doc function (as in
dump on a Ogg Vorbis audio file produces this output:
$ poke /home/chaekyung/LALALILALA.ogg _____ ---' __\_______ ______) GNU poke 1.0 __) __) ---._______) Copyright (C) 2019-2021 The poke authors. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Powered by Jitter 0.9.258. Perpetrated by Jose E. Marchesi. hserver listening in port 46699. For help, type ".help". Type ".exit" to leave the program. (poke) dump 76543210 0011 2233 4455 6677 8899 aabb ccdd eeff 0123456789ABCDEF 00000000: 4f67 6753 0002 0000 0000 0000 0000 2d93 OggS..........-. 00000010: 0452 0000 0000 dde6 8a0b 011e 0176 6f72 .R...........vor 00000020: 6269 7300 0000 0002 44ac 0000 0000 0000 bis.....D....... 00000030: 0071 0200 0000 0000 b801 4f67 6753 0000 .q........OggS.. 00000040: 0000 0000 0000 0000 2d93 0452 0100 0000 ........-..R.... 00000050: 6111 306e 112d ffff ffff ffff ffff ffff a.0n.-.......... 00000060: ffff ffff ffff 0376 6f72 6269 731d 0000 .......vorbis... 00000070: 0058 6970 682e 4f72 6720 6c69 6256 6f72 .Xiph.Org libVor (poke)
It is supposed to be a binary editor, so there is probably some way to make actual edits using Poke. Perhaps you're supposed to use the
save commands somehow. Perhaps not. The mystery remains unsolved. You can probably solve it if you are a GNU and/or computer scientist.
The GNU developers note that:
"The program is far from being perfect and there are known bugs and limitations in place. We also have lots of awesome ideas still to be implemented, extensions we want to add, pickles for many data formats to write, documentation to improve, and lots of work in progress... the GUI, the machine-interface... working in poke is so fun that it is difficult to stop :'D "
The source code can be acquired from https://ftp.gnu.org/gnu/poke/poke-1.0.tar.gz.
Poke is built using the GNU Autotools build system (
./configure && make). It is strait forward as long as you a have the development packages for TCL, TK and the Boehm garbage collector (gc) installed. You will likely also want to have libtextstyle and the the development package for it. It is optional but you won't get styled output from Poke without it.
Poke is a fairly quick compile if you have all the requirements installed, so it may be worth a look if you are interested in a interactive binary editor and you have a use-case for it or space time to play around with it. There are some advanced examples of how to use it in the Applied Pokology blog.