def challenge(): # Define the curve p = 0xA15C4FB663A578D8B2496D3151A946119EE42695E18E13E90600192B1D0ABDBB6F787F90C8D102FF88E284DD4526F5F6B6C980BF88F1D0490714B67E8A2A2B77 a = 0x5E009506FCC7EFF573BC960D88638FE25E76A9B6C7CAEEA072A27DCD1FA46ABB15B7B6210CF90CABA982893EE2779669BAC06E267013486B22FF3E24ABAE2D42 b = 0x2CE7D1CA4493B0977F088F6D30D9241F8048FDEA112CC385B793BCE953998CAAE680864A7D3AA437EA3FFD1441CA3FB352B0B710BB3F053E980E503BE9A7FECE E = EllipticCurve(GF(p), [a, b]) # generator's public key G = E.point(( 0x39F15E024D44228FD11C58A71C312FD64167C7D249D5677DA0DFB4B9C3ED0F90701837A5E77B5A2B74433D7FBE027CD0C73B5AA7B300F7384521AF0DC283DC6D, 0x5F3636A89167A6FBB7B7D1AD97D11C70756835B5F1273E20C06D9E022D74648EC22A3F92C378196D137C3F2027A67381BE79E1C0D65CD9B61211A77A3842C8B2, )) # alice's public key A = E.point(( 0x5AA8B5CF3124C552881BA67C14C863BB2FF30D960FE41B61123D2025CDDDF0EA75E92D76326BE9FB09B9A32373FC278AC8D5CF5CA83B9E517CE347C6879BEF51, 0x2E3DDEC1B35930B1039351B2814252186B30CE27CE15EDA4351428868AE8593AB8C61C034BA10041CCE205D7F7102C292F30AC5F3D2A2C2F3A463D837DF070CD, )) # bob's public key B = E.point(( 0x7F0489E4EFE6905F039476DB54F9B6EAC654C780342169155344ABC5AC90167ADC6B8DABACEC643CBE420ABFFE9760CBC3E8A2B508D24779461C19B20E242A38, 0xDD04134E747354E5B9618D8CB3F60E03A74A709D4956641B234DAA8A65D43DF34E18D00A59C070801178D198E8905EF670118C15B0906D3A00A662D3A2736BF, )) # Ciphertext iv = "719700b2470525781cc844db1febd994" encrypted_flag = "335470f413c225b705db2e930b9d460d3947b3836059fb890b044e46cbb343f0" n = smart_attack(E, G, A, p, a, b) secret = (n * B).xy()[0] print(decrypt_flag(secret, iv, encrypted_flag))
def challenge(): # Define the curve p = 310717010502520989590157367261876774703 a = 2 b = 3 E = EllipticCurve(GF(p), [a, b]) # generator's public key G = E.point( ( 179210853392303317793440285562762725654, 105268671499942631758568591033409611165, ) ) # alice's public key A = E.point( ( 280810182131414898730378982766101210916, 291506490768054478159835604632710368904, ) ) # bob's public key B = E.point( ( 272640099140026426377756188075937988094, 51062462309521034358726608268084433317, ) ) # Ciphertext iv = "07e2628b590095a5e332d397b8a59aa7" encrypted_flag = "8220b7c47b36777a737f5ef9caa2814cf20c1c1ef496ec21\ a9b4833da24a008d0870d3ac3a6ad80065c138a2ed6136af" n = pohlig_hellman(G, A, E) secret = (n * B).xy()[0] print(decrypt_flag(secret, iv, encrypted_flag))