just for now

This commit is contained in:
2024-12-10 00:51:04 +09:00
parent c4c4547706
commit 022291f5af
18 changed files with 311 additions and 32 deletions

View File

@ -1,25 +1,44 @@
import socket
from Crypto.Util.number import getPrime, inverse
import re
# Fill in the right target here
HOST = 'this.is.not.a.valid.domain' # TODO
PORT = 0 # TODO
HOST = 'netsec.net.in.tum.de' # TODO
PORT = 20106 # TODO
def int_to_bytes(m):
return m.to_bytes((m.bit_length() + 7) // 8, 'big').decode()
def modular_inverse(p, phi_q):
x = inverse(p, phi_q)
return x % phi_q
def decrypt_message(encrypted, p, q):
phi_q = q - 1
d = modular_inverse(p, phi_q)
message = pow(encrypted, d, q)
return message
def get_flag():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
sf = s.makefile('rw') # we use a file abstraction for the sockets
message1 = sf.readline().rstrip('\n')
# TODO
m = sf.readline().rstrip('\n')
bit_len = int(re.search(r"[0-9]+", m).group())
print(f"bit_len is {bit_len}")
p = getPrime(bit_len*2)
q = getPrime(bit_len*2)
sf.write(f'{p};{q}\n')
sf.flush()
c_m = int(sf.readline().rstrip('\n'))
print("C_M: ", c_m)
d_m = decrypt_message(c_m, p, q)
sf.close()
s.close()
print(int_to_bytes(d_m))
if __name__ == '__main__':