当前位置:   article > 正文

BUUCTF——CRYPTO(记录不熟悉的题)(5)_x[i] for i in range(0,256,64)

x[i] for i in range(0,256,64)

[ACTF新生赛2020]crypto-classic1

 

题目让你低头,意思是让你看键盘。在键盘上比划每一组,圈起来的就是每一组代表的字符,由此可以得到解密压缩包的密码:circle

解开后得到密文:

接下来找密钥。根据题目ACTF,猜测接出来的flag应该是‘ACTF开头’,对于维吉尼亚表格可以找到密钥:spsp或者sp

 利用在线网站解出:

 去提交确实错的,看了大佬们的wp后知道buuctf给的密文有问题,正确的密文应该是:

SRLU{OWSI_S_RDPKHARSA_NXYTFTJT}

 换成小写后提交正确。

EasyProgram

不知道用的什么语言,但大致能看懂过程:前三个for循环用来构造s、t两个数组,到了第四个for才用到了flag与s数组异或得到密文,所以只要按照它的顺序来,用python来复原构造过程。

  1. with open("C:\\Users\\lenovo\\Desktop\\file.txt", 'rb') as f:
  2. flag = f.read().hex()
  3. flagx = [int(str(flag)[i:i+2], 16) for i in range(0, len(flag), 2)]
  4. s = []
  5. for i in range(0,256):
  6. s.append(i)
  7. t = []
  8. key = 'whoami'
  9. for i in range(0,256):
  10. t.append(key[i%(len(key))])
  11. j = 0
  12. for i in range(0,256):
  13. j = (j+s[i]+int(ord(t[i])))%256
  14. s[i],s[j] = s[j],s[i]
  15. i = j = x = 0
  16. for m in range(0,38):
  17. i = (i + 1)%256
  18. j = (j + s[i])%256
  19. s[i],s[j] = s[j],s[i]
  20. x = (s[i] + (s[j]%256))%256
  21. flagx[m] = flagx[m]^s[x]
  22. print(''.join(chr(flagx[i]) for i in range(0, 38)))

[UTCTF2020]hill

希尔加密?没见过,学习一波:

加密过程:

密文矩阵 = 密钥矩阵 * 明文矩阵

给密钥矩阵:\begin{bmatrix} 2 &5 \\ 9& 5 \end{bmatrix} (必须是可逆的

1、首先将明文串转化成数字(a-0,b-1,c-2,以此类推),如给你明文串EastChinaNormalUniversity,则转化后得到4 0 18 19 2 7 8 13 0 13 14 17 12 0 11 20 13 8 21 4 17 18 8 19 24,两两一组写成矩阵形式:

 少了个数,补0

2、加密:

3、对应转成字母:IK BX NB DH NN JD YE SR OB KB UJ HL W

参考:http://t.csdn.cn/bfyli 

  1. s='wznqcaduqopfkqnwofDbzgeu'
  2. flag_pre='utflag'
  3. def getit(a1,b1,c1,a2,b2,c2,a3,b3,c3):
  4. for i in range(26):
  5. for j in range(26):
  6. if (a1 * i + b1 * j) % 26 == c1 and (a2 * i + b2 * j) % 26 == c2 and (a3 * i+b3*j) % 26 == c3:
  7. return (i,j)
  8. x1=getit(22,25,20,13,16,5,2,0,0)
  9. x2=getit(22,25,19,13,16,11,2,0,6)
  10. import string
  11. flag=''
  12. for i in range(0, len(s),2):
  13. flag+=string.ascii_letters[(x1[0]*string.ascii_letters.index(s[i])+x1[1]*string.ascii_letters.index(s[i+1]))%26]
  14. flag+=string.ascii_letters[(x2[0]*string.ascii_letters.index(s[i])+x2[1]*string.ascii_letters.index(s[i+1]))%26]
  15. print(flag)

 得到:

加上初始的数字,以及改正大小写得flag:utflag{d4nger0us_c1pherText_qq}

代码参考:http://t.csdn.cn/fz1UN

[GUET-CTF2019]NO SOS 

给了一行很想摩斯密码的东西,但没有分隔,而且长度不一,题目也说NO SOS(SOS代表用摩斯求救),看了wp才知道是培根,长度统一:

  1. c = '..-.-.-.–…….–..-…-..-…–.-.-….-..-..–.-.-..-.-..—-'.replace('…', '...').replace('—', '---').replace('–', '--')
  2. print(c.replace('.', 'a').replace('-', 'b'))
  3. print(c.replace('.', 'b').replace('-', 'a'))

 参考:http://t.csdn.cn/4rLAi

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/48528
推荐阅读
相关标签
  

闽ICP备14008679号