Analizando y leyendo sobre el tema de fuerza bruta y cediendo al final como muchos cuando se entiende las limitantes para contraseñas a partir de los 8 caracteres con 10 numeros+26minusculas+26mayusculas+33caracteres especiales opto por pasar mejor a diccionarios o los conocidos wordlist
. Donde me encuentro 2 claros problemas entre muchos, la mayoría de las contraseñas contenida en los wordlist corresponde al ingles por lo que aplicarlo a contraseñas pensadas en español lo convierten en algo inútil, segundo al irnos a las innumerable fuentes de Internet la cantidad de contraseñas a manipular es tan grande como deseemos y contener gran cantidad de repetidas es algo que reduce la eficiencia aunque en estadísticas sirve para organizar por frecuencia de uso.
Por dicho motivo he decidido fragmentar y filtrar la información ya que trabajar con grandes ficheros de contraseñas q no es algo que este muy difundido en Internet o al menos no encuentro nada relacionado.
Sin dudas python es la herramienta ideal para gestionar esta big data.
Comparto parte de mi código con el objetivo que algunos de los cerebros que andan en este foro sugieran modificaciones para hacerlo mas eficiente ya que eso de un for dentro de otro y asi no creo que sea la mejor forma aunque de momento medio funciona.
Estoy claro que es algo muy básico y no hace ni la mitad de lo que debería pero de comienzo se me ocurre clasificar todo en alphanumericos, symbols para los caracteres especiales y numeros para las contraseñas de solo números.
Sin mas aqui una version muy alpha de lo que quiero
Igual lo iré mejorando ya que la idea es irle pasando wordlist y que se fragmente organizadamente para posterior uso en los diferentes programas de fuerza bruta. Evitar duplicados, poder buscar si contienen una contraseña en especifico sino agregarla etc. Como pueden ver no solo necesito mejoras de programación sino ademas mejoras de ideas para finalmente hacernos de nuestro potente wordlist.
Saludos.
![;D ;D](https://forum.elhacker.net/Smileys/navidad/grin.gif)
Por dicho motivo he decidido fragmentar y filtrar la información ya que trabajar con grandes ficheros de contraseñas q no es algo que este muy difundido en Internet o al menos no encuentro nada relacionado.
Sin dudas python es la herramienta ideal para gestionar esta big data.
Comparto parte de mi código con el objetivo que algunos de los cerebros que andan en este foro sugieran modificaciones para hacerlo mas eficiente ya que eso de un for dentro de otro y asi no creo que sea la mejor forma aunque de momento medio funciona.
Estoy claro que es algo muy básico y no hace ni la mitad de lo que debería pero de comienzo se me ocurre clasificar todo en alphanumericos, symbols para los caracteres especiales y numeros para las contraseñas de solo números.
Sin mas aqui una version muy alpha de lo que quiero
Código [Seleccionar]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
#Criterio de fragmentacion.
#0 1 2 3 4 5 6 7 8 9
#a b c d e f g h i j
#k l m n o p q r s t
#u v w x y z
#A B C D E F G H I J
#K L M N O P Q R S T
#U V W X Y Z
#! " # $ % & ' ( ) *
#+ , - . / : ; < = >
#? @ [ \ ] ^ _ ` { |
#} ~
#FIX
#\$ \' \( \) \* \+ \. \? \[ \\\\ \^ \|
char = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','!','"','#','\$','%','&','\'','\(','\)','\*','\+',',','-','\.','/',':',';','<','=','>','\?','@','\[','\\\\',']','\^','_','`','{','\|','}','~', ' ']
#Solicitud de wordlist a fragmentar segun criterio de fragmentacion.
v = raw_input('Introduce el fichero a procesar: ')
f = open(v,'r')
lineas = f.readlines()
f.close()
i=0
d=0
#Eliminar lineas en blanco en el fichero a fragmentar.
f = open(v,'w')
for linea in lineas:
if len(linea) > 1:
f.write(linea)
#Eliminar duplicado en el fichero a fragmentar.
content = open(v,'r').readlines()
content_set = set (content)
cleandata = open (v,'w')
for line in content_set:
cleandata.write(line)
cleandata.close()
f = open(v,'r')
lineas = f.readlines()
f.close()
#Clasificar en (Numeros [0-9],26 minusculas [a-z], 26 mayusculas [A-Z],Symbols 33 caracteres especiales [!- ]).
for i in range (95):
patterns = [char[i]]
for pattern in patterns:
for linea in lineas:
if re.match(pattern, linea):
if i > 36:
if i < 62:
fn = open(char[i]+'_','a')
fn.writelines(linea)
else:
f = open('Symbols','a')
f.writelines(linea)
else:
f = open(char[i],'a')
f.writelines(linea)
else:
d=d+1
Igual lo iré mejorando ya que la idea es irle pasando wordlist y que se fragmente organizadamente para posterior uso en los diferentes programas de fuerza bruta. Evitar duplicados, poder buscar si contienen una contraseña en especifico sino agregarla etc. Como pueden ver no solo necesito mejoras de programación sino ademas mejoras de ideas para finalmente hacernos de nuestro potente wordlist.
Saludos.