Skip to main content

iotsploit-cli

IoTSploit interactive CLI shell for IoT security testing.

Overview

This package provides the iotsploit command-line shell built on top of cmd2. It bundles the core console loop (console.py) and all command modules (commands/) that implement device management, plugin execution, target management, network operations, and more.

Installation

pip install iotsploit-cli

Usage

iotsploit

Or with the Django server started immediately:

iotsploit --runserver

Choose the backend and MCP listening addresses when the defaults are not suitable:

iotsploit --runserver \
  --host 0.0.0.0 --api-port 8080 --ws-port 8081 \
  --mcp-host 127.0.0.1 --mcp-port 9901

The same options are available inside the shell:

<IoX_SHELL> service start --host 0.0.0.0 --api-port 8080 --ws-port 8081

--host controls the API and WebSocket listeners. MCP remains on loopback by default because it does not authenticate incoming requests; expose it only on a protected network. All ports must be distinct.

Background service stdout and stderr are appended to per-service files in IOTSPLOIT_SERVICE_LOG_DIR, including mcp.log and daphne.log. When unset, the directory is iotsploit_logs under IOTSPLOIT_RUNTIME_DIR, or under Python's tempfile.gettempdir() when neither override is set:

Platform Typical default log directory
Linux /tmp/iotsploit_logs
macOS $TMPDIR/iotsploit_logs, usually under /var/folders/.../T/
Windows %TEMP%\iotsploit_logs, usually under %LOCALAPPDATA%\Temp

Temporary-directory settings can change these paths. Service startup prints the resolved log directory. Set IOTSPLOIT_SERVICE_LOG_DIR to a persistent directory if logs must survive temporary-file cleanup.

Set IOTSPLOIT_SERVICE_LOG_TO_CONSOLE=1 before launching the CLI to send service logs to the terminal instead. Restart services to apply a routing change; terminal log format does not control service output routing.

Custom plugins

IOTSPLOIT_EXPLOIT_PLUGINS_DIR can be used for user custom exploit plugins. IOTSPLOIT_DEVICE_PLUGINS_DIR can be used for user custom device plugins.

Command standard

Application commands use a predictable resource action grammar:

device list
driver status
firmware flash <firmware> <device>
plugin run <plugin>
target export [file]
service status

The top-level resources are host, device, driver, firmware, plugin, target, service, wifi, and config. Run help for the concise public surface, help <resource> for its actions, or help --all for advanced cmd2 commands and the legacy-name migration table.

Previous command names and abbreviations remain executable during the migration. They print a deprecation warning with the canonical replacement.

Command Palette

The IoTSploit shell includes a live command palette for the canonical command surface. When you type at the top-level prompt, a menu shows matching resources with a short explanation. After a resource and a space, it shows that resource's actions.

How it works

  1. Start typing any character at the empty prompt.
  2. The menu lists canonical resources and essential shell commands matching the typed prefix (for example, d shows device and driver).
  3. Type a resource and a space to see its actions (for example, plugin shows list, run, run-all, and refresh).
  4. Navigate the list, insert a selection, or dismiss the menu.

Keyboard controls

Key Behavior
Any first-token character Open the palette menu
Additional characters Filter the list case-insensitively
Up / Down Move selection without changing the buffer
Tab Insert the selected command name (does not submit)
Enter Accept the selected command and submit through cmd2 dispatch
Escape Close the menu and retain the current input text
Backspace to empty Close the menu
Space after a resource Show the resource's actions
Space after service start Show the available endpoint options
Space after another action Close the menu and allow argument entry
Ctrl+C Cancel the current input (normal shell behavior)
Ctrl+D on empty line Exit the shell (normal EOF behavior)

Behaviour notes

  • The palette is TTY-only. Non-interactive use (piped input, startup scripts, non-TTY stdin) bypasses the palette entirely and uses the normal cmd2 input path.
  • The command list comes from the same canonical registry as help and the argparse command definitions, so names and explanations stay aligned.
  • Tab completion for arguments (after a space) still uses cmd2's existing completion engine, including argument-specific completers and argparse completers.
  • Selecting a command from the palette does not execute it; it inserts the command name so you can type arguments before pressing Enter.

License

GPL-3.0-or-later. See LICENSE for details. For commercial use, contact wang3919379@gmail.com.

Metadata

Release files for iotsploit-cli 0.0.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for iotsploit-cli 0.0.10
File Size Uploaded Provenance Actions
iotsploit_cli-0.0.10.tar.gz 47.9 kB Without provenance Details for iotsploit_cli-0.0.10.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for iotsploit-cli 0.0.10
File Interpreter ABI Platform Actions
iotsploit_cli-0.0.10-py3-none-any.whl Python 3 none any Details for iotsploit_cli-0.0.10-py3-none-any.whl

Total release size: 103.8 kB

Release files / iotsploit_cli-0.0.10.tar.gz

Download URL iotsploit_cli-0.0.10.tar.gz
Size 47.9 kB
Tags Source
SHA-256 checksum
How to use checksums
8490f45c1bd7dace935596eba98876e6e52060ca3ef1697d692ef7ae274d5daf
BLAKE2b-256 checksum
How to use checksums
faaf391ed80873e0001b14b95c03dfaa8dae2894c3f64485c193c3541c07cf41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / iotsploit_cli-0.0.10-py3-none-any.whl

Download URL iotsploit_cli-0.0.10-py3-none-any.whl
Size 55.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9205206ec0ec234e2bdb7b89064a758e41660258b8b012d22ef50b704d75da22
BLAKE2b-256 checksum
How to use checksums
18cfb06023fe03d3c6fc973d38737c0f3d5194c0f5b1a1cc3e2d43ae486fbea7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Security for iotsploit-cli 0.0.10

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page