Skip to content

Coin1

11 : Coin1

  • go into input1 question for fast server response
  • make /tmp/qpalzmm22/coin_ex.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
from pwn import *


#p1 = con.recv()
def recvinput():

    con.recvuntil("N=")

    input_vars = con.recvline().decode().split()
    return input_vars

# try half by half
def bin_search (l_b, r_b, trial):
    #print(f"l_b : {l_b} r_b : {r_b} trial : {trial}" )
    mid = l_b + (r_b - l_b ) // 2

    trial = trial - 1
    if(trial < 0):
        # print(f"done : {l_b}")
        return l_b

    #if(l_b == r_b):
    #    bin_search(l_b, r_b, trial)

    input_str = ""

    for i in range(l_b, mid):
        input_str +=str(i) + " "

    print(input_str)
    con.sendline(input_str)
    result = int(con.recvline())
    print(result)

    # fake coin in [lb, rb // 2]
    if(result % 10 != 0):
        return bin_search(l_b, mid, trial)
    # fake coin in [rb // 2 +1, rb]
    else:
        return bin_search(mid, r_b, trial)



con = remote('localhost', 9007)

con.recvuntil("Ready? starting in 3 sec... -")
#print(p0)
iter = 0

while (iter < 100) :

    print("Run: {0}".format(iter))
    input_vars =  recvinput()
    print (input_vars)
    n_var = input_vars[0]
    c_var = input_vars[1][2:]

    print(n_var)
    print(c_var)

    ans = bin_search(0, int(n_var), int(c_var))
    #  print(f"returned : {ans}")
    con.sendline(str(ans))

    iter = iter + 1;
    #recv = con.recvall()
    #print(f"serv : {recv}")

print(con.recvline())
print(con.recvline())
print(con.recvline())
print(con.recvline())
print(con.recvline())
print(con.recvline())
con.close()
FLAG : b1NaRy_S34rch1nG_1s_3asy_p3asy