GNU Poke 1.0 Is Released

From LinuxReviews
Jump to navigationJump to search

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.

written by 윤채경 (Yoon Chae-kyung)  2021-02-27 - last edited 2021-02-28. © CC BY

GNU Poke 1.0 poking at a JPEG image.

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 .doc dump).

Running 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 <>.
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

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 extract, copy and 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

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.

(0 votes)

Add your comment
LinuxReviews welcomes all comments. If you do not want to be anonymous, register or log in. It is free.