An IO Ninja plugin is a collection of scripts residing in a dedicated directory. IO Ninja comes with a set of standard plugins, and users can extend this set with plugins of their own. Plugins fall into one of the following two categories.
Session plugins provide a transport for sending and receiving data. Whenever you click the New Session button, you choose one of the available session plugins to be used as a transport provider:
IO Ninja contains session plugins for all commonly used transports (Serial, TCP, UDP, SSL, pipes, etc), but it’s always possible to create a new plugin for a vendor-specific transport (e.g., to work with a device that exposes a non-standard USB interface).
Layer plugins are attached on top of existing transport sessions and can be used for:
- Decode higher-level protocols (e.g. Modbus Analyzer);
- Colorize data according to some logic (e.g. Regex Colorizer);
- Filter/clean-up logs according to some logic (e.g. TX/RX Filter);
Custom logic of sending and receiving data:
- Implement application-layer protocols (e.g. Xmodem);
- Auto-reply to incoming packets (e.g. Echo);
- Send packets on timer (e.g. Replay Log);
- Add prefix/suffix/pack/encode/retransmit packets (e.g. TX Modifier).
Layers don’t implement transports; instead, they use a transport provided by the underlying session plugin. On the one hand, it means, layers are more restricted in what they can do. On the other hand, it makes them transport-independent and typically more lightweight than session plugins.
It’s possible to stack layers one on top of another, thus applying their functionality in a specific order: