-
Notifications
You must be signed in to change notification settings - Fork 262
/
Copy pathcrypt.py
110 lines (80 loc) · 2.37 KB
/
crypt.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
from random import choice
from sys import argv
from base64 import b64encode
b = 22
def dwfregrgre(x, z):
wdef = []
for a in range(x, z + 1):
for i in range(2, a):
if (a % i) == 0:
break
else:
wdef.append(a)
return wdef
def sdsd(edefefef):
fvfegve = [x for x in range(2, edefefef)]
x = 2
rrerrrr = True
while rrerrrr:
for i in range(x * x, edefefef, x):
if i in fvfegve:
fvfegve.remove(i)
rrerrrr = False
for i in fvfegve:
if i > x:
x = i
rrerrrr = True
break
return fvfegve
def swsdwd(a, b):
if a == 0:
return (b, 0, 1)
else:
g, y, x = swsdwd(b % a, a)
return (g, x - (b // a) * y, y)
def swsdwdwdwa(a, m):
g, x, y = swsdwd(a, m)
if g != 1:
raise Exception('Oops! Error!')
else:
return x % m
def L(u, n):
return (u - 1) // n
if __name__ == '__main__':
print("Key cryptor v1.0")
if len(argv) != 2:
print("Start script like: python crypt.py <YourOwnPasswordString>")
if (not str(argv[1]).startswith("KLCTF{")) or (not str(argv[1]).endswith("}")):
print("Error! Password must starts with KLCTF")
exit()
p = choice(dwfregrgre(100, 1000))
q = choice(dwfregrgre(200, 1000))
print("Waiting for encryption...")
n = p * q
g = None
for i in range(n + 1, n * n):
if ((i % p) == 0) or ((i % q) == 0) or ((i % n) == 0):
continue
g = i
break
if g is None:
print("Error! Can't find g!")
exit()
lamb = (p - 1) * (q - 1)
mu = swsdwdwdwa(L(pow(g, lamb, n * n), n), n) % n
rc = sdsd(n - 1)
if len(rc) == 0:
print("Error! Candidates for r not found!")
exit()
if p in rc:
rc.remove(p)
if q in rc:
rc.remove(q)
r = choice(rc)
wdwfewgwggrgrg = [ord(x) for x in argv[1][6:-1]]
dcew = (pow(g, b, (n * n)) * pow(r, n, (n * n))) % (n * n)
for i in range(len(wdwfewgwggrgrg)):
wdwfewgwggrgrg[i] = (((pow(g, wdwfewgwggrgrg[i], (n * n)) * pow(r, n, (n * n))) % (n * n)) * dcew) % (n * n)
wdwfewgwggrgrg[i] = (L(pow(wdwfewgwggrgrg[i], lamb, (n * n)), n) * mu) % n
wdwfewgwggrgrg = b64encode(bytearray(wdwfewgwggrgrg))
print(str(wdwfewgwggrgrg)[2:-1])