joylintp

solve.py

Jan 24th, 2021
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.79 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. import os
  3. import sys
  4. import time
  5. import socket
  6. import hashlib
  7. import re
  8. import random
  9.  
  10. host = "chall.ctf.bamboofox.tw"
  11. port = 10369
  12.  
  13. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  14. s.connect((host, port))
  15. print('connect success')
  16.  
  17. def pow_solver(prefix, difficulty):
  18.     zeros = '0' * difficulty
  19.     def is_valid(digest):
  20.         if sys.version_info.major == 2:
  21.             digest = [ord(i) for i in digest]
  22.         bits = ''.join(bin(i)[2:].zfill(8) for i in digest)
  23.         return bits[:difficulty] == zeros
  24.     i = 0
  25.     while True:
  26.         i += 1
  27.         s = prefix + str(i)
  28.         if is_valid(hashlib.sha256(s.encode()).digest()):
  29.             return i
  30.  
  31. def main():
  32.     print('main start')
  33.     question = s.recv(4096)
  34.     question = question.decode('ascii')
  35.     print(question)
  36.     question = question[58:74]
  37.     print(question)
  38.  
  39.     ans = pow_solver(question, 20)
  40.     print(str(ans) + '\n')
  41.     s.send(bytes(str(ans) + '\n', 'ascii'))
  42.     _ = s.recv(4096)
  43.     print(_.decode('utf-8'))
  44.     s.send(bytes('\n', 'utf-8'))
  45.     with open('edges.txt', 'w') as f:
  46.         while True:
  47.             _ = s.recv(4096)
  48.             if len(_) == 0:
  49.                 break
  50.             content = _.decode('ascii')
  51.             # print(content)
  52.             content = re.sub("[^\d\s]", "", content)
  53.             f.write(content)
  54.  
  55.             if _.decode('ascii').find("Enter") != -1:
  56.                 break;
  57.     os.system("./solve < edges.txt > ans.txt")
  58.     with open("ans.txt", "r") as f:
  59.         ans = f.readlines();
  60.         print(ans, len(ans))
  61.         ans = ' '.join([x.strip() for x in ans])
  62.     print(ans)
  63.     s.send(bytes(str(ans) + '\n', 'ascii'))
  64.  
  65.     res = s.recv(1024)
  66.     print(res.decode('utf-8'))
  67.     # os.system("./solve")
  68.    
  69.  
  70. main()
  71.  
Advertisement
Add Comment
Please, Sign In to add comment