-
-
Save raphaelvallat/646bd1675f2dadff09c50ebc85f298b8 to your computer and use it in GitHub Desktop.
""" | |
Password brute-force algorithm. | |
List of most probable passwords and english names can be found, respectively, at: | |
- https://github.com/danielmiessler/SecLists/blob/master/Passwords/probable-v2-top12000.txt | |
- https://github.com/dominictarr/random-name/blob/master/middle-names.txt | |
Author: Raphael Vallat | |
Date: May 2018 | |
Python 3 | |
""" | |
import string | |
from itertools import product | |
from time import time | |
from numpy import loadtxt | |
def product_loop(password, generator): | |
for p in generator: | |
if ''.join(p) == password: | |
print('\nPassword:', ''.join(p)) | |
return ''.join(p) | |
return False | |
def bruteforce(password, max_nchar=8): | |
"""Password brute-force algorithm. | |
Parameters | |
---------- | |
password : string | |
To-be-found password. | |
max_nchar : int | |
Maximum number of characters of password. | |
Return | |
------ | |
bruteforce_password : string | |
Brute-forced password | |
""" | |
print('1) Comparing with most common passwords / first names') | |
common_pass = loadtxt('probable-v2-top12000.txt', dtype=str) | |
common_names = loadtxt('middle-names.txt', dtype=str) | |
cp = [c for c in common_pass if c == password] | |
cn = [c for c in common_names if c == password] | |
cnl = [c.lower() for c in common_names if c.lower() == password] | |
if len(cp) == 1: | |
print('\nPassword:', cp) | |
return cp | |
if len(cn) == 1: | |
print('\nPassword:', cn) | |
return cn | |
if len(cnl) == 1: | |
print('\nPassword:', cnl) | |
return cnl | |
print('2) Digits cartesian product') | |
for l in range(1, 9): | |
generator = product(string.digits, repeat=int(l)) | |
print("\t..%d digit" % l) | |
p = product_loop(password, generator) | |
if p is not False: | |
return p | |
print('3) Digits + ASCII lowercase') | |
for l in range(1, max_nchar + 1): | |
print("\t..%d char" % l) | |
generator = product(string.digits + string.ascii_lowercase, | |
repeat=int(l)) | |
p = product_loop(password, generator) | |
if p is not False: | |
return p | |
print('4) Digits + ASCII lower / upper + punctuation') | |
# If it fails, we start brute-forcing the 'hard' way | |
# Same as possible_char = string.printable[:-5] | |
all_char = string.digits + string.ascii_letters + string.punctuation | |
for l in range(1, max_nchar + 1): | |
print("\t..%d char" % l) | |
generator = product(all_char, repeat=int(l)) | |
p = product_loop(password, generator) | |
if p is not False: | |
return p | |
# EXAMPLE | |
start = time() | |
bruteforce('sunshine') # Try with '123456' or '751345' or 'test2018' | |
end = time() | |
print('Total time: %.2f seconds' % (end - start)) |
is this still viable for current version of python?
This code was written and tested in Python 3.6. However, I haven't tried it on Python 3.7 / 3.8. Please let me know if you do. Thanks
@raphaelvalla it important to download these files
@raphaelvalla How to install numpy
@Qwerty1S5Y, if you use Conda, it's:
conda install numpy
If you use pip, then it's:
pip install numpy
Can you please say how to download the "probable-v2-top12000.txt" file
i am new to python and programming
great code
any one say how to write code like this and some modules that needed for hacking 😎👏
You did great work but if you use random will be fantastic🤘😝🤘
Guys, this code is why it is used
Guys, this code is why it is used
used to crack password
hmm i have an error can someone help me pls
"ValueError: Wrong number of columns at line 934"
Check middle-names.txt line 934 the name is De Witt, its not handling the space
nice
hmm i have an error can someone help me pls
"ValueError: Wrong number of columns at line 934"
in middle-txt ,there is wrong with de witt. just delete space in de witt.
Hello how exactly is it used im kind of new to python and was wondering, I ran the code on replit.
@Steve-programmer
"Steve Programmer"🤔
Hi all I have an RB951g, I forgot the login details and the device does not want to hard reset. Is it possible to hack this device as I can see the ssid I previously set up on the device. I am connected to the device via wifi as I remembered the wifi. Please can someone help me? Thanks
Can you please upload the "probable-v2-top12000.txt" file
what do these do
how do you actually use this program on a since I'm new to this kind of program
i am new to python and programming great code any one say how to write code like this and some modules that needed for hacking 😎👏
how to you get it to work on something
Just how do you use this program on a website. I am new in this :)
Hello!
Can I use it on my phone? and how can I use it? Because when I paste the example to the code I get an IndentationError to bruteforce()
Sorry I'm a beginner.
if i want to do this on website how i tell to put password in website
how do i make so i can use this on website pls men i need know
LOL
Tolong buat lebih sederhana... Saya baru di di bidang ini
Hi, I just tested your program, it defines a bruteforce subprogram that can be used to bruteforce a known password and see how long it takes to do it (the example at the end shows how it works with passwords you enter yourself), but how can you use this program to actually crack an unknown password?
The text file can be found at https://github.com/danielmiessler/SecLists/blob/master/Passwords/probable-v2-top12000.txt