harsh020100/Modbus-TCP-Security-Testing-Lab
GitHub: harsh020100/Modbus-TCP-Security-Testing-Lab
一个轻量级的 Modbus TCP 工控协议实验环境,通过模拟智能路灯控制系统帮助用户学习 Modbus 协议并进行安全测试研究。
Stars: 0 | Forks: 0
# 🔐 Modbus TCP 安全测试实验环境
一个轻量级的 Modbus TCP 实验环境,专为学习、研究和受控安全测试而构建。
本仓库模拟了一个小型工业控制系统 (ICS) 环境,并提供了通过 Modbus TCP 与其交互的工具。
## 📂 仓库内容
### 智能路灯控制器.py
模拟 Modbus TCP 服务器 (PLC),带有 SCADA 风格的 HMI 界面。
### Mbap_client.py
用于读写线圈和寄存器的命令行 Modbus TCP 客户端。
### Mbap_轮询工具.py
用于持续监控的基于 GUI 的 Modbus 轮询工具。
## 🏗 项目概述
本实验环境模拟了:
- Modbus TCP 服务器 (端口 502)
- 保持寄存器 (HR)
- 线圈
- 环境光 强度传感器模拟
- 基于阈值的自动化逻辑
- 手动覆盖 功能
- SCADA 监控界面
设计用于:
- Modbus 协议学习
- ICS/OT 实验模拟
- 安全研究
- 受控渗透测试练习
## ⚙️ 环境要求
- Python
- pymodbus
- tkinter (通常随 Python 预装)
安装依赖:
```
pip install pymodbus
pip install pyserial-asyncio
```
## 🚀 如何运行
### 步骤 1:启动 Modbus 服务器 + SCADA
```
python "Smart Street Light Controller.py"
```
这将:
- 在端口 502 上启动 Modbus TCP 服务器
- 启动 SCADA HMI
- 模拟环境光传感器
### 步骤 2:运行 CLI Modbus 客户端
```
python Mbap_client.py
```
示例:
```
python Mbap_client.py 127.0.0.1
```
### 步骤 3:运行 GUI 轮询工具
```
python Mbap_Polling_Tool.py
```
然后输入:
- 目标 IP
- 端口 (默认: 502)
- 轮询频率
- 选择要监控的线圈/寄存器
### 🧠 内存映射
| 类型 | 地址 | 描述 |
|------|---------|------------------------|
| 保持寄存器 | 4 | 照度阈值 |
| 保持寄存器 | 6 | 环境光传感器 |
| 线圈 | 3 | 路灯状态 |
| 线圈 | 4 | 手动覆盖 |
### 🎯 学习目标
- 理解 Modbus TCP 通信
- 与线圈和保持寄存器交互
- 观察自动化逻辑
- 练习协议交互
- 分析 Modbus 中潜在的安全弱点
### ⚠️ 免责声明
本项目严格用于:
- 教育目的
- 安全研究
- 在受控实验环境中进行测试
在未获得适当授权的情况下,请**勿**将此代码用于针对系统的操作。
### 👨💻 作者
**Harsh Srivastava**
IoT 与 OT 安全研究\
[https://www.harshsecurity.com](https://www.harshsecurity.com/)
标签:HMI, ICS安全, impacket, Modbus TCP, OPA, OT安全, PLC模拟, pymodbus, Python, SCADA仿真, 关键基础设施, 协议分析, 工业互联网, 工业控制安全, 工控协议, 无后门, 智慧路灯控制, 权限提升, 漏洞复现, 网络安全实验环境, 蜜罐, 证书利用, 逆向工具, 靶场