user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 01-09-2016 03:36:04

Hacker-Fl0w
Membre

[Python 2] Generateur de mots de passe

Salut, je vous présente un script que j'ai créer qui permet de générer des mots de passe en fonction de mots clef smile . le bute et très simple récupérer des informations d'un utilisateur a qui on souhaite lancer une attaque par brute-force. On recupere des informations tel que le nom,prenom,date de naissance,vile, pays... , et on génère un dictionnaire avec, ce qui permet d’augmenter c'est chance de trouver le mots de passe.

le script fonctionne tes simplement : nom_du_script.py -n francois;hollande;france;paris;12081954 -t -f dictionnaire.txt

[== Perl ==]
import sys, os

version = "1.0.0 BETA"
red = '\033[31m'
reset = '\033[0m'

def help():
    print "\tdict_personnel.py [args]"
    print "\t-n prenom;nom;ville;pays.... "+red+"(Information sur l'utilisateur)"+reset
    print "\t-u "+red+"(Separe chaque mots par un '_', '-')"+reset
    print "\t-c "+red+"(Fusionne le dictionnaire et autres pour en former un !)"+reset
    print "\t-t "+red+"(Passe toute les lettres en majuscule, les debut en majuscule le reste en minuscule, et passe tout en minuscule)"+reset
    print "\t-T "+red+"(Passe une lettre dans chaque mots de passe en majuscule (ATTENTION CREER DES FICHIERS VOLUMINEUX))"+reset
    print "\t-f file.txt "+red+"(Nom du dictionnaire a creer default:dictionnaire.txt)"+reset

def search(content):
    i = 0
    n = 0
    for element in args:
        if(element == content):
            return i
            n = 2

        i = i+1

    if(n == 0):
        return "none"

def count_array(array):
    i = 0
    for c in array:
        i = i+1

    return i

def in_array(array, content):
    i = 0
    for test in array:
        if(test == content):
            i = 1
    return i
#Code
try:
    args = sys.argv[1:]
    if args:
        if(args[0] in ('-h', '--help')):
            help()
        else:
            if(search("-n") == "none"):
                print red+"Merci de definire l'argument \"-n\" (--help)"+reset
            else:
                try:
                    content = args[search("-n")+1].split(";")

                    nombredecombinaison = count_array(content)

                    #contenue du fichier text par default vide
                    tableau = []
                    nb = 0
                    max = nombredecombinaison*nombredecombinaison
                    while nb < max:
                        for code_possible in content:
                            for code_possibles in content:
                                if(in_array(tableau, code_possible+code_possibles) == 0):
                                    tableau.append(code_possible+code_possibles)
                                if(in_array(tableau, code_possibles+code_possible) == 0):
                                    tableau.append(code_possibles+code_possible)

                        nb = nb+1
                    if(search("-u") != "none"):
                        mots = args[search("-n")+1].split(";")

                        for add_separes in mots:
                            for add_separe in mots:
                                if(in_array(tableau, add_separes+"_"+add_separe) == 0):
                                    tableau.append(add_separes+"_"+add_separe)
                                if(in_array(tableau, add_separes+"-"+add_separe) == 0):
                                    tableau.append(add_separes+"-"+add_separe)
                    if(search("-t") != "none"):
                        #Mais tout en majuscule
                        for content in tableau:
                            element = content.upper()
                            if(in_array(tableau, element) == 0):
                                tableau.append(element)


                        #Mais tout en minuscule
                        for content in tableau:
                            element = content.lower()
                            if(in_array(tableau, element) == 0):
                                tableau.append(element)

                        #Mais le debut en majuscule
                        for content in tableau:
                            element = content[0].upper()+content[1:].lower()
                            if(in_array(tableau, element) == 0):
                                tableau.append(element)

                    #Passe une lettre dans chaque mots en majuscule
                    if(search("-T") != "none"):
                        #tableau video pour eviter les doublons
                        tableau_vide = []
                        for content in tableau:
                            i = 0
                            for lettre in content:
                                if(i == 0):
                                    add = lettre.upper()+content[i+1:]
                                else:
                                    add = content[0:i]+lettre.upper()+content[i+1:]

                                if(in_array(tableau_vide, add) == 0):
                                    tableau_vide.append(add)
                                i = i+1

                        for add in tableau_vide:
                            if(in_array(tableau, add) == 0):
                                tableau.append(add)

                    #Cree le dictionnaire
                    if(search("-f") == "none"):
                        name = "dictionnaire.txt"
                    else:
                        try:
                            name = args[search("-f")+1]
                        except IndexError:
                            print red+"Merci de definire l'Arguments (-f)"+reset
                            exit(1)

                    contenue = ""



                    file = open(name, 'w+')
                    for element in tableau:
                        contenue += element+"\n"

                    #Verifie si l'utilisateur shouaite fusionner un autre dictionnaire si c'est le cas on le fussione
                    if(search("-c") != "none"):
                        try:
                            file_name = args[search("-c")+1]
                            if(os.path.exists(file_name)):
                                dict = open(file_name, "r")
                                lignes = dict.readlines()
                                dict.close()

                                for ligne in lignes:
                                    contenue += ligne
                            else:
                                print red+"Le dictionnaire a fusionner n'existe pas !"+reset
                                exit(1)
                        except IndexError:
                            print red+"Merci de definire l'argument '-c'"+reset
                            exit(1)

                    if(search('-c') == "none"):
                        if(search('-t') != "none" or search('-T') != "none" or search("-u") != "none" or search('-c') != "none"):
                                print "Nombre de combinaison possible : "+str(count_array(tableau))
                        else:
                                print "Nombre de combinaison possible : "+str(nombredecombinaison*nombredecombinaison)
                    else:
                        print "Nombre de combinaison possible : "+str(count_array(tableau)+count_array(lignes))


                    print "Creation du fichier '"+os.getcwd()+"/"+name+"'"
                    contenue = contenue[0:len(contenue)-1]

                    file.write(contenue)
                except IndexError:
                    print red+"Merci de definire l'Arguments (-n)"+reset
    else:
        print red+"Merci de definire l'Arguments"+reset
