題目信息
提供的文件
flag.enc
看后綴enc,分析是一個通過openssl加密后生成的文件
pubkey.pem
應該是一個公鑰信息文件
打開pubkey.pem文件
這里我使用kali系統,因為kali系統自帶了openssl
- 先進入openssl
- 輸入 rsa -pubin -text -modulus -in warmup -in pubkey.pem 查看信息
Exponent:指的是RSA中的e
Modulus:指的是N,即pq相乘
對Modulus的處理
先將16進制轉為10進制,接着在線質因數分解
現在已得到的信息:
p=275127860351348928173285174381581152299
q=319576316814478949870590164193048041239
e=65537
生成private.pem私鑰文件
這里使用個工具 rsatool.py 可以通過p、q、e計算d,並生成pem文件
不過里面需要一些模塊,對應的通過pip進行安裝即可
由於kali2020內置了python2和3,這里我使用了如下命令:
python3 -m pip install gmpy
安裝好需要的模塊后輸入命令:
python rsatool.py -f PEM -o private.pem -p 275127860351348928173285174381581152299 -q 319576316814478949870590164193048041239 -e 65537
即可生成private.pem文件
解密flag.enc文件
輸入命令:
openssl rsautl -decrypt -in flag.enc -inkey private.pem
即可解密出