
Packet Builder
Prepare Complex Packets With EaseIO Ninja offers robust and user-friendly tools to help you prepare outbound packets for transmission, no matter how complex the protocol might be.
Text Transmit
For text-based protocols, IO Ninja provides a plain text editor that supports escape sequences such as \r
, \t
, \x02
, and more.
If you need to create a packet with lots of backslashes, escape sequences can become counterproductive. No problem — you can toggle escape sequence support ON or OFF depending on your needs.
Binary Transmit
Binary packet transmission is where IO Ninja truly stands out.
It comes with a modern, built-in hex editor that offers:
- Full Unicode support
- Insert and overwrite modes
- Nibble editing
- Highlighting for the selected octet (making the mapping between characters and their codes crystal clear)
- Display of the current offset and selected range
Packet Templates
Even with a great hex editor, manually encoding fields in a binary packet can be tedious and error-prone — especially when it involves checksums!
The Packet Template engine simplifies this process. You can describe the packet structure using a C-like language, then easily adjust all fields through the property grid. This eliminates the hassle of manually calculating field offsets, lengths, or byte order. Plus, the engine supports automatic calculation of checksums and other derived fields!
File Transmit
Need to transmit the contents of a file? IO Ninja has you covered.
The 3rd tab in the Transmit Pane is dedicated to file transmission. Simply browse for your file, click Send,
and you're good to go. You can even control the size of individual transmission blocks.
Script Transmit
One of IO Ninja's most unique features is scriptable transmission. You can write custom scripts in Jancy to programmatically generate and transmit packets.
Here's a simple example of what’s possible:
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
}
}
This script creates an infinite loop that sends packets with incrementing indices, pausing for one second between transmissions.
Don’t worry about the "infinite" part — you can always stop the script with the Stop
button!
Packet History & Library
Every packet you send is saved in the Packet History pane.
- Need to resend a specific packet? Just double-click it.
- Want to inspect its contents? Hover your mouse over it.
- Need to tweak it before retransmitting? Drag it back to the packet editor.
IO Ninja also lets you build libraries of frequently used packets. Assign mnemonic names to your packets for easy navigation. These names also appear in the Packet History when the corresponding packet is sent, making it simple to track and manage your transmissions.