2019. 1. 14. 19:36, 워게임/root-me.org
알고리즘이 질릴땐 워게임입니다!
힐링되는 난이도네요.
from Crypto.Util.number import * import binascii,socket,sys def gcd(a, b): if a == 0: return b return gcd(b%a, a) def egcd(a, b): if a == 0: return (b, 0, 1) g, y, x = egcd(b%a,a) return (g, x - (b//a) * y, y) def inv(a, m): g, x, y = egcd(a, m) if g != 1: raise Exception('No modular inverse') return x%m # x**2 = a (mod m), m is prime def quad_congruence_equation(a, m): assert((m+1)%4 == 0) return pow(a, (m+1)//4, m) # m must satisfies pairwise relatively prime def crt(a, m): n = len(m) ret = a[0] mod = m[0] for i in range(1,n): m1 = mod mod *= m[i] m2inv = inv(m[i],m1) m1inv = inv(m1,m[i]) ret = (ret*m[i]*m2inv+a[i]*m1*m1inv)%mod return ret # 0x6161 -> 'AA' def i2s(x): return long_to_bytes(x).decode("utf-8") ############ my socket ############### def interactive(socket): print("[+] interactive mode") while True: rr = socket.recv(2**16).decode() if not rr: print("[!] socket closed") return None print(rr) socket.send((input('> ')+'\n').encode()) def remote(ip, port): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print("[+] Connecting to {}:{}".format(ip,port)) sock.connect((ip,port)) print("[+] Done!") return sock def sendline(socket, msg): if type(msg) == str: msg = msg.encode() if msg[-1] != b'\n': msg += b'\n' socket.send(msg) ################################### print(i2s(0x4C6520666C6167206465206365206368616C6C656E6765206573743A203261633337363438316165353436636436383964356239313237356433323465))
'워게임 > root-me.org' 카테고리의 다른 글
[Cryptanalysis] ELF64 - PID Encryption (0) | 2019.01.14 |
---|---|
[Cryptanalysis] Pixel Madness (0) | 2019.01.14 |
[Cryptanalysis] Shift cipher (0) | 2019.01.14 |
[Cryptanalysis] Hash - SHA-2 (0) | 2019.01.14 |
[Cryptanalysis] Message Digest 5 (0) | 2019.01.14 |
[Cryptanalysis] Encoding - UU (0) | 2019.01.14 |
Comments