Files

hackwifi.src
  • import_code("/usr/src/lib/color.src")
  • import_code("/usr/src/lib/deps.src")
  • initdb = function(filepath)
  • // get wifi device name
  • netdev = get_shell.host_computer.network_devices.split(" ")[0]
  • globals.netdev = netdev
  • // scan networks
  • networks = {}
  • for network in get_shell.host_computer.wifi_networks(netdev)
  • networks[network.split(" ")[2]] = {}
  • networks[network.split(" ")[2]].bssid = {}
  • networks[network.split(" ")[2]].power = {}
  • networks[network.split(" ")[2]].bssid = network.split(" ")[0]
  • networks[network.split(" ")[2]].power = network.split(" ")[1]
  • end for
  • globals.networks = networks
  • // create database file if not exist
  • filepath = filepath.split("/")
  • file = get_shell.host_computer.File(filepath.join("/"))
  • if typeof(file) == "null" then
  • filename = filepath.pop
  • dir = []
  • for folder in filepath
  • dir.push(folder)
  • get_shell.host_computer.create_folder(dir.join("/").remove(dir[-1]),dir[-1])
  • end for
  • get_shell.host_computer.touch(dir.join("/"),filename)
  • file = get_shell.host_computer.File(dir.join("/")+"/"+filename)
  • // init database content
  • for essid in networks.indexes
  • if file.get_content == "" then
  • file.set_content(essid+":")
  • else if file.get_content != "" then
  • getfile = file.get_content
  • file.set_content(getfile+char(10)+essid+":")
  • end if
  • end for
  • end if
  • end function
  • checkdb = function(filepath,essid)
  • file = get_shell.host_computer.File(filepath)
  • db = file.get_content.split(char(10))
  • for line in db
  • if line.split(":")[0] == essid and line.split(":")[1] == "" then
  • print("<color=yellow>[INFO] No PW for "+line.split(":")[0]+"</color>")
  • return 0
  • break
  • end if
  • if line.split(":")[0] == essid and line.split(":")[1] != "" then
  • print("<color=yellow>[INFO] PW exists: "+line+"</color>")
  • return 1
  • break
  • end if
  • end for
  • end function
  • upddb = function(filepath)
  • file = get_shell.host_computer.File(filepath)
  • db = file.get_content.split(char(10))
  • obj = {}
  • for line in db
  • obj[line.split(":")[0]] = {}
  • // check password is there
  • if line.split(":")[1] != "" then
  • obj[line.split(":")[0]] = line.split(":")[1]
  • end if
  • // if not there check essid and include
  • if line.split(":")[1] == "" and line.split(":")[0] == essid then
  • obj[line.split(":")[0]] = password
  • end if
  • end for
  • newdb = []
  • for index in obj.indexes
  • if obj[index] == "" then
  • newdb.push(index+":")
  • end if
  • if obj[index] != "" then
  • newdb.push(index+":"+obj[index])
  • end if
  • end for
  • file.set_content(newdb.join(char(10)))
  • end function
  • connects = function()
  • file = get_shell.host_computer.File(filepath)
  • db = file.get_content.split(char(10))
  • obj = {}
  • for line in db
  • obj[line.split(":")[0]] = {}
  • obj[line.split(":")[0]] = line.split(":")[1]
  • end for
  • list = []
  • for x in obj.indexes
  • list.push(x)
  • end for
  • list.shuffle
  • print("Connecting to <color=yellow>"+list[0]+"</color>")
  • get_shell.host_computer.connect_wifi(netdev,networks[list[0]].bssid,list[0],obj[list[0]])
  • end function
  • libraries = libs([current_path,"/lib"],["crypto.so","metaxploit.so"])
  • CrypTools = libraries["cryptoLib"]
  • filepath = home_dir+"/"+"Config"+"/"+"Wifi.txt"
  • initdb(filepath)
  • for essid in networks.indexes
  • if checkdb(filepath,essid) then continue
  • acks = round(300000/networks[essid].power.remove("%").to_int,0)+1
  • print("<color=yellow>[INFO] "+essid+" -> "+acks+" ACKs</color>")
  • CrypTools.airmon("start",netdev)
  • CrypTools.aireplay(networks[essid].bssid,essid,acks)
  • CrypTools.airmon("stop",netdev)
  • filecap = get_shell.host_computer.File(parent_path(program_path)+"/"+"file.cap")
  • password = CrypTools.aircrack(filecap.path)
  • upddb(filepath)
  • print("<color=yellow>[INFO] "+essid+":"+password+"</color>")
  • end for
  • connects()
