BUUCTF-crypto-<33-49>-wp
robomunication
题目
下载后打开是个mp3类型的录音
解题
45秒长的录音都是“哔“”卟”,像极了摩尔斯密码。哔是“.”,卟是”-“,停顿是” “
1 | .... . .-.. .-.. --- .-- .... .- - .. ... - .... . -.- . -.-- .. - .. ... -... --- --- .--. -... . . .--. |
结果
1 | flag{BOOPBEEP} |
Dangerous RSA
题目
1 | #n: 0x52d483c27cd806550fbe0e37a61af2e7cf5e0efb723dfc81174c918a27627779b21fa3c851e9e94188eaee3d5cd6f752406a43fbecb53e80836ff1e185d3ccd7782ea846c2e91a7b0808986666e0bdadbfb7bdd65670a589a4d2478e9adcafe97c6ee23614bcb2ecc23580f4d2e3cc1ecfec25c50da4bc754dde6c8bfd8d1fc16956c74d8e9196046a01dc9f3024e11461c294f29d7421140732fedacac97b8fe50999117d27943c953f18c4ff4f8c258d839764078d4b6ef6e8591e0ff5563b31a39e6374d0d41c8c46921c25e5904a817ef8e39e5c9b71225a83269693e0b7e3218fc5e5a1e8412ba16e588b3d6ac536dce39fcdfce81eec79979ea6872793L |
解题
e=3,但模数n很大,属于低加密指数攻击。
1 | from gmpy2 import iroot |
结果
1 | b'flag{25df8caf006ee5db94d48144c33b2c3b}' |
Cipher
题目
1 | 还能提示什么呢?公平的玩吧(密钥自己找) Dncnoqqfliqrpgeklwmppu 注意:得到的 flag 请包上 flag{} 提交, flag{小写字母} |
解题
公平—想到playfair密码。Playfair Cipher (rumkin.com)试试以“playfair”为key
结果
1 | Itisnotaproblemhavefun |
[HDCTF2019]basic rsa
题目
1 | import gmpy2 |
解题
直接求m
1 | import gmpy2 |
结果
1 | # b'flag{B4by_Rs4}' |
[GXYCTF2019]CheckIn
题目
1 | dikqTCpfRjA8fUBIMD5GNDkwMjNARkUwI0BFTg== |
解题
看着像是base64,拿去解一下,是
1 | v)*L*_F0<}@H0>F49023@FE0#@EN |
ROT5、ROT13、ROT18、ROT47 编码是一种简单的码元位置顺序替换暗码。此类编码具有可逆性,可以自我解密,主要用于应对快速浏览,或者是机器的读取,而不让其理解其意。
ROT47:对数字、字母、常用符号进行编码,按照它们的ASCII值进行位置替换,用当前字符ASCII值往前数的第47位对应字符替换当前字符,例如当前为小写字母z,编码后变成大写字母K,当前为数字0,编码后变成符号_。用于ROT47编码的字符其ASCII值范围是33-126。
拿到网站解一下ROT47 Encode/Decode, ROT47 Character Substitution Cipher with API
结果
1 | GXY{Y0u_kNow_much_about_Rot} |
[GUET-CTF2019]BabyRSA
题目
1 | p+q : 0x1232fecb92adead91613e7d9ae5e36fe6bb765317d6ed38ad890b4073539a6231a6620584cea5730b5af83a3e80cf30141282c97be4400e33307573af6b25e2ea |
解题
给出了p+q和(p+1)*(q+1)的值,可以求得n
1 | import libnum |
结果
1 | flag{cc7490e-78ab-11e9-b422-8ba97e5da1fd} |
达芬奇密码
题目
达芬奇一直是一个有争议的画家,科学家。。。小明为了研究他,从网上找到了名画蒙娜丽莎,一天深夜,小明突然从蒙娜丽莎背后的天空中看到了一串神秘的数字。顺带告诉小明达芬奇家窗台上有一串数字是关键。小明千里迢迢找到了这串数字,请将这个送分题做出来,亲,包邮哦(答案是一串32位十进制数字)
1 | 达芬奇隐藏在蒙娜丽莎中的数字列:1 233 3 2584 1346269 144 5 196418 21 1597 610 377 10946 89 514229 987 8 55 6765 2178309 121393 317811 46368 4181 1 832040 2 28657 75025 34 13 17711 |
解题
观察到数字列是属于斐波那契数列中的数,只不过不是按顺序排序的,所以把这个数列按升序排序。
另外给出了一串数字,试着计算它们的长度。发现都是32,于是猜想这是一一对应的关系。
1 | list=[1 ,233 ,3 ,2584 ,1346269, 144 ,5 ,196418, 21 ,1597, 610 ,377 ,10946, 89 ,514229, 987, 8 ,55, 6765, 2178309, 121393, 317811, 46368, 4181, 1, 832040 ,2 ,28657, 75025, 34, 13, 17711 ] |
结果
1 | 37995588256861228614165223347687 |
rsa2
题目
1 | N = 101991809777553253470276751399264740131157682329252673501792154507006158434432009141995367241962525705950046253400188884658262496534706438791515071885860897552736656899566915731297225817250639873643376310103992170646906557242832893914902053581087502512787303322747780420210884852166586717636559058152544979471 |
解题
在这个目录下,用wiener攻击脚本求出d的值
1 | import RSAwienerHacker |
1 | Hacked! |
得到d 后在对其MD5哈希即可得到flag
密码学的心声
题目
二战时期,某国军官与一个音乐家情妇相好,然而自从那时起,他屡战屡败,敌人似乎料事如神。他也有怀疑过他的情妇,但是他经过24小时观察他的情妇,发现她每天都只是作曲,然后弹奏给战地电台,为士兵们鼓气,并未有任何逾越。那么,间谍到底是谁?这张曲谱是否有猫腻? (答案为一个明文字符串,提交获得的有意义语句通顺字符串即可)
附件图片
解题
图片里提示了两个信息。“请转换成埃塞克码”以及“八进制”
将图片上的数字打出
1 | 111114157166145123145143165162151164171126145162171115165143150 |
以三位为一组,将数字按八进制处理,转化成对应的ASCII码
1 | s = '111 114 157 166 145 123 145 143 165 162 151 164 171 126 145 162 171 115 165 143 150' |
结果
1 | 21 |
语法
1 | for i in range (21): |
RSA5
题目
1 | m = xxxxxxxx |
解题
题目给了20组n和c,思路是不同的n中可能存在相同的p或者q,求出不同n之间的最大公约数gcd()得到p或q,可得d,即可得到明文。
1 | import gmpy2 |
结果
1 | flag{abdcbe5fd94e23b3de429223ab9c2fdf} |
[BJDCTF2020]这是base??
题目
1 | dict:{0: 'J', 1: 'K', 2: 'L', 3: 'M', 4: 'N', 5: 'O', 6: 'x', 7: 'y', 8: 'U', 9: 'V', 10: 'z', 11: 'A', 12: 'B', 13: 'C', 14: 'D', 15: 'E', 16: 'F', 17: 'G', 18: 'H', 19: '7', 20: '8', 21: '9', 22: 'P', 23: 'Q', 24: 'I', 25: 'a', 26: 'b', 27: 'c', 28: 'd', 29: 'e', 30: 'f', 31: 'g', 32: 'h', 33: 'i', 34: 'j', 35: 'k', 36: 'l', 37: 'm', 38: 'W', 39: 'X', 40: 'Y', 41: 'Z', 42: '0', 43: '1', 44: '2', 45: '3', 46: '4', 47: '5', 48: '6', 49: 'R', 50: 'S', 51: 'T', 52: 'n', 53: 'o', 54: 'p', 55: 'q', 56: 'r', 57: 's', 58: 't', 59: 'u', 60: 'v', 61: 'w', 62: '+', 63: '/', 64: '='} |
解题
给了65个字符,像极了base64,应该是与base64对应关系。
1 | import base64 |
结果
1 | QkpEe0QwX1kwdV9rTm9XX1RoMXNfYjRzZV9tYXB9 |
传感器
题目
1 | 5555555595555A65556AA696AA6666666955 |
解题
看到tip“曼联”,想到在计组里面学的曼彻斯特编码。
曼彻斯特编码(Manchester Encoding),也叫做相位编码( Phase Encode,简写PE),是一个同步时钟编码技术,被物理层使用来编码一个同步位流的时钟和数据。它在以太网媒介系统中的应用属于数据通信中的两种位同步方法里的自同步法(另一种是外同步法),即接收方利用包含有同步信号的特殊编码从信号自身提取同步信号来锁定自己的时钟脉冲频率,达到同步目的。
曼彻斯特编码表示0或1的方法:
IEEE 802.4(令牌总线)和低速版的IEEE 802.3(以太网)中规定, 按照这样的说法, 低-高电平跳变表示1, 高-低的电平跳变表示0。编码0101(0x5)表示11;
编码1001(0x9)表示01;
编码0110(0x6)表示10;
编码1010(0xA)表示00;
5555555595555A65556AA696AA6666666955
即
111111111111111101111111110010111111100000100110000010101010101010011111
,根据“这是某压力传感器无线数据包解调后但未解码的报文(hex)”这个提示,以每四位为一组,hex编码后是:ffff7fcbf8260aaa9f
。
给的id是0xFED31F
,但对比后ID不相同,根据八位倒序传输协议将二进制每八位reverse。
结果
1 | FFFFFED31F645055F9 |
rot
题目
1 | 破解下面的密文: |
解题
ROT是一种古典密码,左边移某位,或者右边移某位,凯撒算是ROT的一种。
发现这些数字大部分在80-130的区间,用rot13移位后,大部分会落在ascii码的字母区间,因此
1 | a = [83,89,78,84,45,86,96,45,115,121,110,116,136,132,132,132,108,128,117,118,134,110,123,111,110,127,108,112,124,122,108,118,128,108,131,114,127,134,108,116,124,124,113,108,76,76,76,76,138,23,90,81,66,71,64,69,114,65,112,64,66,63,69,61,70,114,62,66,61,62,69,67,70,63,61,110,110,112,64,68,62,70,61,112,111,112] |
结果
1 | FLAG IS flag{www_shiyanbar_com_is_very_good_????} |
可以看到该flag后面有4个问号,猜测可能这个不是完整的flag 于是结合所给的MD5值,可以通过枚举所有可能的flag情况(首先在ASCII码进行枚举)与MD5值进行碰撞检测(我也尝试过直接用在线工具,发现找不到这条MD5)
程序跑了一段时间后可以得到正确的flag
1 | a="83 89 78 84 45 86 96 45 115 121 110 116 136 132 132 132 108 128 117 118 134 110 123 111 110 127 108 112 124 122 108 118 128 108 131 114 127 134 108 116 124 124 113 108 76 76 76 76 138 23 90 81 66 71 64 69 114 65 112 64 66 63 69 61 70 114 62 66 61 62 69 67 70 63 61 110 110 112 64 68 62 70 61 112 111 112" |
[NCTF2019]childRSA
[NCTF2019]Keyboard
题目
1 | ooo yyy ii w uuu ee uuuu yyy uuuu y w uuu i i rr w i i rr rrr uuuu rrr uuuu t ii uuuu i w u rrr ee www ee yyy eee www w tt ee |
解题
观察发现,给的字母都是键盘字母的第一行。并且字母是连续重复是1~4次。说明是九键键盘,刚好和题目keyboard意思对上了,这种题写法就是比如o,对应9,就在九键键盘上9的位置,看o有多少位,3位的话,就是9那个位置字符串的第三个字符。
1 | cipher="ooo yyy ii w uuu ee uuuu yyy uuuu y w uuu i i rr w i i rr rrr uuuu rrr uuuu t ii uuuu i w u rrr ee www ee yyy eee www w tt ee" |
结果
1 | youaresosmartthatthisisjustapieceofcake |
[HDCTF2019]bbbbbbrsa
题目
1 | from base64 import b64encode as b32encode |
附件
1 | p = 177077389675257695042507998165006460849 |
解题
已知n,p,c可求q,phi。e是50000~70000中的随机数,并且e和phi互素,所以遍历这个范围中的e,找到带有“flag”的字符串输出即可
1 | from base64 import b64encode as b32encode |
结果
1 | flag{rs4_1s_s1mpl3!#} |