BF47 Brute Force Generator

Rédigé par BeHuman Aucun commentaire
Classé dans : Python, Hack Mots clés : aucun

BF47 est générateur de dictionnaire pour attaque en force brute, l'algorithme est franchement simple à  mettre en place

$ ./bf47 -m "azerty123" "$HOME/dico.txt"

 

 

$ ./bf47 -h 
BF47 Brute Force Generator 
GNU/GPL v3 
BF47 to generate a dictionary to your brute force attacks 
Create by Be Human (human_be@rocketmail.com) 

Options: 
     Help: bf47 -h or --help 
     Functions: 
            letters: bf47 -l or --letters [number] [file] 
            digits: bf47 -d or --digits [number] [file] 
            letters and digits: bf47 -ld [number] [file] 
            punctuation: bf47 -p or --punctuation [number] [file] 
            all : bf47 -a or --all [number] [file] 
            manual : bf47 -m or --manual [number] [file] [strings]
#!/usr/bin/env python 
#-*- coding:utf-8 -*- 

import string, sys, os 

intro="""BF47 Brute Force Generator 
GNU/GPL v3 
BF47 to generate a dictionary to your brute force attacks 
Create by Be Human (human_be@rocketmail.com)""" 

def start(): 
    cnt=0 
    maxlen=int(sys.argv[2])+1 
    out=open(sys.argv[3], 'w') 
    for a in range(maxlen): 
        allkey('',a, cnt,out) 
    out.close() 

def allkey(chaine,maxlen,cnt,out): 
    if len(chaine) < maxlen: 
        for b in range(len(dico)): 
            allkey(chaine+dico[b], maxlen,cnt,out) 
    else: 
        if len(chaine) == maxlen: 
            pOut(chaine,cnt,out) 

def pOut(chaine,cnt,out): 
    cnt+=1 
    ochaine=chaine+"\n" 
    out.write(ochaine.encode('utf8')) 
    tailout='%s' % os.path.getsize(sys.argv[3]) 
    print tailout+' => '+chaine 

def help(): 
    print(intro+"""\n\nOptions: 
     Help: bf47 -h or --help 
     Functions: 
            letters: bf47 -l or --letters [number] [file] 
            digits: bf47 -d or --digits [number] [file] 
            letters and digits: bf47 -ld [number] [file] 
            punctuation: bf47 -p or --punctuation [number] [file] 
            all : bf47 -a or --all [number] [file] 
            manual : bf47 -m or --manual [number] [file] [strings]\n""") 

if (len(sys.argv) < 4): 
    if (len(sys.argv) < 2): 
        print("\n[!]Mauvais nombre d\'arguments[!]\n") 
        help() 
    else: 
        if sys.argv[1] == "-h" or sys.argv[1] == "--help": 
            help() 
        else: 
            print("\n[!]Mauvais nombre d\'arguments[!]\n") 
            help() 
else: 
    #white=string.whitespace 
    white=' ' 
    letters=string.letters 
    digits=string.digits 
    puncts=string.punctuation 
    specs=u"à âäéèêëîïôöûüùçÀÂÄÉÈÊËÎÏÔÖÙÇ" 
    if sys.argv[1] == "-l" or sys.argv[1] == "--letters": 
        dico="%s%s%s"%( letters, specs, white ) 
        start() 
    elif sys.argv[1] == "-d" or sys.argv[1] == "--digits": 
        dico="%s%s"%( digits, white ) 
        start() 
    elif sys.argv[1] == "-ld": 
        dico="%s%s%s%s"%( letters, specs, digits, white ) 
        start() 
    elif sys.argv[1] == "-p" or sys.argv[1] == "--punctuation": 
        dico="%s%s"%( puncts, white ) 
        start() 
    elif sys.argv[1] == "-a" or sys.argv[1] == "--all": 
        dico="%s%s%s%s%s"%( letters, specs, digits, puncts, white ) 
        start() 
    elif sys.argv[1] == "-m" or sys.argv[1] == "--manual": 
        dico=sys.argv[4] 
        start() 
    else: 
        print("\n[!]Option inconnu[!]\n") 
        help()

 

Écrire un commentaire

Quelle est la cinquième lettre du mot kqlgjtd ?

Fil RSS des commentaires de cet article