lunedì 15 luglio 2013

Come Creare Un Bruteforce In Python - Parte 1

Bruteforce: il metodo infallibile per scoprire una password. Sì proprio così! In pratica è una tecnica che consiste nel risolvere un problema tentando tutte le possibili soluzioni. Nel nostro caso scoprire una password provando tutte le possibili combinazioni di lettere, numeri e caratteri speciali. In questo articolo/guida spiego come creare un programma bruteforce con il linguaggio Python.

forza bruta come creare un bruteforce in python

Requisiti per continuare a leggere questo post:

Bene. Apriamo il blocco note o l'IDLE di Python dove andare a scrivere il codice. Iniziamo:
Ecco un prima bozza del bruteforce (scritto da me): BruteForce.py - Esempio 01 (il codice è molto commentato)
Ecco il risultato:

Come Creare Un Bruteforce In Python

Come si può notare, se viene avviate il file vengono stampate a schermo tutte le possibili combinazioni (in matematica vengono chiamate permutazioni) composte dai caratteri nella lista.

Per ora il nostro programma non fa altro che stampare tutte le password possibili, ma come veniamo a conoscenza di quella corretta? Per fare questo bisogna implementare (modificare) la funzione testaPassword che per ora stampa solo la stringa passatagli come parametro.

Vedremo tutto nella prossima parte di questa guida!

31 commenti:

  1. Molto bello anche questo articolo, aspetto con ansia una seconda parte :)

    RispondiElimina
  2. def permute(seq):
    '''Ritorna la lista di tutte le permutazioni della sequenza seq'''
    if len(seq) <= 1:
    perms = [seq]
    else:
    perms = []
    for i in range(len(seq)):
    # genera ricorsivamente le permutazioni degli elementi
    # escluso l'i-esimo elemento
    sub = permute(seq[:i]+seq[i+1:])
    for p in sub: # mette in testa l'i-esimo elemento
    perms.append(seq[i:i+1]+p)
    return perms

    # un piccolo programma ricorsivo che in poche righe trova tutte le permutazioni...

    RispondiElimina
    Risposte
    1. Grazie marius, la tua soluzione è certamente più elegante, tuttavia in questa guida ho ritenuto opportuno iniziare dalla base ed è per questo che ho scelto quell'approccio. Grazie per il commento e per l'ottima soluzione che hai proposto.

      Elimina
  3. se avete problemi con l'indetazione contattatemi ;)

    RispondiElimina
  4. potendo usare la ricorsione fino a 999 iterazioni, secondo voi è più utile il metodo descritto sopra da me appunto ricorsivo, oppure quello scritto da voi?

    RispondiElimina
    Risposte
    1. Nel caso da te citato, a mio parere, è migliore il metodo che hai descritto.

      Elimina
  5. Il bruteforce si può fare anche in linguaggio c? Perchè secondo me il linguaggio c è abbastanza semplice

    RispondiElimina
    Risposte
    1. Eh insomma, è semplice la sintassi ma concettualmente è un po' complicato perchè non è dotato di vasta libreria standard come il Python. Prova a spiegare il concetto di puntatore ad un neofita, non comprenderà nulla se non sa almeno le basi della programmazione, basi che possono essere acquisite grazie a linguaggi più semplici quali il Python.

      Elimina
  6. Bell'articolo, ma la seconda parte?

    RispondiElimina
    Risposte
    1. Avevo dimenticato di aggiornare la scritta: "Parte 2 non ancora disponibile". Comunque c'è la seconda parte ed inoltre è in arrivo anche la terza.

      Elimina
  7. mi sai dire se funziona con clash of clans ?
    se si me lo spieghi
    grazie 1000

    RispondiElimina
    Risposte
    1. Se non erro clash of clans è un browser game quindi si potrebbe tentare con un bruteforce via http che spiegherò nella prossima guida. Siccome quest'ultima è un po' complicata da spiegare, sto impiegando del tempo per scriverla.

      Elimina
  8. avevo una domanda da fare anzi due mi son informato sul linguaggio di programmazione python ma esistono diverse versioni e non trovo quella che servirebbe a me, il download è gratis?

    RispondiElimina
    Risposte
    1. Ti consiglio di iniziare dalla versione 2.7.3, il download è assolutamente gratuito.

      Elimina
  9. Non mi apre l'IDLE di python! Sono inesperto e vorrei imparare, quindi ho scaricato python e ho cercato l'IDLE ma mi dice che c'è un errore irreversibile,che non trova un componente. Grazie a chiunque mi possa aiutare

    RispondiElimina
    Risposte
    1. Niente ho messo una versione compatibile e ora funziona :D

      Elimina
    2. Mi da alcuni errori di sintassi uffa ):

      Elimina
    3. Prova a riscrivere il codice anzichè copiarlo e incollarlo. Inoltre ti ricordo di scaricare una versione Python 2.7.

      Elimina
  10. driver vorrei farti delle domande allora io pyton non l ho mai usato se è possibile fare un brutal tramite visual basic ho scaricato pyton credo che ho fatto bene l idle ma mi sono perso se poi puoi aiutarmi ti ringrazio

    RispondiElimina
    Risposte
    1. Impara prima il Python, ci sono dei tutorial molto validi su youtube. Una volta imparato, puoi procedere con la creazione del Bruteforce.

      Elimina
  11. Ciao, bella guida :D volevo sapere solo una cosa..come faccio a stoppare la stampa dei caratteri una volta trovata la password? Basandomi sul tuo codice ho scritto quanto segue:

    import time

    # creiamo la lista caratteri

    lc=["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', ".", ",", "-", "_", "@", "+"]

    find=False #Variabile booleana che ci indica se la password e' stata trovata

    def verifica(password):
    time.sleep(0.05)
    print(password)
    try:
    if(password=="AAAZ"):
    print("La password giusta e': ")
    print(password)
    return password
    find=True
    except:
    return

    while find==False:
    for c1 in lc:
    for c2 in lc:
    for c3 in lc:
    for c4 in lc:
    password=c1+c2+c3+c4
    verifica(password)

    Il problema è quindi che una volta trovata la password, continua a stampare tutte le altre possibili combinazioni, io invece vorrei che si bloccasse quando la trova, mi puoi aiutare a correggere il codice? Grazie ;)

    RispondiElimina
  12. Ciao dove posso contattarti? Ho bisogno di una mano grazie

    RispondiElimina
    Risposte
    1. Puoi contattarmi all'indirizzo email: diventarehackerblog@gmail.com

      Elimina
  13. Ma non ho capito, devo scaricarlo Python?

    RispondiElimina
    Risposte
    1. Python è un linguaggio di programmazione, non puoi scaricarlo. Quello che devi scaricare è un programma (chiamato interprete) che capisca il linguaggio Python e lo esegua.

      È come dire che per parlare con un uomo portoghese devi acquistare la lingua portoghese. No! Devi, invece, pagare un interprete che ti spieghi in italiano (per te comprensibile) cosa dice l'uomo portoghese e che traduca in portoghese ciò che tu dici in lingua italiana.

      Spero di aver reso, l'idea.

      L'interprete Python puoi scaricarlo gratuitamente dal sito ufficiale:
      http://www.python.it/download/

      Elimina
  14. Siccome ci ho sbattuto la testa diverse volte e non sono riuscito a venirne a capo. offro una ricompensa simbolica a chi mi scova la mia psw di http://www.oddsportal1.com/ , il mio nome utente è clarencito1, per agevolarvi vi dico che è di 4 lettere comprese tra A e F

    RispondiElimina