#!/usr/bin/env python3 g = 2 p = 2353855297163603230718659874235969189211904801854831749272164556125452734594903161934794163403497762726605985627409234420965176613218858624400366466853770681834062810872998733968827992223178685800438220675248064587881077258421057484096470778462916510705650691145000008812988897851274637295629476960165825128891910793 A = 30068494220298681891330724690865821714005524540061986470484739235070782982875821399659951687122702703103707881496322805008910484300535488856317760253374747778591137899431437661178126794196697625682849937450966265318752778435469929326325997632296225043026449906879570022308070668814741550246868893784772044251768510 b = 2252298426168643058908675994457951125000150972241848576912471697630407791150123415344081881294633730616725212738161375429295138914772118107750191302567546774258844274932453145325172167340764005882111243473134993891638369747707408050760320040529699904616084248365714753162172475940998916650267854128138430013641052250 enc = "839a909cb0a7b588979bac80c09081c087acc291c1c696c2ca958e" shared = pow(A, b, p) enc_bytes = [int(enc[i:i+2], 16) for i in range(0, len(enc), 2)] flag = bytes([x ^ (shared % 256) for x in enc_bytes]) print(flag.decode())