COMPFEST CTF 2020 Writeup

この大会は2020/9/6 10:00(JST)~2020/9/7 10:00(JST)に開催されました。
今回もチームで参戦。結果は13788点で249チーム中6位でした。
自分で解けた問題をWriteupとして書いておきます。

Sanity Check (Misc)

問題にフラグが書いてあった。

COMPFEST12{im_not_insane}

Silverqueen (Forensics)

バイナリエディタで見ると、PNGが壊れていることがわかる。
以下のように修正する。

先頭4バイト
89 45 58 45 -> 89 50 4e 47

IHDRチャンク
00 48 44 52 -> 49 48 44 52

pHYsチャンクの単位指示子とCRC
FLAGd -> 01 正しいCRC

IDATチャンク
ff ff ff ff -> 00 00 ff a5
00 44 61 54 -> 49 44 41 54
import struct
import binascii

with open('silverqueen', 'rb') as f:
    data = f.read()

data = '\x89PNG' + data[4:]
data = data[:12] + 'I' + data[13:]

phys = data[0x42:0x4e] + '\x01'
crc = struct.pack('!l', binascii.crc32(phys))
data = data[:0x4e] + '\x01' + crc + data[0x53:]

data = data[:0x53] + '\x00\x00\xff\xa5' + data[0x57:]
data = data[:0x57] + 'IDAT' + data[0x5b:]

with open('silverqueen.png', 'wb') as f:
    f.write(data)

復元した画像にフラグが書いてあった。
f:id:satou-y:20200921100805p:plain

COMPFEST12{cHuNk5_4r3_pr00f_of_1nt3gr1ty}

Lost My Source (Cryptography)

Ghidraでデコンパイルする。

undefined8 main(void)

{
  byte abStack120 [32];
  byte local_58 [32];
  byte abStack56 [44];
  int local_c;
  
  freopen("flag_plus_key.txt","r",stdin);
  __isoc99_scanf(&DAT_00400788,local_58);
  local_c = 0x1f;
  while (-1 < local_c) {
    abStack120[0x1f - local_c] = local_58[0x3f - local_c] ^ (byte)local_c ^ local_58[local_c];
    local_c = local_c + -1;
  }
  freopen("encrypted.txt","w",stdout);
  local_c = 0;
  while (local_c < 0x20) {
    putchar((int)(char)abStack120[local_c]);
    local_c = local_c + 1;
  }
  return 0;
}

以下のようなXORの暗号をしている。

abStack120[0] = local_58[32] ^ 31 ^ local_58[31]
abStack120[1] = local_58[33] ^ 30 ^ local_58[30]
        :
abStack120[30] = local_58[62] ^ 1 ^ local_58[1]
abStack120[31] = local_58[63] ^ 0 ^ local_58[0]

COMPFEST12{で始まることから鍵の末尾を求めてみる。vwxyzabcdefであることがわかるので、a~zの繰り返しが鍵になっていると推測し、復号する。

import string

with open('encrypted.txt', 'rb') as f:
    ct = f.read()

flag_head = 'COMPFEST12{'
key_tail = ''
for i in range(len(flag_head)):
    code = ord(ct[31-i]) ^ ord(flag_head[i]) ^ i
    key_tail = chr(code) + key_tail

print '[+] key_tail =', key_tail

# guess key
key = string.lowercase[:32 - len(key_tail)] + key_tail

flag = ''
for i in range(32):
    code = ord(ct[31-i]) ^ ord(key[31-i]) ^ i
    flag += chr(code)
print flag

実行結果は以下の通り。

[+] key_tail = vwxyzabcdef
COMPFEST12{Th1s_15_y0ur5_abcdef}
COMPFEST12{Th1s_15_y0ur5_abcdef}

I Hope It is Easy (Cryptography)

f関数は素数の2乗の時にTrueを返す。ASCIIコードの総当たりで、XORした結果、素数の2乗になるという条件を満たす文字列を探す。

from Crypto.Util.number import *
import gmpy

def is_prime_square_number(n):
    m = gmpy.root(n, 2)[0]
    return isPrime(m) and pow(m, 2) == n

with open('encrypted.txt', 'r') as f:
    enc = map(int, f.read().split(', '))

flag = ''
for i in range(len(enc)):
    for code in range(32, 127):
        n = enc[i] ^ code
        if is_prime_square_number(n):
            flag += chr(code)
            break

print flag
COMPFEST12{ez_pz_lemonade_squeez_a42447}

I Hope It's Medium (Cryptography)

サーバ処理の概要は以下の通り。

■1: get_input_then_encrypt()
・keyやivを指定することもできるし、サーバのもの(KEY, IV)を使うこともできる。
・AES-CBC暗号化
 ・keyがmsg
 ・ivがiv
 ・msgがkey

■2
・AES-CBCでKEY、IVを使って、フラグを暗号化し、16進数で表示する。

1でkeyだけデフォルト指定(=KEY)にする。key=msg、iv=ivにしてKEYを暗号化した結果がわかるので、復号すれば、KEYがわかる。さらにIVをサーバのものを使用するにして、ECBモードで復号して平文とXORを取れば、IVがわかる。あとは暗号化フラグを復号すれば、フラグがわかる。

#!/usr/bin/env python3
import socket
from Crypto.Cipher import AES
import codecs

def recvuntil(s, tail):
    data = b''
    while True:
        if tail in data:
            return data.decode()
        data += s.recv(1)

def pad(msg):
    val = 16 - (len(msg) % 16)
    pad_data = msg + (chr(val) * val)
    return pad_data

def unpad(msg):
    return msg[:-ord(msg[-1])]

def str_xor(s1, s2):
    return ''.join(chr(ord(a) ^ ord(b)) for a, b in zip(s1, s2))

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('128.199.157.172', 21953))

#### get encrypted flag ####
data = recvuntil(s, b': ')
print(data + '2')
s.sendall(b'2\n')

data = recvuntil(s, b': ')
flag_enc = codecs.decode(eval(data.split('\n')[0]), 'hex')
print(data + '1')
s.sendall(b'1\n')

#### get KEY ####
msg = b'1' * 15
data = recvuntil(s, b': ')
print(data + msg.decode())
s.sendall(msg + b'\n')
msg = pad(msg)

data = recvuntil(s, b': ')
print(data + 'n')
s.sendall(b'n\n')

data = recvuntil(s, b': ')
print(data + 'y')
s.sendall(b'y\n')

iv = b'1' * 16
data = recvuntil(s, b': ')
print(data + iv.decode())
s.sendall(iv + b'\n')

data = recvuntil(s, b'\n').rstrip()
print(data)
key_enc = codecs.decode(eval(data), 'hex')
cipher = AES.new(msg, AES.MODE_CBC, iv)
KEY = cipher.decrypt(key_enc)

#### get IV ####
data = recvuntil(s, b': ')
print(data + '1')
s.sendall(b'1\n')

msg = b'1' * 15
data = recvuntil(s, b': ')
print(data + msg.decode())
s.sendall(msg + b'\n')
msg = pad(msg)

data = recvuntil(s, b': ')
print(data + 'y')
s.sendall(b'y\n')

key = b'1' * 16
data = recvuntil(s, b': ')
print(data + key.decode())
s.sendall(key + b'\n')

data = recvuntil(s, b': ')
print(data + 'n')
s.sendall(b'n\n')

data = recvuntil(s, b'\n').rstrip()
print(data)
try_enc = codecs.decode(eval(data), 'hex')
cipher = AES.new(msg, AES.MODE_ECB)
xor_block = cipher.decrypt(try_enc)
IV = str_xor(xor_block, key)

#### decrypt flag ####
cipher = AES.new(KEY, AES.MODE_CBC, IV)
flag = unpad(cipher.decrypt(flag_enc))
print(flag)

実行結果は以下の通り。

1) Encrypt a message
2) Encrypt the flag
3) Exit
Choice: 2
b'b9b266a5c2b9df2a19a28bb9389aa95bb439f7150ddd0a9c7756a9cbbf2b816bf2884bb9db0e5c95610ed9fed8ae95240c7d45ba00004a41eea7d1e26c3b4698'
1) Encrypt a message
2) Encrypt the flag
3) Exit
Choice: 1
Input the message you want to encrypt: 111111111111111
Would you like to input a custom key? (y/n): n
Would you like to input a custom IV? (y/n): y
Input custom IV: 1111111111111111
b'648ddddb24f7a2c816d6f170729deaeb'
1) Encrypt a message
2) Encrypt the flag
3) Exit
Choice: 1
Input the message you want to encrypt: 111111111111111
Would you like to input a custom key? (y/n): y
Input custom key: 1111111111111111
Would you like to input a custom IV? (y/n): n
b'21e24444a2b8192fb87dc45e221f0833'
COMPFEST12{Lol_how_did_I_mess_that_up_Im_an_idiot_0ad3bcc}
COMPFEST12{Lol_how_did_I_mess_that_up_Im_an_idiot_0ad3bcc}

Mutual Friend (Cryptography)

$ nc 128.199.157.172 27268
This is a game of luck
Lets hope you get a modulus that can be FACTORED xD
Good luck~
Press enter for next triplet: 
===============================================================================
N = 9579039636873185552860901496653213192318645275058786396957746191603084145325282409277849134276730036728340510835448696717818798650002156853483671209157622731253835750908694284443338734300401731884928876622609826429801179681840646445849211366459533448684403205078825705694360296838354869286351795526889703244794615776421798420037140974437869097612659195933756870908999713233508595869626833943615105435032580874300138694602367385455315756116795943681099483451635229629744194474254428412779851995368705399881113733117555939862263658474613119014821758864736168856403285845293863900034001826284328327319537762081530019151
e = 65537
c = 6840595621691926786712761966930458934031179937427288501567205225458070887194028368021746909426206738289482376544909819706450607428218803350689947605359587232786793561261869679460311735891049017150712431007877262307007779283975252389335383432019551314540137538506907262598725879388708105263717553345543994843625610215851591281324870276721266260854838586537062374932045478508401109386397872267212747998004806974205922891138941781811441109829767898770351953253731231068809000390541152838947859494641985473132765770391727959380718442286802653977699903072747350582585377163270972925061388374175066175744737919531271596633
===============================================================================
Press enter for next triplet: 

primes.txtは4000行あるので、最大でも4000回アクセスすれば共通の素数があるはず。nを集めた、公約数を求め、素因数分解する。あとはそのまま復号すればよい。

import socket
from Crypto.Util.number import *

def recvuntil(s, tail):
    data = ''
    while True:
        if tail in data:
            return data
        data += s.recv(1)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('128.199.157.172', 27268))

data = recvuntil(s, ': ')
print data

ns = []
found = False
for i in range(4000):
    s.sendall('\n')
    data = recvuntil(s, ': ')
    print data
    n = int(data.split('\n')[1].split(' = ')[1])
    c = int(data.split('\n')[3].split(' = ')[1])
    if n not in ns:
        for j in range(len(ns)):
            p = GCD(n, ns[j])
            if p > 1:
                found = True
                q = n / p
                break
        if found:
            break
        else:
            ns.append(n)

e = 65537
phi = (p - 1) * (q - 1)
d = inverse(e, phi)
m = pow(c, d, n)
flag = long_to_bytes(m)
print flag

実行結果は以下の通り。

This is a game of luck
Lets hope you get a modulus that can be FACTORED xD
Good luck~
Press enter for next triplet: 
===============================================================================
N = 1471353010217659161684034266349545220365860649600164001541397342735611863872343718415957518938843928814366020335125177032085070998139266822414049975475273491887924303624923469093146976754206655746191811674141280523960678708330986319744136641254509603656973601269905810412703345026618004195616088740204003034725301975848888259617714258285005036243393089208586062454007797960522858820403931545051091721101254004161277791669654191079592071243785193089477701072472632140984596846014406116896104584378907463737760662355747154735398774717819262730493648242395908606457967376842009169236770567510705214819540501315349537851
e = 65537
c = 996374022395595459279675206524693898006404441630134279333180407074373588854145062828814372361367126279219417850697104940979579633510265238217791185967689460982462474802493629992247438409110129206630057876893548188007504928358579308688657442825981204066964142687818962768514253446862947887827190294758233577324471517631610400449552313359871962683338226723651576745463105591076662514853417793511022964198866053035266237594056319621081133493595838612652400212757868908426622218041659174049034761348764468138260549377367268755816154965923335256829239803073854428097334307927356501803981240234383738841038860241987858865
===============================================================================
Press enter for next triplet: 
===============================================================================
N = 7421488415358201454310959407881119826787975590154504868319936295848757010457797279731197264176991365541445796633404015621278719224334166212185948388892640483767471087732425275468205582526434391055487865964249690501091879654932249345110885053671376460295463722804704761323286811127018854336287961580066223520866211084377662578559763780350715996941896826510426298187876317912369803823479791244807861773334554883580840085373953702767251616480411678407555059629578148174998977137371943167834234372102250384734200229241757514412779599511459923903690933015663283449371628032800077711292360292751085566443285253044457279761
e = 65537
c = 7395107282894598822902088986918995106025205260316398077897428443885528725239544512596010179793665677006300334777894860803146720921947517180816001521742167792704757418652245180733036470161707583583534661140772533514686294914925163708554166766294524863587394497991122038847343497718408315579976292076386419042366482241905316660075128865817895579814997492147064483170265854854642630159307970991674883257401356492729028298354700979813548257465034462371830430581299919427399167690356550111706138473873425474130828624095024669130863677281627686153762801921945863194825681615424804505705258101509554967356491364766411117123
===============================================================================
Press enter for next triplet: 
===============================================================================
N = 2441173730489513315317786043571087162652456916003144242695360415385587974504702971266751105479112199577540673326975451799102451507434199165640526555642925272095049058740806510099520164266010857619656573554511699228136257367823385101729191970071519030490611006039673165106723859810938423641071182389858831301851119098531499044102724242303540699095170445282193220250076493469457453704143935707948675032383592879853610052431706019176573296251511574869039505221671484807044914069457987321500398575773743894597384919920460977999596347922086289299378054955026627933808020165682733390019840202895842204053305098274129961623
e = 65537
c = 13816866050624649567504270680934159739383760312045245701563208230318600066387833557445409491758657107006019081052776311715614898568449125748004792602346783370532946403107116627339680821868097885768055047889320336570050409606788289468944807190766128364754378765992237341553080620530747960653099673319252037266307817771858704803007481108887759919307081656329087310621754119831943230033323352112290478423910346898842427110721009325839341215664188459566128574168570121237260651755226242821655855768738678617344766169230292791444431425468804974038462608663816580781853580084293953709689209486367444268672834960639179414
===============================================================================
Press enter for next triplet: 
===============================================================================
N = 255167999046293044318656728801726350301875281962803361791542983754805151594490688527341068142733789940479781246283987986571338453032431286131436186550256673571614541544795334208088906213543453911690587929405784404648049552660607921258088760710862182691068609125597667563737646876671811329491240019142148470003928025152650951522551137212085308309720920837084767160381955530788294195937117174270903555694977541573455855272706485238336286223732312198363297376575583509988485278034934958252341719439028520891189739826942212691391734895392617422284683222676001977730815725418286255560191226149509193400398069220082511601
e = 65537
c = 57409340642199697226092726462125902829365412912837533290740565793154756339797830347343354949607684057867775958881302550495308541150352768836689510179391153839582390195260173373649946518009491065410969202558319602070764900384391992933392411023016984102461203899729497573388054247506816660066287342859599190389082273642706763946272306494415891056911787477362449950168200176787716318830941243717720369573279229689060419846376047892321724820465233251926871178444348785347609016191746240576406400246964585194545103138404537031250290312762672084602693246831548537647698498495659001014608297456758510235936915456080641436
===============================================================================
Press enter for next triplet: 
===============================================================================
N = 498760069003942288812115574260710424442367404655172890354991124579893245674957904495681372377544047539329398804991549774141567805940791682927567708626217912948566484221353589001586792653050162596654296995515960092999029120521881845542216302016118350267091072991775144858263512363111759254550309804040669077760615993316524879673157363232928157424601533315015409703637521739002463906213317900373164860826043267533629204535450639109997947166684232171381032769956071304812230030073317877697022779047132894150992260067011996982476925828029271300447251525527233915789896465094496817820722279118462370627882930781385203653
e = 65537
c = 34458000882165509486913531049428121830688643784375347134628647167225055975445577781498178766265370511543160690773509902875573881319928033055390352400322765282862069220915228762596896114901455926662765759453207111197684189922558671099508529741932085210811507986937318368526703274002271017899688204154610949402033738715026096589965966655591475701582692238971897668378133075886119602068306277319446238555575016771651721505112167787641245135297390254499907139507099731765232571266067981104128859547711270186790493043508426143287216235128267839573927462933395969082565968478444632239671303461613591809952053888711841232
===============================================================================
Press enter for next triplet: 
===============================================================================
N = 2177125236835451221076600012872205897937924492216360231049865057008247538191585929202058245122969290926450269144940258179643430658946423732062758043895801346095660430167875593584232667342116920096507654533113433811704197502774230413166206047978907985772998381368525572685222571421233819287050379373742495409238125219645225044952837908384389577427703503208574045890395961313421099009429878623905169871898089426310160400683554006407918349473392282382653293511706546898772278688356136600775154272233174235518370786510524349817315247387330186997299597248562745788780097875632084630671191123396062050527152083409088874471
e = 65537
c = 1266225194969770006632829588514882204471170477997848679494227445525528518422076784095884756204474402409693525408501874188615939062015802705327732416387036182616307014898803724144191180647133344504338769484440485838393831505739119526724527689071041067653220320965135094614206815805694231660851400700790371412687997625100968116480394270255286552558801248285839099520521035509631072580137712720672690724553166472755140390653690986772304865433468739894399894799158900215081441568019494179938009170265891084100182437546960977459805751283775934553181924328435092087846023576305058029383975943435073632084641972139569610993
===============================================================================
Press enter for next triplet: 
===============================================================================
N = 475888368873549508296152562051318214536074711191057832373993238997742506426412932417393402822496979961005248451429913864680427757391776566863246442866735822465911380330907138084508661796262323132739535537590572469663809169999532218313212073340830294063943741378977403573746350752236592198724160659952861249382341424750230433752426530828543219193492856493425441012641415450549713654485443722679726157996447775371315361303290677915054792321971250447082863738024284654547400851166304713541015051704028440295975634748453241103640000774284284687054583220551433113561079547787377600481212738242523232011388934899776929937
e = 65537
c = 53218860862913963766106414122899357005249948992260217842651442296405188120919016026712033985542552173886875438635923504209367139567559719294882202691511948790064277030685925595168384051310039811150325645468510539863158368714335762266701766004530549427440239754250586686910601221921141181049797580783080240157320486679653296554438960133680089551838907306709896173648785031343668816286729454385940457634229466275828388157944146438447738251823879972679934550833449660309480772491414532664813256043726954364354321142768699360777874153393615272814413801272083762607931724513023506595758293843704639614482524071236602965
===============================================================================
Press enter for next triplet: 
===============================================================================
N = 1949228730227416078108332256655665817494766463058264124070328014064996961545396258432139073970036335497665997177752311214331844282865600194974589399742948548474289950440638406634513946255084585210817077270886263706393490021406766640632072209307164839125834942842365794706201730647958517741893742623304979652088932123285215770756347811855777423048381923756712432939687967437180467135912663220101804198674339643963957621097817710993683268721211376369515131526065713375894459646928828909522231808919621116588864076550804490211000091722675782707103376787314434245603425400452198470579089752888239910149201656448431254841
e = 65537
c = 1090869646251286552183546793676291803216505888127735723993173024061077399909975713627547346502321190188119699246563119786359085350474475305556809232273301922437470668283651398655876432172553681200021755566470073624298790946013992699154554902156568791132937807493380354057292394306368498338787234476815991272847380004649699238075207820012332031158976055840708950003952254076163957412679102367690843868848721060044475891023624246213721548884338626314031602206547015347143534342575364929078460104963832008354280325428551245750229551305283565744871135425061694196404969175797278717989264263554859815516504842460097100021
===============================================================================
Press enter for next triplet: 
===============================================================================
N = 389423677752172546638605050015592297406068844980336443069076675116251558789395396037366743971556100368741911386638114138307395481178467468159215627048404204683392885514508486134102793634237908356290376667895094052293352082542508021986749641492971145630385260239295780686551914379651735190741983487462134242737108821364896895740219318310021218150612344306499737616171414880418402317864780349196443257639279783553897283369943786508978756095403243579914894861316927796269358075089749463519611664815983759422380815621928310229394609361508319247514569900077634955387424720068845205371309896486709968047519812050482180019
e = 65537
c = 17318079109171479516673200597118076853329975914016051904709775026567831017428339026371302150841584996271542302495380041344420205131635333643184258639093593148510217730935184838625876138605910876984301630644202290310804459731043091599543842894521314308843071566509101337139380485978405287433655195972675210150751947597568854453967720858272811484061521246839618268667920338198333210565567480343820973516139249693736097649363918551597095202307796596816289891405464885709031690254320276575310362642529987542713582542325475131494627292983719347327884818993192254198712048365594679202734948219591515739956905828315562474
===============================================================================
Press enter for next triplet: 
===============================================================================
N = 4034252804746859349435721346598511516262746922008401117136324564773776987577690024239505689528449877176194704544222553581640953641077283032939293759215050363712330182003908440744171429287358079805821938024982123540100921173321087815382547428656108582058759846476342798718513887899876404845677246070190203974142057008795501835072759938883219316503112446404012988161041123675265378943307222792463371529807674891789622275453121768327122509350025062920271585044589578989926176320505006426923895532563611535144213902381049748272975005278531935121446216912884328917645358962570550090289453023654791124613403854389610027001
e = 65537
c = 2735420892579189906357580174860500311474846196326863237030381500755000261349378304903916462523097461354378518014591412723485165637305280732975472515038963232608792674148117695529138096999399775644706307772879463098371253354231523233778706366712072304928821872388221491811936110820692118327880717151724390073972376172380292646737135095988326160987466858330196653052213839739358077843614469126748977288340760321611147108746840747599266039939389971778302810542349767407825233372489305053430886740825870362615282508288695883906005024422223738646590795481437203027081788574214460038667024364998099380482060643305782699065
===============================================================================
Press enter for next triplet: 
===============================================================================
N = 9601134098209752439667807392287427234931599891173390806937904871874177070167356696021092213671607448715124809438230071888351879734873562429001356560379952499813781761813091884975240340765352089036777762798548782399818045487729982577034238134127173914716239482258352077680759943224495157029462577839504474942055362241162257127356133717376589341261927702158651703000495730411773603812270126566583553568773447392339185213503636869959430356828437598235885995427994900904064793244131276372890792345753258050186453448081793659737028379339835658067080626274889710846768332349400546110233858802200204320990903847868008583403
e = 65537
c = 6272454696133625929735859641576980688987735157285043578133319411192743953878079647330114706529794528162624907244193930446297106458695116231333623645395710196592060338694460715301724028675450139851332257659613129952474015214635349483208681066660296017638027168002727571426035775786155588371327881248839111553753848081249639284979428408470825368427261685892644513452680835866550226917846862115252224937938074009051830237585486966453998608239765909278714079458482723460542237151833476437323350400553023548262240350209602971105330686284298465676329689101827201310584707680841918356165263146605892707461696907765222427635
===============================================================================
Press enter for next triplet: 
===============================================================================
N = 7756872070714680317058730898227431674920960577493848068755572298542101765598989029153956536451043740384618310479694288707036965879739239785692616953788606956687127263865059679494263713546473523013291051497897385229009188405441239701733279319005833348176611408385837311930305309158560775891905613599555067484618880462054709519655999463139320278307958501714854416235083295342317962137727786777441133312141146318270337793768738989672626131518056024190376465787746174722548727298820509416767706082839171744942960559285703792891072442334076047806370521666860223027233923089538777445316001542800629237225242940460023940747
e = 65537
c = 4535283376552593256138029256916252538479177080218358156582916671853349686833373808644880370837643529507831552702470939940523614404053078575875854568205620405107742174406816721228323966188703282663926579893803828266566451180343690556192064141299134561232498825255597955807883885854484395245615505056511099802925159036923379019728201314357263157142606989866393891582861162076533620150311266539434483403466513988962543315302278882214081973829916748786893456910249697297972986883399918993106193304330133329365932078238588405604382765870315338903388344453677383229247473014955864201219087910452884146783018575915484775830
===============================================================================
Press enter for next triplet: 
===============================================================================
N = 2063941788524753777249319686012927661018005134105544995757559589894601454262918480136898304113475719243518000824648346852935665176057264948103039636480675623975373544670585642329407515492001895512326942643633985796461791802413755874449108833942873296248408042824008353013921168494233694717005771241587863497952434968518315309925262174461755077783779285971591596473586883133175474340285843182251806852335637812584464989566969091770689249754352131715892693578756417975061579005129769048185088681964955222989361184137617537715004198046497507302305377441593810540340597654065345776403879862080224305563551670785261509589
e = 65537
c = 1151262513990509263706049620318991496650520832978330680280217031030941339787744594824053704548088321234513530271099820296751907135159577366296464649397910581400260210740547473978226210430432224668529175142709696205747616210470929784291521789621128686080595695766652735296116951897747391392938028439332374501217991042600062232658389324035758715320789383352520544519740238031483584190746047885437169532867405771569964313303545519947173995853630586661102128054051858015861662224710362511991298310362056599842316039869970810195708311985606869000900306011852483916866966691540229228939349500348378586944913758978312998700
===============================================================================
Press enter for next triplet: 
===============================================================================
N = 1033873181370656253499644887260316051752404325405685374302545829537534651241981141422028145690085141568922297717400314532751857425887505971045118399997989965518307374093059295707863170923892298791378751128408756182243067197804805350822919559714290658153437930597374839864421495700685660596639582083930344193453525372296177715709805889733230909443565404563631724114571268824916108796392988606586795202909866171952770661588653077742124455747125246441709420688836763423002691704892794897805265672972604992239434655030720854211411813167545770694933607122971011474075561178799861940780096369340321056455938755903129198269
e = 65537
c = 664662212487487320369650970860356438799903738889750417462963584165159996419309994458980889726859838695529555368798942589718026905167465682940709378956008053189534014449843823558043176837901545057150101505896341521578174832962784291385445880728822810275823076741639580441020186806033823695730236378941042683479501266407441498478460102599177758826576716184717514834567209261639680095551453945467385659456387992172863888606233784940275573617711856280533919355254733664260246062722731260311397484809208127555824931239875287209999155257785160813357837803469804143280444470316475824860821726540326211398453923003426256101
===============================================================================
Press enter for next triplet: 
COMPFEST12{Euclid_W0ulD_b_Pr0Ud_Ov_4l1_7h3sE_MetH_eXpeRt5_a39e7a}
COMPFEST12{Euclid_W0ulD_b_Pr0Ud_Ov_4l1_7h3sE_MetH_eXpeRt5_a39e7a}