subrat243/DeAuth
GitHub: subrat243/DeAuth
一款基于 Scapy 的 Python 网络压力测试工具,通过生成多协议原始数据包来测试网络和设备的弹性与抗压能力。
Stars: 0 | Forks: 0
# 网络压力测试工具
## 目录
* [概述](#overview)
* [功能](#features)
* [前置条件](#prerequisites)
* [安装说明](#installation)
* [用法](#usage)
* [交互模式](#interactive-mode)
* [命令行模式](#command-line-mode)
* [预定义场景](#predefined-scenarios)
* [示例](#examples)
* [输出与日志](#output--logging)
* [速率控制与实现说明](#rate-control--implementation-notes)
* [道德与法律考量](#ethical--legal-considerations)
* [故障排除](#troubleshooting)
* [日志输出示例](#example-log-output)
* [未来改进](#future-improvements)
* [许可证](#license)
* [联系方式](#contact)
## 概述
**网络压力测试工具** 是一个使用 **Scapy** 来构建和发送数据包以进行压力和弹性测试的 Python 工具。它支持交互模式和 CLI 模式、多种协议、速率控制(令牌桶)、多线程、实时监控和日志记录。
## 功能
* 多协议支持:**TCP**、**UDP**、**ICMP**、**DNS** 和 **raw** 数据包。
* 预定义测试场景:
* SYN Flood (TCP)
* UDP Flood
* ICMP Flood (Ping)
* HTTP 负载测试
* DNS 压力测试
* 混合协议 Flood (TCP + UDP + ICMP)
* 可自定义参数:目标、端口、协议、持续时间、数据包速率、线程数、payload 大小。
* 采用令牌桶速率控制,实现精确的 PPS(每秒数据包数)。
* 多线程发送以实现更高的吞吐量。
* 实时监控:已发送数据包、当前速率、已用时间。
* 日志记录:`network_tester.log` 存储测试元数据和错误。
* 输入验证及明确的道德警告。
## 前置条件
* **Python 3.6+**
python3 --version
* **Scapy**
pip install scapy
* **Root 权限**(raw socket / 数据包构造需要):使用 `sudo` 运行。
* **可选:** 用于高速 `sendpfast` 的 `tcpreplay`(Debian/Ubuntu 示例):
sudo apt-get install tcpreplay
## 安装说明
1. 将脚本保存为 `network_tester.py`。
2. 赋予执行权限(可选):
chmod +x network_tester.py
3. 发送 raw 数据包时使用 `sudo` 运行:
sudo python3 network_tester.py
## 用法
### 交互模式
不带参数运行以打开菜单驱动的界面:
```
sudo python3 network_tester.py
```
菜单选项通常包括:
* 快速测试(最少必要输入)
* 高级测试(选择预定义场景)
* 自定义测试(完整参数控制)
* 停止测试
* 退出
### 命令行模式
直接从 CLI 运行测试:
```
sudo python3 network_tester.py [target] [options]
```
**命令行选项**
```
target: Target IP address or hostname (required for CLI mode)
-p, --port Target port (defaults to protocol-specific)
-t, --protocol Protocol: tcp | udp | icmp | dns | raw (default: tcp)
-d, --duration Duration in seconds (default: 10)
-r, --rate Packets per second (default: 100)
-n, --threads Number of threads (default: 3)
-s, --size Payload size in bytes (default: 64)
-a, --advanced Run predefined scenario: syn-flood, udp-flood, icmp-flood,
http-load, dns-test, mixed-flood
--json Output results in JSON format
--html Generate an HTML report
-o, --output Output filename prefix (for reports/logs)
```
### 预定义场景(除非覆盖,否则使用默认值)
* `syn-flood` — TCP SYN flood(默认示例:**5000 pps**,**60s**)
* `udp-flood` — UDP flood
* `icmp-flood` — ICMP ping flood
* `http-load` — 模拟大量 HTTP 请求(需要 HTTP payload/method)
* `dns-test` — 针对 53 端口的 DNS 查询压力测试
* `mixed-flood` — 混合 TCP/UDP/ICMP(默认示例:**3000 pps**,**60s**)
### 示例
运行 SYN Flood:
```
sudo python3 network_tester.py 192.168.1.1 -a syn-flood
# 以 5000 pps 运行 TCP SYN flood 持续 60 秒(默认)
```
自定义 DNS 测试:
```
sudo python3 network_tester.py 192.168.1.1 -p 53 -t dns -d 60 -r 1000 -n 5 -s 128
# DNS packets 发送至 port 53,1000 pps,60s,5 个线程,128B payload
```
混合协议 flood:
```
sudo python3 network_tester.py 192.168.1.1 -a mixed-flood
# 以 3000 pps 混合运行 TCP/UDP/ICMP 持续 60s(默认)
```
## 输出与日志
* **控制台**:实时进度(已发送数据包、瞬时/平均速率、已用时间)。
* **日志文件**:`network_tester.log` — 记录测试配置、开始/停止时间、总计和错误。
* **报告**:可选的 JSON 或 HTML 报告生成(如果提供了相应的 flag)。
## 速率控制与实现说明
* 使用 **令牌桶** 算法来精确控制跨线程的数据包发送速率。
* 线程从共享的令牌桶中获取令牌;令牌补充与设定的 PPS 对齐。
* 高数据包速率可能会受到 CPU 或 NIC 的限制;对于非常高的吞吐量和基于 pcap 的重放,请考虑使用 `tcpreplay`/`sendpfast`。
* 多线程会增加吞吐量,但也会增加主机负载——在测试期间请监控 CPU 和 NIC 的使用率。
## 道德与法律考量
**使用前必读:**
* **仅供授权使用。** 仅在您拥有或获得书面测试许可的网络/设备上运行测试。
* 未经授权的测试可能会导致服务中断,并使您面临法律诉讼(例如美国的 CFAA 或当地的同等法律)。
* 开发/测试时优先选择受控的实验室或 VM 环境。
* 获取利益相关者的书面许可,并合理安排测试时间以尽量减少影响。
## 故障排除
**Root 权限错误**
* 确保您使用 `sudo` 运行脚本:
sudo python3 network_tester.py
**找不到 Scapy**
* 安装 Scapy:
pip install scapy
* 测试导入:
python3 -c "import scapy; print(scapy.__version__)"
**无效的 IP/主机名**
* 验证目标是否可达且可解析:
ping -c 3 example.com
**CPU 使用率过高**
* 降低 `-r`(速率)或 `-n`(线程数)。使用 `htop`/`top` 监控 CPU。如果速率极高,请考虑使用 `tcpreplay`。
**权限 / 防火墙问题**
* 确保本地防火墙或 IDS/IPS 不会阻止构造的数据包。请在实验室环境中运行,以免对生产环境造成破坏。
## 日志输出示例
```
2025-09-28 18:30:45,123 - INFO - Starting TCP test to 192.168.1.1:80, Duration: 60s, Rate: 5000 pps, Threads: 3, Payload size: 64 bytes
2025-09-28 18:31:45,456 - INFO - Test completed. Sent 299850 packets, Average rate: 4997.5 pps, Duration: 60.02s
```
## 未来改进
* 添加 **数据包捕获** 并自动分析目标响应(pcap + 分析)。
* 图形化可视化:随时间变化的数据包速率、CPU/NIC 使用率图表。
* 集成 `sendpfast` + `tcpreplay` 进行批量发送,以实现极致的吞吐量。
* 支持更多应用层协议和更真实的流量(例如,带有 TLS 的完整 HTTP(S) 事务)。
* 分布式测试模式(协同客户端)以及集中化的结果汇总。
## 许可证
按“原样”提供,无任何担保。使用需谨慎,风险自负。本项目基于 MIT 许可证授权。详情请参阅 [LICENSE](LICENSE)。
## 联系方式
如果您发现 bug、有建议或想要做出贡献,请提交 issue 或联系项目仓库中列出的开发者。
### 温馨提示
**在测试目标之前,请务必获得书面许可。** 未经授权的测试可能会带来严重的法律和道德后果。
标签:ASM汇编, Python, Scapy, 压力测试, 无后门, 网络工程, 网络测试, 逆向工具