ioctlpus icon indicating copy to clipboard operation
ioctlpus copied to clipboard

IOCTLpus can be used to make DeviceIoControl requests with arbitrary inputs (with functionality somewhat similar to Burp Repeater).

IOCTLpus

IOCTLpus Logo

IOCTLpus can be used to make DeviceIoControl requests with arbitrary inputs (with functionality somewhat similar to Burp Repeater).

Here is an example of a communication with a driver:

IOCTLpus Example

If no arguments is passed to IOCTLpus, it will run in GUI mode; if the --cli argument is passed it will run in CLI mode.

Example: --cli --guid \\.\PhysicalDrive0 --ioctl 70000 -i 32 -o 32 --input 0000000000000000000000000000000000000000000000000000000000000000

CLI Usage:

  --cli                Run IOCTLpus in CLI mode.

  --guid               Path/GUID of the driver to interact with.

  --ioctl              IOCTL code.

  -i, --input-size     (Default: 32) Input Size (decimal).

  -o, --output-size    (Default: 32) Output Size (decimal).

  --input              Input buffer.

  -r, --repeat         (Default: 0) # of times to repeat the IOCTL request.

  --access-mask        (Default: 20000000) Access Mask.

  --help               Display this help screen.

  --version            Display version information.

Tentative Roadmap

  • [x] Create handles using Device Interface GUIDs in addition to symbolic links. [GIF]
  • [ ] Persist requests to SQLite databases.
  • [ ] Apply filters to request history.
  • [ ] Integrate Kaitai Struct to define and view buffer structures (inspired by).
  • [x] Develop an API to use the tool headlessly (e.g. for fuzzing).
  • [x] Design a cool logo.

Similar Tools

Developers

Licence

GPLv3