因为工作原因,所以停滞了一个月没有更新,哇哈哈哈,我终于又回来啦!!现在就要开始认真学习了。最近不仅在学习网络安全知识,还在准备软考【虽然很多人说没有用的这个证】,还是得去考一下。
下面进入正题,继续加密部分的题目,还剩2道题。
这道题提供了一个txt文件,话不多说,直接打开。
N : 460657813884289609896372056585544172485318117026246263899744329237492701820627219556007788200590119136173895989001382151536006853823326382892363143604314518686388786002989248800814861248595075326277099645338694977097459168530898776007293695728101976069423971696524237755227187061418202849911479124793990722597e : 354611102441307572056572181827925899198345350228753730931089393275463916544456626894245415096107834465778409532373187125318554614722599301791528916212839368121066035541008808261534500586023652767712271625785204280964688004680328300124849680477105302519377370092578107827116821391826210972320377614967547827619enc : 38230991316229399651823567590692301060044620412191737764632384680546256228451518238842965221394711848337832459443844446889468362154188214840736744657885858943810177675871991111466653158257191139605699916347308294995664530280816850482740530602254559123759121106338359220242637775919026933563326069449424391192
一堆数字,不过已经标注出了e啊,n啊这种字眼,并且题目就是rsa,很明显的要用rsa算法了。
查询百度:
看似复杂,其实只是需要小小的编个程...小小的
这里已经给出了密文,只需要用最后一个公式即可解出明文,不过问题在于d的值,需要用n和e进行推算。
根据大神提示使用的工具:https://github.com/Ganapati/RsaCtfTool
按照Kali系统安装步骤进行了安装,
现在直接用工具测试出p、q的值,
首先生成公钥,也就是知道了n和e的值,需要知道fi(n)的值:
./RsaCtfTool.py --createpub -n 460657813884289609896372056585544172485318117026246263899744329237492701820627219556007788200590119136173895989001382151536006853823326382892363143604314518686388786002989248800814861248595075326277099645338694977097459168530898776007293695728101976069423971696524237755227187061418202849911479124793990722597 -e 354611102441307572056572181827925899198345350228753730931089393275463916544456626894245415096107834465778409532373187125318554614722599301791528916212839368121066035541008808261534500586023652767712271625785204280964688004680328300124849680477105302519377370092578107827116821391826210972320377614967547827619>test.pem
这个里面就是-n后面放入n的值,-e后面放入e的值,并放入了test.pem文件中。
生成公钥之后就需要推理出私钥d的值:
./RsaCtfTool.py --publickey test.pem --private > test.key
因为我这里出现了无法保存的现象,不知道其他小伙伴怎么样的,安装了几个加解密的库也没有用。
卡住之后就只能手动保存下来,进行读取展示了。
./RsaCtfTool.py --key test.key --dumpkey
d,p,q全部都计算出来了。
n: 460657813884289609896372056585544172485318117026246263899744329237492701820627219556007788200590119136173895989001382151536006853823326382892363143604314518686388786002989248800814861248595075326277099645338694977097459168530898776007293695728101976069423971696524237755227187061418202849911479124793990722597e: 354611102441307572056572181827925899198345350228753730931089393275463916544456626894245415096107834465778409532373187125318554614722599301791528916212839368121066035541008808261534500586023652767712271625785204280964688004680328300124849680477105302519377370092578107827116821391826210972320377614967547827619d: 8264667972294275017293339772371783322168822149471976834221082393409363691895p: 15991846970993213322072626901560749932686325766403404864023341810735319249066370916090640926219079368845510444031400322229147771682961132420481897362843199q: 28805791771260259486856902729020438686670354441296247148207862836064657849735343618207098163901787287368569768472521344635567334299356760080507454640207003
按照大神的算法,直接按照RSA算法公式进行编程。
引用代码
https://blog.csdn.net/weixin_43833642/article/details/103697906
import gmpy2from libnum import n2sn = '460657813884289609896372056585544172485318117026246263899744329237492701820627219556007788200590119136173895989001382151536006853823326382892363143604314518686388786002989248800814861248595075326277099645338694977097459168530898776007293695728101976069423971696524237755227187061418202849911479124793990722597'e = '354611102441307572056572181827925899198345350228753730931089393275463916544456626894245415096107834465778409532373187125318554614722599301791528916212839368121066035541008808261534500586023652767712271625785204280964688004680328300124849680477105302519377370092578107827116821391826210972320377614967547827619'enc = '38230991316229399651823567590692301060044620412191737764632384680546256228451518238842965221394711848337832459443844446889468362154188214840736744657885858943810177675871991111466653158257191139605699916347308294995664530280816850482740530602254559123759121106338359220242637775919026933563326069449424391192'p = '15991846970993213322072626901560749932686325766403404864023341810735319249066370916090640926219079368845510444031400322229147771682961132420481897362843199'q = '28805791771260259486856902729020438686670354441296247148207862836064657849735343618207098163901787287368569768472521344635567334299356760080507454640207003'd = '8264667972294275017293339772371783322168822149471976834221082393409363691895'n1 = gmpy2.mpz(n)enc1 = gmpy2.mpz(enc)d1 = gmpy2.mpz(d)r = gmpy2.powmod(enc1, d1, n1)s = n2s(r)print(s)
运算出结果,
主要是搭建环境花费了一些功夫,
flag{Wien3r_4tt@ck_1s_3AsY}
这道题就是加密的硬性题目了,要求平时对DES、RSA等主流加密算法的熟练以及加解密工具的应用,还需要多多积累。