Skip to main content

Offensive OT/IoT Security Toolkit

Project description

OTSec — Offensive OT/IoT Security Toolkit

OTSec is a professional-grade toolkit designed for offensive security testing and auditing of OT (Operational Technology) and IoT (Internet of Things) environments. It enables red teamers, security researchers, and industrial penetration testers to interact with and assess real-world OT/ICS/IoT networks in a safe and modular manner.


🧭 Introduction

Operational Technology systems power critical infrastructure like factories, smart buildings, utilities, and transport systems. Many of these systems rely on insecure-by-design protocols and legacy devices with minimal authentication, leaving them vulnerable to attacks.

OTSec is a Python-based toolkit built to bridge the gap between offensive security needs and OT protocol understanding. It gives professionals a modular, scriptable, and extensible interface for scanning, fingerprinting, and manipulating OT/IoT protocols like Modbus, BACnet, MQTT, and more.

OTSec is suitable for:

  • Industrial penetration tests
  • Smart building assessments
  • Red team infrastructure compromise
  • Embedded system testing
  • OT/IoT protocol experimentation

🚀 Features

Feature Description
Device Discovery Perform fast discovery of OT/IoT devices using active fingerprinting
Protocol Detection Identify exposed services and protocols (Modbus, MQTT, BACnet, RTSP, etc.)
Vulnerability Mapping Match banners with known CVEs or risky patterns
Packet Injection Send custom Modbus packets to simulate attacks (lab safe only)
Auth & Config Checks Discover default credentials and legacy services
Interactive Shell Use the OTSec command shell for quick commands & module chaining
YAML-Based DB Customizable vulnerability and protocol hints DB
Screenshot Friendly Color-coded output and banners for clear visual representation

📦 Installation

Recommended (Simple Usage)

git clone https://github.com/omar-tamerr/OTSec
cd OTSec
pip install -r requirements.txt
python3 run_otsec.py shell

✅ No virtual environment needed — just install requirements and start the tool.


🔧 Usage

Start the Shell

python3 run_otsec.py shell

Run a Safe Scan

python3 run_otsec.py scan 192.168.1.0/24 --safe

Read Modbus Registers

python3 run_otsec.py modbus-read --host 192.168.1.50 --start 0 --count 5

Inject Modbus Command (lab use only)

python3 run_otsec.py inject --host 192.168.1.50 --function write_single_register --address 1 --value 1234

🖼️ Screenshots (With Descriptions)

1. Interactive Shell Launch

Shell Launch
The entry point into the interactive mode of OTSec. Commands like scan, inject, or modbus-read can be typed here.

2. Help Page

Help Page
Full command help with descriptions and parameters.

3. Modbus Read

Modbus Read
Reads Modbus holding registers from an OT device.

4. Inject Modbus (Lab Safe)

Inject Modbus
Sends custom Modbus write operations (safe in lab only).

5. Safe Scan

Safe Scan
Performs TCP banner grabbing to identify OT/IoT protocols safely.

6. Vulnerability Scan

Vuln Scan
Matches banners with known CVEs and weak configurations.

7. Info Pages

Info Page 1
Quick protocol hints and threat intelligence built into the shell.


📁 Directory Structure

src/
├── otsec/
│   ├── cli.py            # CLI entry point
│   ├── core/             # Scanning, injection, shell modules
│   ├── data/vulns.yaml   # Fingerprints and CVEs
│   └── img/              # Screenshots and documentation visuals
run_otsec.py              # Unified entry point script
requirements.txt          # Required packages

📄 License

All rights reserved © Omar Tamer
This software is intended for authorized testing, training, and research only.


🌐 Author

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

otsec-0.1.1.tar.gz (22.4 kB view details)

Uploaded Source

Built Distribution

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

otsec-0.1.1-py3-none-any.whl (23.7 kB view details)

Uploaded Python 3

File details

Details for the file otsec-0.1.1.tar.gz.

File metadata

  • Download URL: otsec-0.1.1.tar.gz
  • Upload date:
  • Size: 22.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for otsec-0.1.1.tar.gz
Algorithm Hash digest
SHA256 52bd6383d24cfbdb05ef2115d95a24d012215e787c0c8b75d39e16d4cf35b04e
MD5 7cdc723023ec96c85d163f10ebf02773
BLAKE2b-256 8410b3e8a6cca8fb42b05931be017a5699e79537b7d0203b23135335a92bda1b

See more details on using hashes here.

File details

Details for the file otsec-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: otsec-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 23.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for otsec-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 06a438cfd5da45508379364061176549b8162b676ccb7db3697c55f167878595
MD5 a3bba6830cdb0685dda288aef63cf853
BLAKE2b-256 259c97c2a398bf318c220490d7ac342e640cf1a23ed57d487dda42d9ef0bd569

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