from sympy import mod_inversefrom Crypto.Util.number import *def decrypt(c, p, k, D): m = 0 B = 1 C = pow(c, (p - 1) // (2**k), p) for j in range(1, k): z = pow(C, 2**(k-j), p) if z != 1: m += B C = (C * D) % p B <<= 1 # B = 2 * B D = (D * D) % p if C != 1: m += B return mq = 863327174253852394776516978368858092781662547p = 628729403897154553626034231171921094272614401n = 542799179636839492268900255776759322356188435185061417388485378278779491236741777034539347y = 304439269593920283890993394966761083993573819485737741439790516965458877720153847056020690k = 79k = 79D = pow(y, -(p - 1) // 2**k, p) print(D)cs = [ 302425991290493703631236053387822220993687940015503176763298104925896002167283079926671604, 439984254328026142169547867847928383533091717170996198781543139431283836994276036750935235, 373508223748617252014658136131733110314734961216630099592116517373981480752966721942060039, 246328010831179104162852852153964748882971698116964204135222670606477985487691371234998588, 351248523787623958259846173184063420603640595997008994436503031978051069643436052471484545]decrypted_messages = [decrypt(ci, p, k, D) for ci in cs]for i, m in enumerate(decrypted_messages): print(f"Decrypted message {i}: {m}") print(long_to_bytes(m))# DASCTF{go0_j06!let1sm0v31n_t0_th3r_chanlenges~>_<}