Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from pwn import *
- import pyfiglet
- import hashlib
- f = [0] * 1000000
- f[0] = 0
- f[1] = 1
- for i in range(2,1000000):
- f[i] = (f[i - 2] + f[i - 1]) % 100000007
- conn = remote('61.28.237.86', 30520)
- # operator 0
- operands = "0123456789"
- operators = "+-*/"
- msg = conn.recv().decode()
- exp = '\n'.join(msg.split('\n')[10:17])
- print(exp)
- for x in operands:
- for y in operands:
- for o in operators:
- s = f"{x} {o} {y}"
- guess_exp = pyfiglet.figlet_format(s)
- if (guess_exp == exp):
- print("operator 0 ok")
- res = str(eval(s)) + '\n'
- conn.send(res.encode())
- # operator 1
- msg = conn.recv().decode()
- l = 0
- r = 1000000000
- print(msg)
- while (l <= r):
- m = (l + r) // 2
- conn.send((str(m) + '\n').encode())
- sleep(0.01)
- msg = conn.recv().decode()
- is_ok = msg.split('\n')[0]
- print(is_ok)
- if (is_ok == "Lower!!!"):
- r = m - 1
- elif (is_ok == "Higher!!!"):
- l = m + 1
- else:
- print("operator 1 ok")
- print(msg)
- break
- # operator 2
- conn.send(b'\n')
- msg = conn.recv().decode()
- l = 0
- r = 1000
- while (l <= r):
- m = (l + r) // 2
- conn.send((str(m) + '\n').encode())
- sleep(0.01)
- msg = conn.recv().decode()
- is_ok = msg.split('\n')[0]
- print(is_ok)
- if ("lower" in is_ok):
- r = m - 1
- elif ("higher" in is_ok):
- l = m + 1
- else:
- print("operator 2 ok")
- print(msg)
- break
- # operator 3
- conn.send(b'\n')
- for i in range(10):
- msg = conn.recv().decode()
- n = [int(s) for s in msg.split() if s.isdigit()][0]
- print(n, f[n])
- conn.send((str(f[n]) + '\n').encode())
- msg = conn.recv().decode()
- print("operator 3 ok")
- print(msg)
- # operator 4
- conn.send(b'\n')
- msg = conn.recv().decode()
- token = msg.split('\n')[0].split()[-1]
- def sha256(message):
- return hashlib.sha256(message.encode('ascii')).hexdigest()
- prefix = '0000'
- for i in range(1000000):
- x = i
- key = ""
- for _ in range(6):
- key = str(x % 10) + key
- x //= 10
- passphrase = f"{token}-{key}"
- digest = sha256(passphrase)
- if digest.startswith(prefix):
- print("operator 4 ok")
- conn.send((passphrase + '\n').encode())
- break
- msg = conn.recv().decode()
- print(msg)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement