Search code examples
pythonpython-3.xbrute-force

Brute force script


In Python 3.2 I wanted to brute-force a random password like:

PassWord = random.randint(0,9999)

I made something that could try random passwords:

import random
PassWord = str(random.randint(0,9999))
Trial = ' '
while Trial != PassWord:
    Trial = str(random.randint(0,9999))
    print(Trial)
    if Trial == PassWord:
        print('The password is: '+PassWord)
        input()

It's trying to randomly guess a password but a brute-force attack tries all possibilities. How do I first checks all possibilities with 1 digit, in the right order (0, 1, 2, 3 and so on), then 2, 3 and 4 digits?


Solution

  • Code first:

    from itertools import product
    
    chars = '0123456789' # chars to look for
    
    for length in range(1, 3): # only do lengths of 1 + 2
        to_attempt = product(chars, repeat=length)
        for attempt in to_attempt:
            print(''.join(attempt))
    

    itertools.product produces a Cartesian join of its input(s) - in this case, it's being 'joined' to itself. So in the first iteration, each single character is printed. Then in the next iteration, because of repeat=length (and length is now == 2), generates '00', '01', etc... It's worth trying it and seeing the output to understand it better.

    This also means you can throw in letters (uppercase/lowercase), and change the upperbound in the range function.

    It's certainly not going to break the world of code-breaking, but should give you an idea of the flexibility of Python and the tools available to you.

    I'll leave you to check the passwords match and break out the loop.