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