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!