Packet Builder

Packet Builder

IO Ninja allows you to prepare packets for transmission in multiple ways.

Text Transmit

First of all, you can simply punch the text into the IO Ninja plain-text editor. In this mode, IO Ninja supports insertion of special characters via escape sequences (e.g., \r, \t \xff, and so on).

Sometimes you may have to prepare a text with lots of backslashes (e.g. a Windows file path); using escape sequences would be counter-productive in this case. No worries — you can switch the support for escape sequences ON or OFF depending on situation.

Binary Transmit

Binary packet transmission is where IO Ninja truly shines.

IO Ninja features a built-in modern hex-editor. This editor is Unicode-enabled, supports insert/overwrite modes, lets you edit nibbles, highlights the selected octet (so you can clearly see the mapping between a character and its code), shows the current offset and selected range.

To enpower the hex-editor, we also offer packet templates. This feature allows you to define a packet structure in a C-like language and then edit its fields interactively with a property grid.

File Transmit

Sometimes, you may need to transmit the contents of a file. With IO Ninja, you can easily do that, too. The 3rd tab of the Transmit Pane is dedicated to file transmission. Just browse for a file and hit Send. You can even control the size of individual blocks!

Script Transmit

Finally, yet another unique facility of IO Ninja is the scriptable transmit. Here you can write a small program in Jancy to generate and transmit packets programmatically.

To give you a taste of what this facility is capable of, here's a simple script:

void main() {
    for (size_t i = 0;; i++) {
        char const* p = $"packet $i\n"; // perl-like interpolating literals
        transmit(p); // omitting length means, use strlen ()
        sys.sleep(1000); // wait one second and repeat
    }
}

The example above defines an infinite loop which sends packets with ever-incrementing indices and with short one-second pauses between packets.

Don't let the "infinite" part scare you — you can always abort the execution of a script with the Stop button!

Gallery