Infrastructure Wizard Mode
Overview
EmbedXPL-Forge includes an Infrastructure Orchestrator that resolves module sets and generates scan plans based on the infrastructure type (--infra) and operational context (--context). This is the recommended entry point for OT/ICS/IT network assessments.
There are two modes:
| Mode | Invocation | Behavior |
|---|---|---|
| Direct | exf --infra ot --context ics --target 10.0.0.0/24 | Resolves and prints the module plan for the given infra/context/target combination |
| Wizard | exf --infra wizard | Interactive step-by-step menu: prompts for infra type, context, and target, then prints the plan |
Neither mode automatically runs exploit modules - the plan is presented for review, and the user selects modules interactively afterward.
Command-line flags
| Flag | Type | Required | Default | Accepted values | Description |
|---|---|---|---|---|---|
--infra | string | Yes | - | ot, it, iot, wizard | Infrastructure taxonomy type, or wizard for interactive mode |
--context | string | Conditional | "" | ics, scada, plc, hmi, dcs, bms, smart_grid, oil_gas, manufacturing, datacenter, enterprise, campus, cloud, soho | Operational context within the infra type |
--target | string | No | 127.0.0.1 | IPv4 / CIDR | Target IP or network range for the scan plan |
If --context is omitted, the orchestrator lists available contexts for the given --infra type.
Infra types and contexts
--infra | Available --context values | Description |
|---|---|---|
ot | ics, scada, plc, hmi, dcs, bms, smart_grid, oil_gas, manufacturing | Operational Technology - industrial networks |
it | datacenter, enterprise, campus, cloud | Traditional IT infrastructure |
iot | soho, smart_home, industrial_iot, medical_iot, retail_iot | Internet of Things networks |
Direct mode - --infra ot --context ics
List available contexts
$ exf --infra ot
[*] Available contexts for --infra ot:
ics
scada
plc
hmi
dcs
bms
smart_grid
oil_gas
manufacturing
Build scan plan with target
$ exf --infra ot --context ics --target 10.0.50.0/24
[*] Infrastructure scan plan - OT / ICS
Target: 10.0.50.0/24
Infra: ot
Context: ics
[*] Module plan (22 modules selected):
Protocol discovery:
scanners/ics/modbus_scanner (Modbus TCP, port 502)
scanners/ics/enip_scanner (EtherNet/IP, port 44818)
scanners/ics/cip_scanner (Common Industrial Protocol)
scanners/ics/dnp3_scanner (DNP3, port 20000)
scanners/ics/profinet_dcp_scanner (PROFINET DCP, multicast)
scanners/embedded_os/mqtt_broker_scan (MQTT, port 1883)
ICS exploit modules:
exploits/ics/siemens/s7_1200_plc_control (S7comm, port 102)
exploits/ics/siemens/s7_300_400_plc_control (S7comm, port 102)
exploits/ics/siemens/profinet_set_ip (PROFINET DCP)
exploits/ics/rockwell/compactlogix_auth_bypass_cve_2021_22681 (CIP)
exploits/ics/rockwell/compactlogix_cip_dos_cve_2024_6077
exploits/ics/rockwell/compactlogix_code_injection_cve_2022_1161
exploits/ics/schneider/modicon_modbus_control_cve_2018_7841
exploits/ics/schneider/quantum_plc_control
exploits/ics/modbus/buspwn_modbus_scanner_dos
exploits/ics/modbus/dos_write_coils
exploits/ics/modbus/dos_write_registers
exploits/ics/modbus/read_holding_registers
exploits/ics/modbus/write_single_coil
ICS credential modules:
creds/ics/siemens/ssh_default_creds
creds/ics/siemens/webinterface_http_auth_default_creds
creds/ics/rockwell/ssh_default_creds
[*] Use -m <module> -s "target 10.0.50.0/24" to run individual modules.
[*] Or launch interactive shell and type 'use <module>' to explore.
Scan plan - IT datacenter
$ exf --infra it --context datacenter --target 172.16.0.0/16
[*] Infrastructure scan plan - IT / Datacenter
Target: 172.16.0.0/16
Infra: it
Context: datacenter
[*] Module plan (31 modules selected):
Discovery:
scanners/bmc/bmc_discover (IPMI, port 623)
scanners/hypervisors/proxmox_discover (Proxmox VE, port 8006)
scanners/embedded_os/embedded_os_fingerprint
Exploit modules:
exploits/bmc/supermicro/ipmi_auth_bypass_cve_2013_4786
exploits/bmc/dell/idrac9_info_disclosure_cve_2021_36300
exploits/bmc/asus/asmb8_default_creds_ipmi
exploits/firewalls/cisco/ios_xe_webui_privesc_cve_2023_20198
exploits/firewalls/cisco/cisco_fmc_auth_bypass_rce_cve_2026_20079
exploits/appliances/f5/bigip_icontrol_rest_rce_cve_2022_1388
exploits/appliances/citrix/netscaler_rce_cve_2023_3519
... (24 more)
Scan plan - IoT SOHO
$ exf --infra iot --context soho --target 192.168.1.0/24
[*] Infrastructure scan plan - IoT / SOHO
Target: 192.168.1.0/24
Infra: iot
Context: soho
[*] Module plan (47 modules selected):
Discovery:
scanners/cameras/rtsp_discover
scanners/cameras/camera_scan
scanners/embedded_os/mdns_iot_discovery
scanners/protocols/iot/upnp_ssdp_scan
generic/upnp/ssdp_msearch
scanners/threat_detection/mirai_default_creds_sweep
Exploit modules:
exploits/cameras/hikvision/rtsp_rce_cve_2021_36260
exploits/cameras/hikvision/info_disclosure_cve_2017_7921
exploits/cameras/dahua/cctv_rce_cve_2021_36260
exploits/cameras/dahua/auth_bypass_cve_2021_33044
exploits/routers/tplink/*
exploits/routers/netgear/*
exploits/routers/asus/*
generic/upnp/igd_exploit
generic/snmp/snmp_bruteforce
... (39 more)
Wizard mode - --infra wizard
The wizard presents a numbered interactive menu for infra type and context selection, then prints the resolved module plan.
Full wizard terminal session
$ exf --infra wizard
=================================================================
EmbedXPL-Forge - Infrastructure Orchestrator Wizard
=================================================================
Select infrastructure type:
[1] ot - Operational Technology (ICS/SCADA/PLC networks)
[2] it - Information Technology (datacenter, enterprise)
[3] iot - Internet of Things (SOHO, smart home, industrial IoT)
Enter selection [1-3]: 1
Select operational context for OT:
[1] ics - Industrial Control Systems (generic)
[2] scada - Supervisory Control and Data Acquisition
[3] plc - PLC-focused environment
[4] hmi - Human Machine Interfaces
[5] dcs - Distributed Control Systems
[6] bms - Building Management Systems
[7] smart_grid - Smart Grid / Energy infrastructure
[8] oil_gas - Oil & Gas (refineries, pipelines)
[9] manufacturing - Manufacturing / factory floor
Enter selection [1-9]: 2
Enter target IP or CIDR (e.g. 10.0.0.1 or 10.0.50.0/24): 10.0.100.0/24
[*] Building scan plan for OT/SCADA, target: 10.0.100.0/24...
[*] Infrastructure scan plan - OT / SCADA
Target: 10.0.100.0/24
Infra: ot
Context: scada
[*] Module plan (26 modules selected):
SCADA protocol discovery:
scanners/ics/modbus_scanner
scanners/ics/dnp3_scanner
scanners/ics/enip_scanner
SCADA exploit modules:
exploits/ics/scada/fuxa_scheduler_rce_cve_2026_25939
exploits/ics/scada/laquis_arb_file_write_cve_2021_41579
exploits/ics/scadaflex/sc168_file_write_cve_2022_25359
exploits/ics/schneider/modicon_modbus_control_cve_2018_7841
exploits/ics/schneider/net55xx_encoder_rce_cve_2018_7784
exploits/ics/schneider/quantum_plc_control
exploits/ics/rockwell/compactlogix_auth_bypass_cve_2021_22681
exploits/ics/siemens/siprotec_relay_dos_cve_2015_5374
exploits/ics/siemens/s7_1200_plc_control
exploits/ics/osprey/pump_controller_auth_bypass_cve_2023_28648
exploits/ics/vxworks/vxworks_rpc_dos
exploits/ics/qnx/qconn_remote_exec
... (14 more)
SCADA credential modules:
creds/ics/schneider/*
creds/ics/siemens/*
creds/ics/rockwell/*
[*] Scan plan ready: 26 modules for ot/scada
[*] Use -m <module> -s "target 10.0.100.0/24" to run individual modules.
[*] Or launch interactive shell and type 'use <module>' to explore.
Wizard cancelled
$ exf --infra wizard
...
Enter selection [1-3]: ^C
[!] Wizard cancelled by user.
Error cases
Unknown infra type
$ exf --infra cloud
[!] Unknown infra type 'cloud'. Valid: ot, it, iot
No context specified
$ exf --infra ot
[*] Available contexts for --infra ot:
ics
scada
plc
hmi
dcs
bms
smart_grid
oil_gas
manufacturing
Invalid context for infra type
$ exf --infra ot --context datacenter
[!] Unknown context 'datacenter' for infra 'ot'. Valid contexts: ics, scada, plc, hmi, dcs, bms, smart_grid, oil_gas, manufacturing
InfraOrchestrator unavailable
$ exf --infra ot --context ics
[!] InfraOrchestrator unavailable: No module named 'embedxpl.core.orchestrator'
[*] Verify installation: pip install -e .[full]
Workflow: wizard to interactive shell
After reviewing the scan plan, launch the interactive shell and run modules individually:
# Step 1: Review plan
$ exf --infra ot --context ics --target 10.0.50.0/24
[*] Module plan (22 modules selected)...
# Step 2: Start interactive shell
$ exf
# Step 3: Run selected module from plan
exf > use scanners/ics/modbus_scanner
exf (Modbus Scanner) > set target 10.0.50.0/24
[+] target => 10.0.50.0/24
exf (Modbus Scanner) > run
[*] Scanning 254 hosts on Modbus TCP port 502...
[+] 10.0.50.10 - Modbus device responding (Schneider Modicon M340)
[+] 10.0.50.11 - Modbus device responding (Siemens S7-1200)
exf > use exploits/ics/siemens/s7_1200_plc_control
exf (Siemens S7-1200 PLC Control) > set target 10.0.50.11
[+] target => 10.0.50.11
exf (Siemens S7-1200 PLC Control) > run
Notes
- No auto-exploitation: The wizard and
--infra/--contextflags are read-only planning tools. They do not automatically run exploit modules. - Module ordering: Modules within a plan are ordered by severity (critical first) and discovery phase first, exploits second.
- CIDR targets: When a CIDR range is provided as
--target, the plan uses it for all scanner modules. Individual exploit modules require a single IP - usediscoveror scanner output to enumerate specific targets first.
See also: 20-ics-ot-modules.md for full ICS/OT exploit module reference.