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
- Start typing any character at the empty prompt.
- The menu lists canonical resources and essential shell commands matching
the typed prefix (for example,
dshowsdeviceanddriver). - Type a resource and a space to see its actions (for example,
pluginshowslist,run,run-all, andrefresh). - 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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.