Vous n'êtes pas identifié(e).
Pages : 1
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 . 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
Dernière modification par Hacker-Fl0w (01-09-2016 03:44:21)
Hors ligne
Intéressant ! Merci de partager !
Hors ligne
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 ?
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
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
PS: Tu as mis le tag de coloration synthaxique de Perl au lieu de Python. ([== Perl ==])
Hors ligne
Salut merci de vos réponse , la fonction count_array() je les créer car j'avais complètement oublie le "len(array)" . 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 ). Pour la colorations synthaxique j'avais pas trouver python donc j'ai mis perl
Hors ligne
Pages : 1