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, 压力测试, 无后门, 网络工程, 网络测试, 逆向工具