Advertisement
minhkhoi1026

Untitled

Jun 11th, 2022
966
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.02 KB | None | 0 0
  1. from pwn import *
  2. import re
  3.  
  4. def z_function(s):
  5.   n = len(s)
  6.   z = [0] * n
  7.   l = 0
  8.   r = 0
  9.   for i in range(1, n):
  10.     if (i <= r):
  11.       z[i] = min(r - i + 1, z[i - l])
  12.     while (i + z[i] < n and s[z[i]] == s[i + z[i]]):
  13.       z[i] += 1
  14.     if (i + z[i] - 1 > r):
  15.       l = i
  16.       r = i + z[i] - 1
  17.   return z
  18.  
  19. def count_str(s, t):
  20.   m = len(t)
  21.   n = len(s)
  22.   p = t + "#" + s
  23.   z = z_function(p)
  24.   res = 0
  25.   for i in range(m + 1, m + n + 1):
  26.     res += int(z[i] == m)
  27.   return res
  28.  
  29. conn = remote('61.28.237.86', 30529)
  30.  
  31. # receive exam
  32. msg = conn.recv()
  33.  
  34. # send enter for start
  35. conn.send(b'\n')
  36.  
  37. msg = conn.recv().decode()
  38. lines = msg.split("\n")
  39. s = lines[2][30:]
  40. t = lines[1][17:]
  41. res = str(count_str(s, t)) + '\n'
  42. conn.send(res.encode())
  43.  
  44. for i in range(9):
  45.   msg = conn.recvuntil(b'answer: ').decode()
  46.   lines = msg.split("\n")
  47.   # print(lines[1])
  48.   s = lines[3][30:]
  49.   t = lines[2][17:]
  50.  
  51.   res = str(count_str(s, t)) + '\n'
  52.   print(res)
  53.   conn.send(res.encode())
  54.  
  55. print(conn.recv())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement