from sage.all import * from Crypto.Util.number import getPrime from Crypto.Util.number import bytes_to_long as btl from Crypto.Util.number import long_to_bytes as ltb m = btl(b'flag{REDACTED}') e = 0x10001 #65537 while True: p = getPrime(64) q = getPrime(64) r = getPrime(64) s = getPrime(64) phi = (p - 1) * (q - 1) * (r - 1) * (s - 1) N = p * q * r * s try: assert N > m assert gcd(e, phi) == 1 #coprime d = inverse_mod(e, phi) break except: pass c = pow(m, e, N) print(f'N: {N}\ne: {e}\nC: {c}')
from Crypto.Util.number import getPrime, inverse from Crypto.Util.number import bytes_to_long as btl from Crypto.Util.number import bytes_to_long as ltb m_1 = btl(b'Here\'s my secret message') moduli = [] for _ in range(3): p = getPrime(128) q = getPrime(128) N = p * q moduli.append(N) e = 3 for n in moduli: assert pow(m_1, e) > n ciphertexts = [] for n in moduli: ciphertexts.append(pow(m_1, 3, n)) print(ciphertexts) print(moduli)
from Crypto.Util.number import long_to_bytes as ltb from base64 import b64decode from Crypto.Cipher import AES from pwn import * host, port = 'net.cyber.jawara.systems', 3001 r = remote(host, port) pack = '\x00' * 64 print(r.recvline()) r.sendline(pack) print(r.recvuntil(':\n')) leak = b64decode(r.recvline().strip()) log.info('INPUT : {}'.format(btl(leak))) iv = leak enc_flag = b64decode( 'pJ8GmKrvZS0dO3LPfcvjXrbIRusaEF/wb/Ps8ENwmH0fvkcIau74mSnZPwBvbyMeXyUrAvDBY+McaztsZsM+nw==' ) log.info('IV : {}'.format(btl(iv))) log.info('ENC FLAG : {}'.format(btl(enc_flag))) a1 = xor(enc_flag, iv) print(a1) r.interactive()
from Crypto.Util.number import getPrime, inverse from Crypto.Util.number import bytes_to_long as btl from Crypto.Util.number import bytes_to_long as ltb m_1 = btl(b'REDACTED') moduli = [] for _ in range(3): p = getPrime(128) q = getPrime(128) N = p * q moduli.append(N) e = 3 for n in moduli: assert pow(m_1, e) > n ciphertexts = [] for n in moduli: ciphertexts.append(pow(m_1, 3, n)) print(ciphertexts) print(moduli)
from sage.all import * from Crypto.Util.number import getPrime from Crypto.Util.number import bytes_to_long as btl from Crypto.Util.number import long_to_bytes as ltb m = btl(b'flag{primes!}') e = 0x10001 #65537 while True: p = getPrime(64) q = getPrime(64) r = getPrime(64) s = getPrime(64) phi = (p - 1) * (q - 1) * (r - 1) * (s - 1) N = p * q * r * s try: assert N > m assert gcd(e, phi) == 1 #coprime d = inverse_mod(e, phi) break except: pass c = pow(m, e, N) print(f'N: {N}\ne: {e}\nC: {c}')
def byte_to_long(self, b): return btl(b)