lib/deps.src
  • libs = function(dirs,names)
  • obj = {}
  • for name in names
  • for dir in dirs
  • file = get_shell.host_computer.File(dir+"/"+name)
  • if typeof(file) != "null" then
  • if file.has_permission("r") then
  • if file.is_binary then
  • print(msg(file,"info"))
  • obj.push( typeof( include_lib(file.path) ) )
  • obj[typeof( include_lib(file.path) )] = include_lib(file.path)
  • break
  • end if
  • if not file.is_binary then print(msg(file,"warn","binary"))
  • end if
  • if not file.has_permission("r") then print(msg(file,"warn","read"))
  • end if
  • if typeof(file) == "null" then print(msg(dir+"/"+name,"warn","notfound"))
  • end for
  • end for
  • return obj
  • end function
  • // Example:
  • // import_code("/usr/src/lib/color.src")
  • // libs(["path1","path2"],["libname1.so","libname2.so"])
  • //libs([current_path,"/lib"],["crypto.so","metaxploit.so"])
lib/color.src
  • msg = function(file,type,error)
  • tocolor = function(color)
  • return "<color="+color+">"+self.str+"</color>"
  • end function
  • convert = function(text)
  • obj = {}
  • obj.str = str(text)
  • obj.tocolor = @tocolor
  • return obj
  • end function
  • if type == "warn" then
  • color = "red"
  • if error == "binary" then
  • msg = "[WARN] "+file.path+" is not a binary."
  • else if error == "read" then
  • msg = "[WARN] "+file.path+" has no read permissions."
  • else if error == "notfound" then
  • msg = "[WARN] "+file+" does not exist."
  • else if error == "nocontent" then
  • msg = "[WARN] "+file.path+" has no content."
  • end if
  • else if type == "info" then
  • color = "yellow"
  • msg = "[INFO] Loaded "+file.path
  • end if
  • return convert(msg).tocolor(color)
  • end function
  • // Example:
  • // msg("string").tocolor("yellow")
