Bugku刷题记录(三)

目录

进制转换

affine

来自宇宙的信号

一段新闻

Math&English 


进制转换

各种进制的数混在一块,B:二进制;O:八进制;D:十进制;X:十六进制。

可以单独一个一个解,但太麻烦了,写代码吧:

s=["d87","x65","x6c","x63","o157","d109","o145","b100000","d116","b1101111","o40","x6b","b1100101","b1101100","o141","d105","x62","d101","b1101001","d46","o40","d71","x69","d118","x65","x20","b1111001","o157","b1110101","d32","o141","d32","d102","o154","x61","x67","b100000","o141","d115","b100000","b1100001","d32","x67","o151","x66","d116","b101110","b100000","d32","d102","d108","d97","o147","d123","x31","b1100101","b110100","d98","d102","b111000","d49","b1100001","d54","b110011","x39","o64","o144","o145","d53","x61","b1100010","b1100011","o60","d48","o65","b1100001","x63","b110110","d101","o63","b111001","d97","d51","o70","d55","b1100010","d125","x20","b101110","x20","b1001000","d97","d118","o145","x20","d97","o40","d103","d111","d111","x64","d32","o164","b1101001","x6d","o145","x7e"]
c = ''
for i in s:
    if i[0] == 'b':
        c = str(int(i[1:],2))
        print(chr(int(c)),end='')
    elif i[0] == 'o':
        c = str(int(i[1:],8))
        print(chr(int(c)),end='')
    elif i[0] == 'd':
        c = str(int(i[1:]))
        print(chr(int(c)),end='')
    elif i[0] == 'x':
        c = str(int(i[1:],16))
        print(chr(int(c)),end='')

affine

看题知仿射加密,给了加密函数,就能直接解了:

import gmpy2

s = 'szzyfimhyzd'
c = ''
d = gmpy2.invert(17,26)
for i in s:
    c += chr(d * ((ord(i)-ord('a')) + 8) % 26 + ord('a'))
print('flag{'+c+'}')

来自宇宙的信号

银河字母加密,对照表即可得到flag:

一段新闻

隐藏字符加密+核心价值观编码,

 

Math&English 

全部计算出来得到结果:21 33 1 22 3 44 54 5 1 35 54 3 35 41 52 13,观察所有的结果,出现的数字都在1-5,题目提示还与英语有关,想到元音字母恰好5个,去搜了一下,发现存在元音密码,学习

元音字母a、e、i、o、u,分别对应1-5,在a-e中间,有b、c、d三个字母,则b、c、d分别代表11、12、13。同理,在e-i中间,有f、g、h三个字母,则f、g、h分别代表21、22、23,以此类推,元音密码表:

可以对照表一个一个看,也可以利用脚本:

dict = {1: 'A', 11: 'B', 12: 'C', 13: 'D', 2: 'E', 21: 'F', 22: 'G', 23: 'H', 3: 'I', 31: 'J', 32: 'K', 33: 'L', 34: 'M', 35: 'N', 4: 'O', 41: 'P', 42: 'Q', 43: 'R', 44: 'S', 45: 'T', 5: 'U', 51: 'V', 52: 'W', 53: 'X', 54: 'Y', 55: 'Z'}

c = [21,33,1,22,3,44,54,5,1,35,54,3,35,41,52,13]
flag = ''
for i in range(len(c)):
    flag += dict[c[i]]
print(flag)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值