-
Notifications
You must be signed in to change notification settings - Fork 1
/
solver.py
61 lines (48 loc) · 1.19 KB
/
solver.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
#!/usr/bin/env python3
from pwn import *
if args.REMOTE:
p = remote('0.cloud.chals.io', 11444)
else:
p = process('./chal.py', stdin=PTY)
# Generate Gray Codes
# Taken from https://stackoverflow.com/questions/38738835/generating-gray-codes
def gen_codes():
n = 10
gray_codes = []
for i in range(0, 1 << n):
gray = i ^ (i >> 1)
if gray < 1000:
gray_codes.append(gray)
info("Generated Gray Codes")
return gray_codes
def login():
user = b'mgrey'
passwd = b'1515'
p.recvuntil(b'Username:')
p.sendline(user)
p.recvuntil(b'Password:')
p.sendline(passwd)
info('Sent username and password')
def send_code(code):
p.recvuntil(b'Enter Code')
c = str(code).zfill(3).encode()
p.sendline(c)
p.recvline()
r = p.recvline()
if b"Correct" in r:
info(f"CORRECT CODE FOUND: {c}")
return True
else:
return False
def main():
gray_codes = gen_codes()
login()
codes_cracked = 0
while codes_cracked < 15:
for i in gray_codes:
if send_code(i):
codes_cracked += 1
break
p.interactive()
if __name__ == "__main__":
main()