Skip to main content

IndustrialXPL-Forge (IXF) — OT/ICS/SCADA/HMI/IIoT Security Assessment & Exploitation Framework. Python-First, 681+ modules, 79 MITRE ATT&CK for ICS techniques, 26 ICS malware TTPs, 50+ vendors, 50+ protocols.

Project description

IndustrialXPL-Forge (IXF)

The World's Largest OT/ICS/SCADA Security Assessment & Exploitation Framework Part of the XPL-Forge suite | Author: André Henrique (@mrhenrike) | União Geek

Python-First — no Metasploit required. No msfconsole. No Ruby. Just Python.


Quick Start

pip install industrialxpl
ixf

Or from source:

git clone https://github.com/mrhenrike/IndustrialXPL-Forge
cd IndustrialXPL-Forge
pip install -r requirements.txt
python ixf.py

What is IXF?

IndustrialXPL-Forge is a modular, Python-native security assessment and exploitation framework for Operational Technology (OT), Industrial Control Systems (ICS), SCADA, HMI, PLC, RTU, DCS, and IIoT environments.

It covers the complete attack lifecycle:

OSINT → Discovery → Fingerprint → Vulnerability Check → Exploit → Report

Key features:

  • Python-First: all core functionality works with pip install industrialxpl — no Metasploit, no msfconsole, no Java, no Ruby required
  • SafeMode by default: every module runs in simulate mode — prints payload without sending
  • MITRE ATT&CK for ICS v19: 79 techniques mapped, ttp T0843 192.168.1.100 syntax
  • CVE coverage: 3,300+ ICS/OT CVEs from CVSS 0.1 to 10.0
  • 50 vendors: Siemens, Schneider, Rockwell, ABB, Honeywell, Emerson, WEG, and more
  • 50 protocols: Modbus, S7comm, EtherNet/IP, DNP3, BACnet, IEC-104, OPC UA, PROFINET, and more

Module Catalog

Category Modules Description
exploits/protocols/ ~50 Modbus, S7, ENIP, DNP3, BACnet, Profinet, IEC104, OPC UA
exploits/plc/ ~80 Siemens, Schneider, Rockwell, GE, Beckhoff, Unitronics, ABB
exploits/scada/ ~60 IGSS, RealWin, Genesis32, CoDeSys, FUXA, CitectSCADA
exploits/mes/ ~25 Ignition, ThinManager, SIMATIC Historian, DELMIA Apriso
scanners/ics/ ~50 Protocol-specific discovery (Modbus, S7, BACnet, DNP3...)
scanners/osint/ ~8 Shodan queries, ELITEWOLF web dorks, OT Hunt
creds/ ~55 Default credentials for 50+ OT/ICS vendors
cve/ 3,300+ All CVE severity levels (CVSS 0.1-10.0), 3 implementation tiers
cve/apt/ ~10 APT malware TTPs: FrostyGoop, Industroyer2, TRITON, INCONTROLLER
assessment/ ~25 IEC 62443, NIST 800-82r3, MITRE ICS, risk scoring, IR playbook

Usage Examples

# Open the IXF interactive shell
ixf

# Load and run a module (simulate mode by default — safe)
ixf > use scanners/ics/modbus_detect
ixf > set target 192.168.1.100
ixf > check

# Search for modules
ixf > search siemens
ixf > search CVE-2015-5374
ixf > search modbus

# Execute a TTP-ID against a target
ixf > ttp T0843 192.168.1.100          # Program Download — all modules
ixf > ttp T0878 10.0.0.0/24            # Alarm Suppression — subnet sweep
ixf > ttp-list --tactic evasion        # List all Evasion TTP-IDs

# MITRE ATT&CK for ICS sweep
ixf > mitre-scan discovery 192.168.1.0/24
ixf > mitre-scan evasion 192.168.1.100
ixf > mitre-all 192.168.1.100          # All 79 techniques (simulate by default)
ixf > mitre-coverage                   # Show coverage % per tactic

# CVE-specific modules
ixf > cve CVE-2026-25895               # FUXA SCADA pre-auth RCE
ixf > cve CVE-2015-5374               # Siemens SIPROTEC4 DoS
ixf > cve-scan 192.168.1.0/24         # Discover assets + test all CVEs

# Generate reports
ixf > report json
ixf > mitre-report layer               # ATT&CK Navigator JSON layer

SafeMode / DestructiveMode

Every module defaults to simulate mode — it prints what it WOULD do without sending any packets.

ixf (FrostyGoop) > run                 # SIMULATE: prints payload, no send
ixf (FrostyGoop) > set simulate false
ixf (FrostyGoop) > set destructive true
ixf (FrostyGoop) > run                 # LIVE: shows banner + requires confirmation

Impact levels require proportional confirmation:

  • INFO/READ: automatic
  • LOW: simple warning
  • MEDIUM: press Enter
  • HIGH: type yes
  • CRITICAL: type the full confirmation string
  • CATASTROPHIC: type string + wait 10 seconds

All destructive operations are logged to .log/destructive_ops_YYYY-MM-DD.log.


Python-First Policy

Tier Type Examples Required?
0 Python stdlib socket, struct, select Always
1 pip install pymodbus, scapy, rich, requests Yes
2 pip extras asyncua, cpppo, python-can Optional
3 External runtimes ruby, node, java, gcc, go Optional — Python fallback always available

No Metasploit installation required. All 64 MSF SCADA modules are ported to Python native.


Legal Disclaimer

This tool is intended for authorized security testing, research, and educational purposes only.

Using IndustrialXPL-Forge against systems you do not own or do not have explicit written authorization to test is illegal and may violate computer fraud laws in your jurisdiction.

OT/ICS systems control critical physical infrastructure. Unauthorized use may cause:

  • Physical damage to industrial equipment
  • Disruption of essential services (power, water, gas, manufacturing)
  • Personal injury or death
  • Significant legal penalties

The authors and União Geek assume no liability for misuse. Users bear full legal and ethical responsibility for all actions performed with this tool.


Author & Credits

Author: André Henrique (@mrhenrike) | União Geek

Module sources: EmbedXPL-Forge (suite sibling), ISF/ICSSploit, ModBusSploit, Metasploit SCADA modules (ported to Python), n-days-poc-benchmark, InduGuard, ZeronTek OT Hunt research, CISA ICS-CERT advisories, Vedere Labs OT:ICEFALL.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

industrialxpl_forge-1.0.2.tar.gz (530.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

industrialxpl_forge-1.0.2-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

File details

Details for the file industrialxpl_forge-1.0.2.tar.gz.

File metadata

  • Download URL: industrialxpl_forge-1.0.2.tar.gz
  • Upload date:
  • Size: 530.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for industrialxpl_forge-1.0.2.tar.gz
Algorithm Hash digest
SHA256 f04d2b54d2bc4feb5ef2a914185036c976562e6c5d8b1933a4cced9b8e335b78
MD5 9275e90f8fa8c2b647edf7eebcd20cab
BLAKE2b-256 f67073e700658718a8dbb95361234c28b5c9f1e612b649fcbba00a04f7039632

See more details on using hashes here.

File details

Details for the file industrialxpl_forge-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for industrialxpl_forge-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a3e7541dc41a22aeaabba96c88a979b111a9d9d3628c1389561da24a98eeba4e
MD5 17e87d32cab4f2493a826dc5820b075f
BLAKE2b-256 4cc54e51724915b770919a8c6ff293f1a97b25c82c6bb93d4a649819049e2409

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page