z3r0wifi.src
  • // When copying this script you agree to these terms:
  • // You are not allowed to modify or/and share it as long as you didn't change the author.
  • // There is no warranty, use it on your own risk.
  • // You will not ask me for support.
  • // If you break the terms, I will find you and ruin you life. Promised.
  • author = "unz3r0"
  • banner = function(bg,fg)
  • print(char(10))
  • lines = ["'########::'#######::'########::::'#####:::'##:::::'##:'####:'########:'####:","..... ##::'##.... ##: ##.... ##::'##.. ##:: ##:'##: ##:. ##:: ##.....::. ##::",":::: ##:::..::::: ##: ##:::: ##:'##:::: ##: ##: ##: ##:: ##:: ##:::::::: ##::","::: ##:::::'#######:: ########:: ##:::: ##: ##: ##: ##:: ##:: ######:::: ##::",":: ##::::::...... ##: ##.. ##::: ##:::: ##: ##: ##: ##:: ##:: ##...::::: ##::",": ##::::::'##:::: ##: ##::. ##::. ##:: ##:: ##: ##: ##:: ##:: ##:::::::: ##::"," ########:. #######:: ##:::. ##::. #####:::. ###. ###::'####: ##:::::::'####:","........:::.......:::..:::::..::::.....:::::...::...:::....::..::::::::....::"]
  • for line in lines
  • print(char(32)*5+line.replace("#","<color="+fg+">#</color>").replace(":","<color="+bg+">:</color>").replace(".","<color="+bg+">.</color>").replace("'","<color="+bg+">'</color>") )
  • wait(0.1)
  • end for
  • print(char(32)*62+"<color=#FC766AFF>v1.0.1 - ©"+author+"</color>")
  • print(char(10) * 1.5)
  • end function
  • tocolor = function(color)
  • return "<color="+color+">"+self.str+"</color>"
  • end function
  • convert = function(text)
  • obj = {}
  • obj.str = str(text)
  • obj.tocolor = @tocolor
  • return obj
  • end function
  • debug = function(msg)
  • if params.len == 1 and params[0] == "-d" then
  • date = current_date.split(" ")[0]
  • time = current_date.split(" ")[2]
  • print( convert("[DEBUG] "+date+"+"+time+" - "+msg).tocolor("purple") )
  • end if
  • end function
  • libs = function(dirs,names)
  • obj = {}
  • for name in names
  • for dir in dirs
  • file = get_shell.host_computer.File(dir+"/"+name)
  • if typeof(file) != "null" then
  • if file.has_permission("r") then
  • if file.is_binary then
  • debug("Loaded "+file.path)
  • obj.push( typeof( include_lib(file.path) ) )
  • obj[typeof( include_lib(file.path) )] = include_lib(file.path)
  • break
  • end if
  • if not file.is_binary then
  • debug(file.path+" is not a binary.")
  • end if
  • end if
  • if not file.has_permission("r") then
  • debug(file.path+" has no read permissions.")
  • end if
  • end if
  • if typeof(file) == "null" then
  • debug(dir+"/"+name+" does not exist.")
  • end if
  • end for
  • end for
  • return obj
  • end function
  • initdb = function(filepath)
  • // get wifi device name
  • netdev = get_shell.host_computer.network_devices.split(" ")[0]
  • globals.netdev = netdev
  • // scan networks
  • networks = {}
  • for network in get_shell.host_computer.wifi_networks(netdev)
  • networks[network.split(" ")[2]] = {}
  • networks[network.split(" ")[2]].bssid = {}
  • networks[network.split(" ")[2]].power = {}
  • networks[network.split(" ")[2]].bssid = network.split(" ")[0]
  • networks[network.split(" ")[2]].power = network.split(" ")[1]
  • end for
  • globals.networks = networks
  • debug("netdev => "+netdev)
  • for m in networks.indexes
  • debug(m+" "+networks[m].bssid+" "+networks[m].power)
  • end for
  • debug("DB => "+filepath)
  • // create database file if not exist
  • filepath = filepath.split("/")
  • file = get_shell.host_computer.File(filepath.join("/"))
  • if typeof(file) == "null" then
  • filename = filepath.pop
  • dir = []
  • for folder in filepath
  • dir.push(folder)
  • get_shell.host_computer.create_folder(dir.join("/").remove(dir[-1]),dir[-1])
  • end for
  • get_shell.host_computer.touch(dir.join("/"),filename)
  • file = get_shell.host_computer.File(dir.join("/")+"/"+filename)
  • // init database content
  • for essid in networks.indexes
  • if file.get_content == "" then
  • file.set_content(essid+":")
  • else if file.get_content != "" then
  • getfile = file.get_content
  • file.set_content(getfile+char(10)+essid+":")
  • end if
  • end for
  • end if
  • end function
  • ckdb = function(filepath,essid)
  • file = get_shell.host_computer.File(filepath)
  • db = file.get_content.split(char(10))
  • for line in db
  • if line.split(":")[0] == essid and line.split(":")[1] == "" then
  • print("<color=yellow>[INFO] Password for "+line.split(":")[0]+"</color>")
  • return 0
  • break
  • end if
  • if line.split(":")[0] == essid and line.split(":")[1] != "" then
  • print("<color=yellow>[INFO] Password for "+line.split(":")[0]+" is known: </color>"+"<color=red>["+line.split(":")[1]+"]</color>")
  • return 1
  • break
  • end if
  • end for
  • end function
  • upddb = function(filepath)
  • file = get_shell.host_computer.File(filepath)
  • db = file.get_content.split(char(10))
  • obj = {}
  • for line in db
  • obj[line.split(":")[0]] = {}
  • // check password is there
  • if line.split(":")[1] != "" then
  • obj[line.split(":")[0]] = line.split(":")[1]
  • end if
  • // if not there check essid and include
  • if line.split(":")[1] == "" and line.split(":")[0] == essid then
  • obj[line.split(":")[0]] = password
  • end if
  • end for
  • newdb = []
  • for index in obj.indexes
  • if not obj[index] then
  • newdb.push(index+":")
  • debug("not "+newdb)
  • end if
  • if obj[index] then
  • newdb.push(index+":"+obj[index])
  • debug("has "+newdb)
  • end if
  • end for
  • file.set_content(newdb.join(char(10)))
  • end function
  • ShuffleConnect = function()
  • file = get_shell.host_computer.File(filepath)
  • db = file.get_content.split(char(10))
  • obj = {}
  • for line in db
  • obj[line.split(":")[0]] = {}
  • obj[line.split(":")[0]] = line.split(":")[1]
  • end for
  • list = []
  • for x in obj.indexes
  • list.push(x)
  • end for
  • list.shuffle
  • print("Connecting to <color=yellow>"+list[0]+"</color>")
  • get_shell.host_computer.connect_wifi(netdev,networks[list[0]].bssid,list[0],obj[list[0]])
  • end function
  • banner("#00A4CCFF","#F95700FF")
  • libraries = libs([current_path,parent_path(launch_path),"/lib"],["crypto.so"])
  • CrypTools = libraries["cryptoLib"]
  • filepath = home_dir+"/"+"Config"+"/"+"Wifi.txt"
  • initdb(filepath)
  • for essid in networks.indexes
  • if ckdb(filepath,essid) then continue
  • print("<color=yellow>[INFO] Hacking "+essid+"</color>")
  • acks = round(300000/networks[essid].power.remove("%").to_int,0)+1
  • print("<color=yellow>[INFO] "+essid+" needs at least "+acks+" ACKs</color>")
  • CrypTools.airmon("start",netdev)
  • CrypTools.aireplay(networks[essid].bssid,essid,acks)
  • CrypTools.airmon("stop",netdev)
  • filecap = get_shell.host_computer.File(parent_path(launch_path)+"/"+"file.cap")
  • password = CrypTools.aircrack(filecap.path)
  • upddb(filepath)
  • print("<color=yellow>[INFO] "+essid+":"+password+"</color>")
  • end for
  • ShuffleConnect()