-
Notifications
You must be signed in to change notification settings - Fork 0
/
guessit.py
125 lines (109 loc) · 3.94 KB
/
guessit.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# imports
import platform
import random
import itertools
from os import system
import sys
# Fonctions
def clearwindows():
if platform.system() == "Windows":
system("cls")
else:
system("clear")
def charsetchoice():
global listchartype, uchoice, charset
listchartype = []
# Import des charsets
with open(file='charset.lst') as charset:
for chartype in charset:
if '=' in chartype:
# print(chartype)
listchartype.append(chartype.strip().split('=', 1))
# Ajout du numéro de la ligne
i = 0
while i < len(listchartype):
listchartype[i].insert(0, i + 1)
listchartype[i][2] = listchartype[i][2].lstrip().lstrip('[').rstrip(']')
i += 1
# Print les choix de caractères possibles
for choice in listchartype:
print("%s\t%s\t\t%s" % (choice[0], choice[1], choice[2]))
# Choix du charset
uchoice = input("Which charset do you wanna use [1-%s]: " % (len(listchartype)))
while int(uchoice) < 1 or int(uchoice) > len(listchartype):
uchoice = input("Which charset do you wanna use [1-%s]: " % (len(listchartype)))
charset = str(listchartype[int(uchoice) - 1][2])
print(charset)
global numeric, lalpha, ualpha, special
numeric = ""
lalpha = ""
ualpha = ""
special = ""
for char in list(charset):
if char.isdigit():
numeric = numeric + char
elif char.islower():
lalpha = lalpha + char
elif char.isupper():
ualpha = ualpha + char
else:
special = special + char
def wordchoice():
global rword
words = []
# Import des password à trouver
with open(file='passwords.txt') as wordlist:
for word in wordlist:
words.append(word.rstrip('\n'))
# Choix random d'un password à chercher
rword = random.choices(words)
print(rword)
def crunchcommandline():
# Generate the crunch commandline of your choices
print("This is your crunch equivalent: crunch %s %s -f /PATH/TO/charset.lst %s" % (lenmin, lenmax, listchartype[int(uchoice) - 1][1]))
input("Press any to continue...")
def generatepassword():
global lenmin, lenmax, string
types = []
havepattern = input("Do you the pattern of the password [Y/n]: ")
if havepattern in ["", "Y", "y"]:
print("@\tlowercase\n,\tuppercase\n*\tnumber\n^\tspecial")
pattern = input("Enter your pattern: ")
while pattern == "":
pattern = input("Enter your pattern: ")
lenmin = len(pattern)
lenmax = len(pattern)
print("{} < {}".format(lenmin, lenmax))
for x in pattern:
if x == "@":
types.append(lalpha)
elif x == ",":
types.append(ualpha)
elif x == "*":
types.append(numeric)
elif x == "^":
types.append(special)
print(len(list(itertools.product(*types))))
for xs in list(itertools.product(*types)):
string = "".join(xs)
if string == rword:
clearwindows()
print("******************************\n**{:^26}**\n******************************".format(string))
sys.exit("You found the password.")
else:
print(string)
else:
lenmin = int(input("Minimum lenght of your password to guess: "))
lenmax = int(input("Maximal lenght of your password to guess: "))
for x in range(lenmin, lenmax + 1):
for xs in list(itertools.product(charset,repeat=x)):
string = "".join(xs)
if string == rword:
clearwindows()
print("******************************\n**{:^26}**\n******************************".format(string))
sys.exit("You found the password.")
else:
print(string)
wordchoice()
charsetchoice()
generatepassword()