from Crypto.Util.number import getPrime, bytes_to_long, isPrime

def gen_n():
    while 1:
        p_minus_1 = getPrime(256)
        for _ in range(48):
            p_minus_1 *= getPrime(16)
        p_minus_1 *= 2
        p = p_minus_1 + 1
        if isPrime(p):
            return p

p1 = getPrime(512)
q1 = getPrime(512)

n1 = p1 * q1
n2 = gen_n()

e = 17
flag = b'cyber{?????????????????????????????????}'

#wait- i'm encrypting my modulus??
c_mod = pow(n1, p1, n2)
ct = pow(bytes_to_long(flag), e,n1)

print(f'{ct = }')
print(f'{c_mod = }')
print(f'{e = }')
print(f'{n1 = }')
print(f'{n2 = }')

'''
ct = 59150036753546493385918687384070525078195460049454997554772137656361308973091313096792034848751303354092089566078300072981444956540145100435880155734012393374617727888790234543563072207326161880118705999365418813587178774346828512536302582814361998065210354240974195932406121284960844143154330405962591157588
c_mod = 37863864435820663764795101360098360817836970659909812907239337364815075116831449581346574491901780888958813238820868613707127649541435872341100381795191990322954395120426317208625875081609964122468595419790784995053830478604193663453456761724244613691303009251956944405399569663970061103289224644073098
e = 17
n1 = 61202624514795137754768636303809662256499572445204954407735105154173569126233689613734218599242570222372895979726929095288325617561456586913414853351063679982858083785324292258445248309487720696437146342321481076218504761123853261911220885975706615448461676496205023896240862012866296138684605519062748136721
n2 = 48838133879287047116965031068596974348171099736467998817315042939795311276490300454537531696089285270807408738817434616719352037983667301418624332300006130546683425686696625109518555865181257112169556811717752681430799739020425535939711812696740002978223399365310148699742620213469213416979112336767487
'''