示例#1
0
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}')
示例#2
0
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)
示例#3
0
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()
示例#4
0
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)
示例#5
0
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)