Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from pwn import *
- import re
- def z_function(s):
- n = len(s)
- z = [0] * n
- l = 0
- r = 0
- for i in range(1, n):
- if (i <= r):
- z[i] = min(r - i + 1, z[i - l])
- while (i + z[i] < n and s[z[i]] == s[i + z[i]]):
- z[i] += 1
- if (i + z[i] - 1 > r):
- l = i
- r = i + z[i] - 1
- return z
- def count_str(s, t):
- m = len(t)
- n = len(s)
- p = t + "#" + s
- z = z_function(p)
- res = 0
- for i in range(m + 1, m + n + 1):
- res += int(z[i] == m)
- return res
- conn = remote('61.28.237.86', 30529)
- # receive exam
- msg = conn.recv()
- # send enter for start
- conn.send(b'\n')
- msg = conn.recv().decode()
- lines = msg.split("\n")
- s = lines[2][30:]
- t = lines[1][17:]
- res = str(count_str(s, t)) + '\n'
- conn.send(res.encode())
- for i in range(9):
- msg = conn.recvuntil(b'answer: ').decode()
- lines = msg.split("\n")
- # print(lines[1])
- s = lines[3][30:]
- t = lines[2][17:]
- res = str(count_str(s, t)) + '\n'
- print(res)
- conn.send(res.encode())
- print(conn.recv())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement