【BUUCTF】Crypto题解

MD5

题目:e00cf25ad42683b3df678c61f42c6bda
考点:MD5加密

  1. 题目给的是md5加密后的信息,我们直接MD5解密就可
    解密网站:md5在线解密破解,md5解密加密 (cmd5.com)
    在这里插入图片描述
    flag{admin1}

一眼就解密

下面的字符串解密后便能获得flag:ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30= 注意:得到的 flag 请包上 flag{} 提交
考点:base64解密

最后有个“=”符号,一看就是base64,解码就行。
解密网站:CTF在线工具-在线base编码

在这里插入图片描述

Url编码

题目:%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d
考点:url编码

题目所给的是url编码,特点是%数字%数字,使用url解码
CTF在线工具-在线URL编码|URL解码 (hiencode.com)
image-20220726113734887

看我回旋踢

题目:synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}
考点:莫斯代码

看到****{ } 的结构很容易想到是凯撒加密,应该是flag{ }。从s-f推一下,因此位移量也出来了13。
CTF在线工具-在线凯撒密码加密|在线凯撒密码解密|凯撒密码算法|Caesar Cipher (hiencode.com)

image-20220726114044263

摩丝

题目:… .-… — …- . -.-- — …-

莫斯代码的特点是点和横线搭配,直接进行莫斯代码解密CTF在线工具-在线莫尔斯电码编码|在线莫尔斯电码解码|莫尔斯电码算法|Morse (hiencode.com)
解出来是iloveyou,但是不对,加上flag{ }还是不对,
注意:摩斯电码只有大写,需要将它改成大写

password

题目:

姓名:张三
生日:19900315
key格式为key{xxxxxxxxxx}

生日八位,姓名两位,答案十位,很容易猜到是zs19900315

变异凯撒

加密密文:afZ_r9VYfScOeO_UL^RWUc
格式:flag{ }
考点:凯撒加密变式

恺撒密码表是一种代换密码。通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。

  1. 由于密文中有下划线和阿拉伯数字,所以推测应该不是用的字母表进行的替换加密,很有可能是用的ASCII码表。由题目可知其格式为flag{ },所以我们可以从flagafZ_之间的对应关系找出规律

image-20220726115105125 2. 可以看出其偏移量是对每个字符:从第一个字符的偏移量为5,第二个字符的偏移量为6……第n个字符的偏移量为4+n。偏移量依次递增。 下面我们写脚本进行解密,

public class Q123 {
    
    

     public static void main(String[] args) {
    
    
         String ciphertext = "afZ_r9VYfScOeO_UL^RWUc";
         char[] plaintext = new char[ciphertext.length()];
         for(int i = 0; i < ciphertext.length(); i++){
    
     //注意i是从0开始的,所以是5+i
             plaintext[i] = (char)(((int)ciphertext.charAt(i) + 5 + i) % 128);
         }
         for (char i: plaintext) {
    
    
             System.out.print(i);
         }
     }
}

得到flag{Caesar_variation}

Quoted-printable

题目:=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6
考点:Quoted-printable加密

Quoted-printable加密,解出答案为flag{那你也很棒哦}
CTF在线工具-在线Quoted-printable编码

Rabbit

题目:U2FsdGVkX1/+ydnDPowGbjjJXhZxm2MP2AgI
考点:rabbit加密

Rabbit加密是什么 Rabbit 是一种高速流密码,于 2003 年在 FSE 研讨会上首次提出。 Rabbit 使用一个 128 位密钥和一个 64 位初始化向量。 该加密算法的核心组件是一个位流生成器,该流生成器每次迭代都会加密 128 个消息位。
在这里插入图片描述

在线Rabbit加密 | Rabbit解密- 在线工具 (sojson.com)

篱笆墙的影子

星星还是那颗星星哟 月亮还是那个月亮 山也还是那座山哟 梁也还是那道梁 碾子是碾子 缸是缸哟 爹是爹来娘是娘 麻油灯呵还吱吱响 点的还是那么丁点亮 哦哦 注意:得到的 flag 请包上 flag{} 提交

题目:felhaagv{ewtehtehfilnakgw}
考点:栅栏密码

简单来说,栅栏密码就是把一个明文(去掉空格)分成n组,每组m个,然后一定的排序方法来将这些字符重新组合。通过m的大小称其为m栏栅 栏密码,比较常见的m取2,即2栏栅栏密码。

这是栅栏密码,解密得到:flag{wethinkwehavetheflag}
栅栏密码解密

RSA

注意:得到的 flag 请 将 noxCTF 替换为 flag ,格式为 flag{} 提交。

题目:在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17 求解出d作为flga提交
考点:RSA加密

直接解出rsa就行,
RSA在线加密/在线解密

Alice与Bob

密码学历史中,有两位知名的杰出人物,Alice和Bob。他们的爱情经过置换和轮加密也难以混淆,即使是没有身份认证也可以知根知底。就像在数学王国中的素数一样,孤傲又热情。下面是一个大整数:98554799767,请分解为两个素数,分解后,小的放前面,大的放后面,合成一个新的数字,进行md5的32位小写哈希,提交答案。 注意:得到的 flag 请包上 flag{} 提交
考点:大数分解
1.素数分解
在线素数分解
98554799767分解为 101999 · 966233
2. 小的放前面,大的放后面,合成一个新的数字,进行md5的32位小写哈希
MD5
d450209323a847c8d01c6be47c81811a
得到flag{d450209323a847c8d01c6be47c81811a}

丢失的MD5

考点:md5

import hashlib   
for i in range(32,127):
    for j in range(32,127):
        for k in range(32,127):
            m=hashlib.md5()
            m.update(('TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM').encode("utf8"))
            des=m.hexdigest()
            if 'e9032' in des and 'da' in des and '911513' in des:
                print(des);

题目给了程序我们只要修改运行即可,自己运行一下试试。
得到e9032994dabac08080091151380478a2

RSA

Math is cool! Use the RSA algorithm to decode the secret message, c, p, q, and e are parameters for the RSA algorithm.

p = 9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q = 11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e = 65537
c = 83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034

Use RSA to find the secret message

已知n和e,拿到flag需要求出d再计算
这里想知道RSA更详细的解析和攻略的,移步BUUCTF RSA(一)

结果:47bf28da384590448e0b0d23909a25a4

大帝的密码武器

公元前一百年,在罗马出生了一位对世界影响巨大的人物,他生前是罗马三巨头之一。他率先使用了一种简单的加密函,因此这种加密方法以他的名字命名。
以下密文被解开后可以获得一个有意义的单词:FRPHEVGL
你可以用这个相同的加密向量加密附件中的密文,作为答案进行提交。

密文ComeChina
考点:凯撒加密

使用凯撒在线解密工具对它进行依次的移位即可,既可以一个一个试,也可以自己写一个python脚本去实现。

str1 = 'FRPHEVGL'
str2 = str1.lower()                                 #转换为小写方便识别
num = 1                                             #偏移量
for i in range(26):
    print("{:<2d}".format(num),end = ' ')
    for temp in str2:
        if(ord(temp)+num > ord('z')):               #如果超出'z',需要重新映射会a~z这26个字母上
            print(chr(ord(temp)+num-26),end = '')
        else:
            print(chr(ord(temp)+num),end = '')
    num += 1
    print('')

在这里插入图片描述
由此我们知道偏移量为13,那么现在就对我们的密文ComeChina进行13位的凯撒解密就行了。
flag{PbzrPuvan}

Windows系统密码

  1. 我们使用hex编辑器打开文件.hash,可以发现如下内容 image-20220726142625300

  2. 由于文件后缀是.hash,我们想到用MD5解码,将每一串都带进MD5在线解密中,可以试出
    image-20220726142639382
    得到flag{good-luck}

信息化时代的步伐

也许中国可以早早进入信息化时代,但是被清政府拒绝了。附件中是数十年后一位伟人说的话的密文。请翻译出明文(答案为一串中文!) 注意:得到的 flag 请包上 flag{} 提交

606046152623600817831216121621196386
考点:电报加密

题目内容的密文竟然只由数字组成,经过查询是中文电码。中文电码表采用四位阿拉伯数字作代号,从0001到9999按四位数顺序排列,用四位数字表示最多一万个汉字、字母和符号。汉字先按部首,后按笔划排列。字母和符号放到电码表的最尾。后来因一万个汉字不能应付户籍管理的要求,又有第二字面汉字的出现。在香港,两个字面都采用同一编码,由输入员人手选择字面;在台湾,第二字面的汉字在开首补上“1”字,变成5个数字的编码。 然后我们可以查一下中文电码在线解密工具然后对这一串中文电码进行解密就OK了。
在这里插入图片描述
flag{计算机要从娃娃抓起}

凯撒?替换?呵呵!

题目:MTHJ{CUBCGXGUGXWREXIPOYAOEYFIGXWRXCHTKHFCOHCFDUCGTXZOHIXOEOWMEHZO}
考点:凯撒加密+替换密码组合

我们首先使用凯撒加密,前四个字母得到的是FMAC而非想要的FLAG,FMAC四个字母之间也无规律可循,故尝试题目中提到的替换image-20220726143553924

quipqiup - cryptoquip and cryptogram solver在线解密网站,quipqiup是Edwin Olson的快速和自动化的密码求解器。它可以解决报纸上常见的简单替换密码
image-20220726143743333

这题就是凯撒+简单替换

萌萌哒的八戒

萌萌哒的八戒原来曾经是猪村的村长,从远古时期,猪村就有一种神秘的代码。请从附件中找出代码,看看萌萌哒的猪八戒到底想说啥 注意:得到的 flag 请包上 flag{} 提交
考点:猪圈密码

图片下面有这样一串符号

image-20220726144746539

经过查询,这是典型的猪圈密码,我们对应解出就好CTF在线工具-在线猪圈密码加密|在线猪圈密码解密|猪圈密码算法|Pigpen Cipher (hiencode.com)

传统知识+古典密码

1. 甲子 2.乙丑 3.丙寅 4.丁卯 5.戊辰 6.己巳 7.庚午 8.辛未 9.壬申 10.癸酉
11.甲戌 12.乙亥 13.丙子 14.丁丑 15.戊寅 16.己卯 17.庚辰 18.辛巳 19.壬午 20.癸未
21.甲申 22.乙酉 23.丙戌 24.丁亥 25.戊子 26.己丑 27.庚寅 28.辛卯 29.壬辰 30.癸巳
31.甲午 32.乙未 33.丙申 34.丁酉 35.戊戌 36.己亥 37.庚子 38.辛丑 39.壬寅 40.癸卯
41.甲辰 42.乙巳 43.丙午 44.丁未 45.戊申 46.己酉 47.庚戌 48.辛亥 49.壬子 50.癸丑
51.甲寅 52.乙卯 53.丙辰 54.丁巳 55.戊午 56.己未 57.庚申 58.辛酉 59.壬戌 60.癸亥

写出题中所给组合的数字编码

28 30 23 8 17 10 16 30

加上一个甲子(60)

88 90 93 68 77 70 76 90

转换成ASCII字母:XZSDMFLZ

然后题目讲了除了传统知识外,还有一种古典加密方式。那这种没有其他密钥的古典加密,很容易想到栅栏和凯撒。但栅栏只是顺序改变,里面的字母不会变。这里面的字母这么拼都感觉不像一个单词,所以用凯撒解密,最后找到一个比较像单词的答案SUNYHAGU。

RSA1

了解RSA有关的题解参考:BUUCTF RSA(一)路由()生的博客-CSDN博客_buuctf rsa
image-20220726151424940

涉及到RSA算法

image-20220726151447584

p = 8637633767257008567099653486541091171320491509433615447539162437911244175885667806398411790524083553445158113502227745206205327690939504032994699902053229 q = 12640674973996472769176047937170883420927050821480010581593137135372473880595613737337630629752577346147039284030082593490776630572584959954205336880228469 dp = 6500795702216834621109042351193261530650043841056252930930949663358625016881832840728066026150264693076109354874099841380454881716097778307268116910582929 dq = 783472263673553449019532580386470672380574033551303889137911760438881683674556098098256795673512201963002175438762767516968043599582527539160811120550041 c = 24722305403887382073567316467649080662631552905960229399079107995602154418176056335800638887527614164073530437657085079676157350205351945222989351316076486573599576041978339872265925062764318536089007310270278526159678937431903862892400747915525118983959970607934142974736675784325993445942031372107342103852

import gmpy2
I = gmpy2.invert(q,p)
mp = pow(c,dp,p)
mq = pow(c,dq,q)               #求幂取模运算
m = (((mp-mq)*I)%p)*q+mq       #求明文公式
print(hex(m))          #转为十六进制
print(bytes.fromhex(hex(m)[2:]))       #16进制转文本

得到答案

0x6e6f784354467b57333163306d335f37305f4368316e343730776e7d b’noxCTF{W31c0m3_70_Ch1n470wn}’

权限获得第一步

你猜这是什么东西,记得破解后把其中的密码给我。答案为非常规形式。 注意:得到的 flag 请包上 flag{} 提交

Administrator:500:806EDC27AA52E314AAD3B435B51404EE:F4AD50F57683D4260DFD48AA351A17A8:::

这个密码的形式一看就是MD5加密,我们只对F4AD50F57683D4260DFD48AA351A17A8进行解密

image-20220726153224072

old-fashion

Os drnuzearyuwn, y jtkjzoztzoes douwlr oj y ilzwex eq lsdexosa kn pwodw tsozj eq ufyoszlbz yrl rlufydlx pozw douwlrzlbz, ydderxosa ze y rlatfyr jnjzli; mjy gfbmw vla xy wbfnsy symmyew (mjy vrwm qrvvrf), hlbew rd symmyew, mebhsymw rd symmyew, vbomgeyw rd mjy lxrzy, lfk wr dremj. Mjy eyqybzye kyqbhjyew mjy myom xa hyedrevbfn lf bfzyewy wgxwmbmgmbrf. Wr mjy dsln bw f1_2jyf-k3_jg1-vb-vl_l

这题单词长度错落有致,考虑凯撒,栅栏,简单替换。
我们在quipqiup - cryptoquip and cryptogram solver上尝试得到flag is n1_2hen-d3_hu1-mi-ma_a

世上无难事

以下是某国现任总统外发的一段指令,经过一种奇异的加密方式,毫无规律,看来只能分析了。请将这段语句还原成通顺语句,并从中找到key作为答案提交,答案是32位,包含小写字母。 注意:得到的 flag 请包上 flag{} 提交

打开附件是一串字符
VIZZB IFIUOJBWO NVXAP OBC XZZ UKHVN IFIUOJBWO HB XVIXW XAW VXFI X QIXN VBD KQ IFIUOJBWO WBKAH NBWXO VBD XJBCN NKG QLKEIU DI XUI VIUI DKNV QNCWIANQ XN DXPIMKIZW VKHV QEVBBZ KA XUZKAHNBA FKUHKAKX XAW DI VXFI HBN QNCWIANQ NCAKAH KA MUBG XZZ XEUBQQ XGIUKEX MUBG PKAWIUHXUNIA NVUBCHV 12NV HUXWI XAW DI XUI SCQN QB HZXW NVXN XZZ EBCZW SBKA CQ NBWXO XAW DI DXAN NB NVXAP DXPIMKIZW MBU JIKAH QCEV XA BCNQNXAWKAH VBQN HKFI OBCUQIZFIQ X JKH UBCAW BM XLLZXCQI XAW NVI PIO KQ 640I11012805M211J0XJ24MM02X1IW09

单词错落有致,我们考虑简单替换

image-20220726154344571

得到:THE KEY IS 640E11012805F211B0AB24FF02A1ED09,可知key为640E11012805F211B0AB24FF02A1ED09,又因为题目中提示为小写,转化大小写得到:640e11012805f211b0ab24ff02a1ed09

RSA3

打开文件发现:

c1=22322035275663237041646893770451933509324701913484303338076210603542612758956262869640822486470121149424485571361007421293675516338822195280313794991136048140918842471219840263536338886250492682739436410013436651161720725855484866690084788721349555662019879081501113222996123305533009325964377798892703161521852805956811219563883312896330156298621674684353919547558127920925706842808914762199011054955816534977675267395009575347820387073483928425066536361482774892370969520740304287456555508933372782327506569010772537497541764311429052216291198932092617792645253901478910801592878203564861118912045464959832566051361
n=22708078815885011462462049064339185898712439277226831073457888403129378547350292420267016551819052430779004755846649044001024141485283286483130702616057274698473611149508798869706347501931583117632710700787228016480127677393649929530416598686027354216422565934459015161927613607902831542857977859612596282353679327773303727004407262197231586324599181983572622404590354084541788062262164510140605868122410388090174420147752408554129789760902300898046273909007852818474030770699647647363015102118956737673941354217692696044969695308506436573142565573487583507037356944848039864382339216266670673567488871508925311154801
e1=11187289
c2=18702010045187015556548691642394982835669262147230212731309938675226458555210425972429418449273410535387985931036711854265623905066805665751803269106880746769003478900791099590239513925449748814075904017471585572848473556490565450062664706449128415834787961947266259789785962922238701134079720414228414066193071495304612341052987455615930023536823801499269773357186087452747500840640419365011554421183037505653461286732740983702740822671148045619497667184586123657285604061875653909567822328914065337797733444640351518775487649819978262363617265797982843179630888729407238496650987720428708217115257989007867331698397
e2=9647291

共模攻击 前提:有两组及以上的RSA加密过程,而且其中两次的m和n都是相同的,那么就可以在不计算出d而直接计算出m的值。

了解RSA有关的题解参考:BUUCTF RSA(一)路由()生的博客-CSDN博客_buuctf rsa

#共模攻击
import libnum
e1 = 11187289
c1=22322035275663237041646893770451933509324701913484303338076210603542612758956262869640822486470121149424485571361007421293675516338822195280313794991136048140918842471219840263536338886250492682739436410013436651161720725855484866690084788721349555662019879081501113222996123305533009325964377798892703161521852805956811219563883312896330156298621674684353919547558127920925706842808914762199011054955816534977675267395009575347820387073483928425066536361482774892370969520740304287456555508933372782327506569010772537497541764311429052216291198932092617792645253901478910801592878203564861118912045464959832566051361
e2 = 9647291
c2=18702010045187015556548691642394982835669262147230212731309938675226458555210425972429418449273410535387985931036711854265623905066805665751803269106880746769003478900791099590239513925449748814075904017471585572848473556490565450062664706449128415834787961947266259789785962922238701134079720414228414066193071495304612341052987455615930023536823801499269773357186087452747500840640419365011554421183037505653461286732740983702740822671148045619497667184586123657285604061875653909567822328914065337797733444640351518775487649819978262363617265797982843179630888729407238496650987720428708217115257989007867331698397
n=22708078815885011462462049064339185898712439277226831073457888403129378547350292420267016551819052430779004755846649044001024141485283286483130702616057274698473611149508798869706347501931583117632710700787228016480127677393649929530416598686027354216422565934459015161927613607902831542857977859612596282353679327773303727004407262197231586324599181983572622404590354084541788062262164510140605868122410388090174420147752408554129789760902300898046273909007852818474030770699647647363015102118956737673941354217692696044969695308506436573142565573487583507037356944848039864382339216266670673567488871508925311154801

def ext_euclid(a, b):     
 if b == 0:         
     return 1, 0, a     
 else:         
     x, y, q = ext_euclid(b, a % b) # q = gcd(a, b) = gcd(b, a%b)         
     x, y = y, (x - (a // b) * y)         
     return x, y, q
r,s,q = ext_euclid(e1,e2)
m = (pow(c1,r,n)*pow(c2,s,n))%n
print(libnum.n2s(m))

得到答案flag{49d91077a1abcb14f1a9d546c80be9ef}

Unencode

89FQA9WMD<V1A<V1S83DY.#<W3$Q,2TM]

这属于是Uuencode编码,我们直接转换
Uuencode编码(加密);Uuencode解码(解密)|文字加密和解密工具 (qqxiuzi.cn)

得到flag{dsdasdsa99877LLLKK}

RSA2

image-20220726162400589

我们直接代码破解

import libnum e = 65537 n=248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113 dp=905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657 c=140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751 pd = e*dp-1

def ext_euclid(a, b):       if b == 0:         
     return 1, 0, a       else:         
     x, y, q = ext_euclid(b, a % b)       
     x, y = y, (x - (a // b) * y)         
     return x, y, q

def mod_inv(a, b):  return ext_euclid(a, b)[0] % b   #函数返回的第一个数%b

for i in range(1,e):  if pd%i == 0:
     if n%(pd//i+1) == 0:     
         p = pd//i+1
         q = n//p
         fn = (p-1)*(q-1)
         d = mod_inv(e,fn)
         m = pow(c,d,n)
         print(libnum.n2s(m))

得到flag{wow_leaking_dp_breaks_rsa?_98924743502}

[AFCTF2018]Morse

-…/.----/-…/-…/-…/…–/–…/…-/-…/-…/–…/-…/…–/.----/–…/…–/…—/–…/–…/…-/…/…-./–…/…–/…–/-----/…/…-./…–/…–/…–/…-/…–/…/–…/----./–…/-…

该题首先想到莫斯代码,由于莫斯代码没有/ 因此我们将/替换成空格,得到

61666374667b317327745f73305f333435797d

然后又是一个解密,我们注意到7d的ASCII码是’}’。
于是得到*#afctf{1s’t_s0_345y}*

异性相吸

最近出现了一个奇葩观点,说性别都不一样,怎么能谈恋爱?为了证明这个观点错误,请大家证明异性是相吸的。 注意:得到的 flag 请包上 flag{} 提交

打开压缩包得到两个txt文件,用010editor打开。写个python脚本,进行二进制数异或即可。异或的过程可以用python脚本实现。 得到的结果是

image-20220726170646019

打开010editor,新建一个Hex文件,粘贴为二进制数据。得到flag{ea1bc0988992276b7f95b54a7435e89e}

还原大师

我们得到了一串神秘字符串:TASC?O3RJMV?WDJKX?ZM,问号部分是未知大写字母,为了确定这个神秘字符串,我们通过了其他途径获得了这个字串的32位MD5码。但是我们获得它的32位MD5码也是残缺不全,E903???4DAB???08???51?80??8A?,请猜出神秘字符串的原本模样,并且提交这个字串的32位MD5码作为答案。 注意:得到的 flag 请包上 flag{} 提交

这题主要是缺口的三为可以使用循环来验证

 import hashlib import string

def md5(str):  m = hashlib.md5()  m.update(str.encode("utf8"))  return m.hexdigest()

for i in string.ascii_uppercase:  for j in string.ascii_uppercase:
     for k in string.ascii_uppercase:
         c = 'TASC' + i + 'O3RJMV' + j + 'WDJKX' + k + 'ZM'
         x = md5(c).upper()
         if 'E903' in x and '4DAB' in x and '08' in x and '51' in x and '80' in x and '8A' in x:
             print(c)
             print(x)
             break
          

最后得到结果flag:E9032994DABAC08080091151380478A2

RSA

了解RSA有关的题解参考:BUUCTF RSA(一)路由()生的博客-CSDN博客_buuctf rsa
证书公钥解析
RSA公钥文件解密密文的原理分析

首先得到两个文件,将pub.key文件的内容进行公钥解析
SSL在线工具-在线公钥解析-在线公钥提取-公钥在线破解-SSLeye官网

image-20220727075928332

得到e和n,对n进行分解因数求p,q,使用yafu工具或网站factordb

代码:

import rsa
import gmpy2
c = 1854183526100811878807183372982532818560316522978821358738967769534081571682
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463
e = 65537
n = 86934482296048119190666062003494800588905656017203025617216654058378322103517
fn = (p-1)*(q-1)

d = int(gmpy2.invert(e,fn))
key = rsa.PrivateKey(n,e,d,q,p)
with open(r'c:\111\flag.enc','rb') as f:    #文件路径
    f = f.read()
    print(rsa.decrypt(f,key))

image-20220727075956090

得到:flag{decrypt_256}

RSAROLL

了解RSA有关的题解参考:BUUCTF RSA(一)路由()生的博客-CSDN博客_buuctf rsa

mport libnum,gmpy2

e = 19
n = 920139713
p = 18443
q = 49891
d = int(gmpy2.invert(e,(p-1)*(q-1)))

f = open(r'c:\111\data.txt','rb')
next(f)     #跳过文件中的第一行    
next(f)     #跳过文件中的第二行
for i in f: #行读取
    m = pow(int(i),d,n)
    print(libnum.n2s(m).decode(),end = '')   #libnum解出的是bytes类型,转换成字符串类型用.decode('utf-8')

猜你喜欢

转载自blog.csdn.net/xuanyulevel6/article/details/126071401