A Rust-based framework for testing common IoT protocols and IoT implementations which are used by that hardware, those products and infrastructures. Plugins provide support for:
| Plugin | Command | Description |
|---|---|---|
platform/platform |
iottack platform |
Host environment, USB devices and specialized hardware |
amqp/scan |
iottack amqp scan |
Detect an AMQP broker and test for default credentials |
http/banner |
iottack http banner |
Grab HTTP banner and check response headers and security settings |
network/mdns-scan |
iottack network mdns-scan |
Discover mDNS/DNS-SD services on the local network |
network/tcp-banner |
iottack network tcp-banner |
Connect to a TCP service and capture the initial banner |
network/telnet |
iottack network telnet |
Connect to a Telnet service and detect banners, login prompts, and default credentials |
uart/baud-scan |
iottack uart baud-scan |
Probe common UART baud rates to identify the active configuration |
uart/fuzz |
iottack uart fuzz |
Send malformed and custom payloads to a UART interface and report anomalous responses |
uart/port-scan |
iottack uart port-scan |
Discover serial ports available on this host |
uart/shell-detect |
iottack uart shell-detect |
Detect interactive shell or login prompt on a UART interface |
uart/terminal |
iottack uart terminal |
Open an interactive terminal session over a UART interface |
cargo build --releaseWith Nix:
nix build
nix run . -- platformCollect platform environment details about the host which acts as the test platform:
iottack platformReports operating system, kernel/architecture and privilege level.
iottack listnix develop
cargo build
cargo test- Create
src/protocols/<name>/with a config struct, a session struct and a<Name>Plugintrait that extendsPlugin. - Implement one or more concrete plugin structs.
- Export the module from
src/protocols/mod.rs. - Register the plugins in
build_registry()insrc/bin/main.rs.
- Fabian Affolter (@fabaff)
MIT