Skip to content

Instantly share code, notes, and snippets.

@lttn1204
Last active April 9, 2021 11:00
Show Gist options
  • Save lttn1204/8466d16410fe1e80dc21760d4b106f1e to your computer and use it in GitHub Desktop.
Save lttn1204/8466d16410fe1e80dc21760d4b106f1e to your computer and use it in GitHub Desktop.
from sock import Sock
from gmpy2 import *
DIGITS=8
def getNum(seed):
seed = str(seed**2).rjust(DIGITS*2, "0")[DIGITS//2:DIGITS +DIGITS//2]
return int(seed)
def get_random_number(x):
arr=divisors(x)
for i in arr:
if len(str(i))==8:
seed1=getNum(i)
seed2=getNum(x/i)
result=seed1*seed2
return (result,seed1,seed2)
while True:
p=Sock('crypto.2021.chall.actf.co', 21600)
tmp=p.read_until(b'Would you like to get a random output [r], or guess the next random number [g]? ')
print(tmp)
p.sendline('r')
number=int(p.read_line())
tmp=p.read_until(b'Would you like to get a random output [r], or guess the next random number [g]? ')
print(number)
print(tmp)
nextnumber,seed1,seed2=get_random_number(number)
p.send_line('g')
a=p.recv(1024)
print(a)
p.send_line(str(nextnumber))
result=p.recv(1024)
print(result)
if result ==b'Incorrect!\n':
p.close()
else:
print(result)
print("correct")
p.send_line(str(getNum(seed1)*getNum(seed2)))
tmp=p.read_line()
print(tmp)
flag=p.read_line()
print(flag)
break
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment