当前位置:网站首页>【zer0pts CTF 2022】 Anti-Fermat
【zer0pts CTF 2022】 Anti-Fermat
2022-07-27 23:53:00 【[email protected]】
1. subject
from Crypto.Util.number import isPrime, getStrongPrime
from gmpy import next_prime
from secret import flag
# Anti-Fermat Key Generation
p = getStrongPrime(1024)
q = next_prime(p ^ ((1<<1024)-1))
n = p * q
e = 65537
# Encryption
m = int.from_bytes(flag, 'big')
assert m < n
c = pow(m, e, n)
print('n = {}'.format(hex(n)))
print('c = {}'.format(hex(c)))
#n = 0x1ffc7dc6b9667b0dcd00d6ae92fb34ed0f3d84285364c73fbf6a572c9081931be0b0610464152de7e0468ca7452c738611656f1f9217a944e64ca2b3a89d889ffc06e6503cfec3ccb491e9b6176ec468687bf4763c6591f89e750bf1e4f9d6855752c19de4289d1a7cea33b077bdcda3c84f6f3762dc9d96d2853f94cc688b3c9d8e67386a147524a2b23b1092f0be1aa286f2aa13aafba62604435acbaa79f4e53dea93ae8a22655287f4d2fa95269877991c57da6fdeeb3d46270cd69b6bfa537bfd14c926cf39b94d0f06228313d21ec6be2311f526e6515069dbb1b06fe3cf1f62c0962da2bc98fa4808c201e4efe7a252f9f823e710d6ad2fb974949751
#c = 0x60160bfed79384048d0d46b807322e65c037fa90fac9fd08b512a3931b6dca2a745443a9b90de2fa47aaf8a250287e34563e6b1a6761dc0ccb99cb9d67ae1c9f49699651eafb71a74b097fc0def77cf287010f1e7bd614dccfb411cdccbb84c60830e515c05481769bd95e656d839337d430db66abcd3a869c6348616b78d06eb903f8abd121c851696bd4cb2a1a40a07eea17c4e33c6a1beafb79d881d595472ab6ce3c61d6d62c4ef6fa8903149435c844a3fab9286d212da72b2548f087e37105f4657d5a946afd12b1822ceb99c3b407bb40e21163c1466d116d67c16a2a3a79e5cc9d1f6a1054d6be6731e3cd19abbd9e9b23309f87bfe51a822410a622. Reappear
The key to see p,q How to generate ,p Is random 1024 Bitprime number ,q = next_prime(p ^ ((1<<1024)-1)).
1<<1024-1=2**1024-1 Into 2 Hexadecimal is 1024 individual 1, Because of a binary XOR 1 Is to take its inverse , It means 1 become 0,0 become 1. therefore p^2**1024-1 Result x It's a p Every bit of is reversed , therefore x+p=2**1024-1.
because q yes x So q=x+r, Take it in p+q=2**1024-1+r, therefore p+q It's about equal to 2**1024.
And because of
hold p+q Take it in
therefore 4n=2**2048-(p-q)**2,p-q=
, because p+q=
, therefore p=
Then blast back p That's it .
import gmpy2
import sympy
import libnum
n = int(0x1ffc7dc6b9667b0dcd00d6ae92fb34ed0f3d84285364c73fbf6a572c9081931be0b0610464152de7e0468ca7452c738611656f1f9217a944e64ca2b3a89d889ffc06e6503cfec3ccb491e9b6176ec468687bf4763c6591f89e750bf1e4f9d6855752c19de4289d1a7cea33b077bdcda3c84f6f3762dc9d96d2853f94cc688b3c9d8e67386a147524a2b23b1092f0be1aa286f2aa13aafba62604435acbaa79f4e53dea93ae8a22655287f4d2fa95269877991c57da6fdeeb3d46270cd69b6bfa537bfd14c926cf39b94d0f06228313d21ec6be2311f526e6515069dbb1b06fe3cf1f62c0962da2bc98fa4808c201e4efe7a252f9f823e710d6ad2fb974949751)
c = int(0x60160bfed79384048d0d46b807322e65c037fa90fac9fd08b512a3931b6dca2a745443a9b90de2fa47aaf8a250287e34563e6b1a6761dc0ccb99cb9d67ae1c9f49699651eafb71a74b097fc0def77cf287010f1e7bd614dccfb411cdccbb84c60830e515c05481769bd95e656d839337d430db66abcd3a869c6348616b78d06eb903f8abd121c851696bd4cb2a1a40a07eea17c4e33c6a1beafb79d881d595472ab6ce3c61d6d62c4ef6fa8903149435c844a3fab9286d212da72b2548f087e37105f4657d5a946afd12b1822ceb99c3b407bb40e21163c1466d116d67c16a2a3a79e5cc9d1f6a1054d6be6731e3cd19abbd9e9b23309f87bfe51a822410a62)
e = 65537
p=(gmpy2.iroot(pow(2,2048)-4*n,2)[0]+pow(2,1024))//2
# p=(2**1024+gmpy2.iroot((2**1024)**2-4*n,2)[0])//2
p=int(p)
while(1):
p=sympy.nextprime(p)
if(n%p==0):
print(p)
break
q=n//p
phi=(p-1)*(q-1)
d=gmpy2.invert(e,phi)
m=pow(c,d,n)
flag=libnum.n2s(int(m))
print(flag)
# b'Good job! Here is the flag:\n+-----------------------------------------------------------+\n| zer0pts{F3rm4t,y0ur_m3th0d_n0_l0ng3r_w0rks.y0u_4r3_f1r3d} |\n+-----------------------------------------------------------+'
版权声明
本文为[[email protected]]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/208/202207272106550047.html
边栏推荐
- 尚硅谷尚品项目汇笔记(一)
- CaEGCN: Cross-Attention Fusion based Enhanced Graph Convolutional Network for Clustering 2021
- BUUCTF-RSA roll
- TFRecord的Shuffle、划分和读取
- In 2019, the world's top ten semiconductor manufacturers: Intel returned to the first place, and apple rose sharply against the trend
- 【JS 逆向百例】某公共资源交易网,公告 URL 参数逆向分析
- [RoarCTF2019]RSA
- File&递归14.1
- Solve 5g pain points, Meizu 17 smart 5g fast and stable technology release
- [NPUCTF2020]EzRSA
猜你喜欢

【JS 逆向百例】某公共资源交易网,公告 URL 参数逆向分析

BUUCTF-RSA4

29.学习Highcharts 使用百分比的堆叠柱形图

【C语言】通讯录(动态版本)
![[C language] address book (dynamic version)](/img/29/3df19c187bee31ee4671e12d7cc7ff.jpg)
[C language] address book (dynamic version)

2022 International Conference on civil, building and Environmental Engineering (iccaee 2022)

基于mediapipe的姿态识别和简单行为识别

Construction and application of super large scale knowledge map of ants

The technology of applet container is very promising, which can greatly improve the efficiency of mobile R & D

UE4官方AEC蓝图案例课程学习笔记
随机推荐
Put cloudflare on the website (take Tencent cloud as an example)
Design and implementation of spark offline development framework
基于mediapipe的姿态识别和简单行为识别
实现按照序号命名的txt文件由后往前递补重命名文件
What is the difference between concurrency and parallelism?
Solve 5g pain points, Meizu 17 smart 5g fast and stable technology release
字符流学习14.3
Reinforcement learning - pytorch realizes advantage actor critical (A2C)
C#委托用法--控制台项目,通过委托实现事件
Latex常用总结(2):输入矩阵(输入矩阵、对角阵、方程组等)
硬布线控制器的特点:
The total investment is 60billion! Foxconn semiconductor high-end package test project officially settled in Qingdao
JUC toolkit learning
js数组复制速度测试220320
基于原生js实现今日新闻网站
Redis distributed lock
BUUCTF-[BJDCTF2020]RSA1
76000 people shut down! Toshiba announced the closure of all factories in Japan
Technical certification | Tupo software and Huawei cloud create a new situation of win-win cooperation
BUUCTF-RSA
hold p+q Take it in 
, because p+q=
, therefore p=