
共模攻击
直接脚本即可
- import libnum
- import gmpy2
-
- import random
- random.seed(123456)
-
- e1 = random.randint(100000000, 999999999)
- print(e1)
- e2 = 65537
- n = 7265521127830448713067411832186939510560957540642195787738901620268897564963900603849624938868472135068795683478994264434459545615489055678687748127470957
- c1=3315026215410356401822612597933850774333471554653501609476726308255829187036771889305156951657972976515685121382853979526632479380900600042319433533497363
- c2=1188105647021006315444157379624581671965264301631019818847700108837497109352704297426176854648450245702004723738154094931880004264638539450721642553435120
- # s1=gmpy2.invert(e1,e2)
- # s2=gmpy2.invert(e2,e1)
- #使用拓展的欧几里得算法计算出s1,s2的数值
- r, s1, s2 = gmpy2.gcdext(e1, e2)
- #根据推导计算出明文m
- m = (pow(c1, s1, n) * pow(c2, s2, n)) % n
- #计算16进制flag
- #rint(hex(m))
- #转换为字符串的flag
- print(libnum.n2s(int(m)))
这里使用的是python3.10的环境