except KeyboardInterrupt:
    print "Quit"
    exit(1)

Ps: Je compte rajouter d'autres options smile

Dernière modification par Hacker-Fl0w (01-09-2016 03:44:21)

Hors ligne

#2 01-09-2016 03:48:44

Checkfx
Membre

Re : [Python 2] Generateur de mots de passe

Intéressant ! Merci de partager !  smile

Hors ligne

#3 01-09-2016 10:43:35

WarLocG
#! modo de compet

Re : [Python 2] Generateur de mots de passe

A tester mais de ce que je peux lire dans ton code source, ton code peut être nettement amélioré.

Par exemple tes fonctions de recherches, tu as pas pensé a utilisé la lib re ? Egalement pour ta fonction count_array(array) => len(array), non ? wink

warlocg@linux:~$ python -c "arr=['a','b','c']; print(len(arr))"
3

Python permet l'opération += comme en C. a = a + 1 deviendrait a += 1 wink

warlocg@linux:~$ python -c "a=0; a+=1; print(a)"
1

Exemple pour ta recherche:

from sys import argv # sys.argv devient juste argv
from re import search

### exemple
for args in argv:  
  s  = search(r"^(\-[a-zA-Z])",args) # La regle de recherche tirait+caractere alphabetique minuscule et majuscule
  if s != None:
    print(" [matches] => %s ") % (s.group(1)) # Si l argument correspond a la regle, afficher un message.

print("done")

### test
# python pyTestSearch hello -t the w0rld -1 -O 
#  [matches] => -t 
#  [matches] => -O 
# done

wink

PS: Tu as mis le tag de coloration synthaxique de Perl au lieu de Python. ([== Perl ==])


Avant de poser vos questions, jeter un oeil ici
Mon CodeVault et Wiki : ici
Les messages privés envers le staff sont uniquement pour les cas d'urgence ou affaires privées (personnelles). Les demandes se feront exclusivement sur le forum. Merci de respecter cette clause sous peine de sanctions.

Hors ligne

#4 01-09-2016 12:27:39

Hacker-Fl0w
Membre

Re : [Python 2] Generateur de mots de passe

Salut merci de vos réponse smile, la fonction count_array() je les créer car j'avais complètement oublie le "len(array)"  siffle  siffle  siffle  siffle . De plus pour la lib re je ne voyer pas l'utilité pour le moment d'utiliser des expression régulier (regex). Sinon je c'est que le script peut-être nettement amélioré (En plus il pas encore fini manque 3 options smile ). Pour la colorations synthaxique j'avais pas trouver python  big_smile  big_smile  big_smile donc j'ai mis perl smile

Hors ligne

Pied de page des forums