Advertisement
minhkhoi1026

Untitled

Jun 11th, 2022
1,065
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.17 KB | None | 0 0
  1. from pwn import *
  2. import pyfiglet
  3. import hashlib
  4.  
  5. f = [0] * 1000000
  6. f[0] = 0
  7. f[1] = 1
  8. for i in range(2,1000000):
  9.   f[i] = (f[i - 2] + f[i - 1]) % 100000007
  10.  
  11. conn = remote('61.28.237.86', 30520)
  12.  
  13. # operator 0
  14. operands = "0123456789"
  15. operators = "+-*/"
  16.  
  17. msg = conn.recv().decode()
  18. exp = '\n'.join(msg.split('\n')[10:17])
  19. print(exp)
  20. for x in operands:
  21.   for y in operands:
  22.     for o in operators:
  23.       s = f"{x} {o} {y}"
  24.       guess_exp = pyfiglet.figlet_format(s)
  25.       if (guess_exp == exp):
  26.         print("operator 0 ok")
  27.         res = str(eval(s)) + '\n'
  28.         conn.send(res.encode())
  29.  
  30. # operator 1
  31. msg = conn.recv().decode()
  32. l = 0
  33. r = 1000000000
  34. print(msg)
  35. while (l <= r):
  36.   m = (l + r) // 2
  37.   conn.send((str(m) + '\n').encode())
  38.   sleep(0.01)
  39.   msg = conn.recv().decode()
  40.   is_ok = msg.split('\n')[0]
  41.   print(is_ok)
  42.   if (is_ok == "Lower!!!"):
  43.     r = m - 1
  44.   elif (is_ok == "Higher!!!"):
  45.     l = m + 1
  46.   else:
  47.     print("operator 1 ok")
  48.     print(msg)
  49.     break
  50.  
  51. # operator 2
  52. conn.send(b'\n')
  53. msg = conn.recv().decode()
  54. l = 0
  55. r = 1000
  56. while (l <= r):
  57.   m = (l + r) // 2
  58.   conn.send((str(m) + '\n').encode())
  59.   sleep(0.01)
  60.   msg = conn.recv().decode()
  61.   is_ok = msg.split('\n')[0]
  62.   print(is_ok)
  63.   if ("lower" in is_ok):
  64.     r = m - 1
  65.   elif ("higher" in is_ok):
  66.     l = m + 1
  67.   else:
  68.     print("operator 2 ok")
  69.     print(msg)
  70.     break
  71.  
  72. # operator 3
  73. conn.send(b'\n')
  74.  
  75. for i in range(10):
  76.   msg = conn.recv().decode()
  77.   n = [int(s) for s in msg.split() if s.isdigit()][0]
  78.   print(n, f[n])
  79.   conn.send((str(f[n]) + '\n').encode())
  80.  
  81. msg = conn.recv().decode()
  82. print("operator 3 ok")
  83. print(msg)
  84.  
  85. # operator 4
  86. conn.send(b'\n')
  87. msg = conn.recv().decode()
  88. token = msg.split('\n')[0].split()[-1]
  89.  
  90. def sha256(message):
  91.   return hashlib.sha256(message.encode('ascii')).hexdigest()
  92.  
  93. prefix = '0000'
  94. for i in range(1000000):
  95.   x = i
  96.   key = ""
  97.   for _ in range(6):
  98.     key = str(x % 10) + key
  99.     x //= 10
  100.   passphrase = f"{token}-{key}"
  101.   digest = sha256(passphrase)
  102.   if digest.startswith(prefix):
  103.     print("operator 4 ok")
  104.     conn.send((passphrase + '\n').encode())
  105.     break
  106.  
  107. msg = conn.recv().decode()
  108. print(msg)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement