Editor de diccionarios de claves

Iniciado por 3n31ch, 24 Abril 2017, 02:59 AM

0 Miembros y 1 Visitante están viendo este tema.

3n31ch

Este es un script pequeño que cree con el objetivo de editar los gigantescos diccionarios de passwords que hay en la red.

Muchas veces utilizamos un diccionario de claves grande pensando que es lo mejor, pero no nos detemos a pensar que en ese diccionario hay claves como "%" y si vemos con mas detalle la mayoria de los sitios restringen las claves a un minimo 5-7 caracteres.

Por tanto es importante limitar los diccionarios a las soluciones viables de una password, es por esto que cree Dictditor: Editor de diccionarios por medio de una exprecion regular.

El uso es muy simple:

Usage: python dictditor.py [options]

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -i FILE, --input=FILE
                        Dictionary to modify
  -o PATH, --output=PATH
                        Modified dictionary.
  -r REGEX, --regex=REGEX
                        Regular expression to apply.


(En la url del final podran ver un ejemplo de su uso)

El proyecto en la actualidad lo estoy mejorando para poder reordenar el diccionario y a su vez para generar una base de datos online que permita crear diccionarios. Pero por ahora este es el codigo:

Código (python) [Seleccionar]
__version__ = "1.0"
__author__ = "3n31ch"
__website__ = "http://www.elhacker.net/"

import re
from optparse import OptionParser

def printError(error):
print "[ERROR] ", error

def dictditor(inputPath, outputPath, regex):
inputFile = open(inputPath, "r")
outputFile = open(outputPath, "w")
pattern = re.compile(regex)
for line in inputFile:
word = line.replace("\n", "")
if(pattern.match(word)):
outputFile.write(line)
inputFile.close()
outputFile.close()
return;


def main():

print "DICTDITOR - Dictionary Editor"
print "Author: ",__author__
print __website__

parser = OptionParser(usage="usage: python %prog [options]",
                          version= "%prog "+__version__ )
parser.add_option("-i", "--input",
dest="input",
help="Dictionary to modify",
metavar="FILE");
parser.add_option("-o", "--output",
dest="output",
help= 'Modified dictionary.',
metavar="PATH");
parser.add_option("-r", "--regex",
dest="regex",
help= 'Regular expression to apply.',
metavar="REGEX");

(options, args) = parser.parse_args()

if options.input and options.output and options.regex:
dictditor(options.input, options.output, options.regex)
else:
printError("All options are necessary");
parser.print_help()


if __name__ == '__main__':
main()


Link github: https://github.com/3n31ch/dictditor

Serapis

#1
mmm...está bien, pero yo no diría que es un editor, más bien diría que es un 'Extractor/Selector'... ya que mirando el código, busca un patrón y si coincide guarda la clave a un fichero nuevo, pero no edita esa misma clave, solo busca coincidencias y las copia a otro fichero aislado.
   
Citarfor line in inputFile:
      word = line.replace("\n", "")
      if(pattern.match(word)):
         outputFile.write(line)

Desde luego es útil, porque muchas veces un diccionario completo, no va a ser tan útil como uno más específico (cuando se tienen datos para poder restringirlo).

...pero vamos no es un editor, no modifica una clave existente.

3n31ch

Claro, tienes razón. Mas acorde es el nombre "extractor", pero lo seguiré mejorando y seguramente no sea ni editor ni extractor sino mas bien... creador.

(O extractor de base de datos grande en un archivo... pero es mas lindo "creador").