2025年BugkuCTF-Crypto题进制转换

BugkuCTF-Crypto题进制转换补充 Python 为我们提供了强大的内置函数和格式操作数字的方法去实现进制转换的功能 下载文件 点击文本内容如下 d87 x65 x6c x63 o157 d109 o145 b d116 b o40 x6b b b o141 d105 x62 d101 b d46 o40 d71

大家好,我是讯享网,很高兴认识大家。

补充:
Python为我们提供了强大的内置函数和格式操作数字的方法去实现进制转换的功能
在这里插入图片描述
讯享网
下载文件:
点击文本内容如下:
d87 x65 x6c x63 o157 d109 o145 b d116 b o40 x6b b b o141 d105 x62 d101 b d46 o40 d71 x69 d118 x65 x20 b o157 b d32 o141 d32 d102 o154 x61 x67 b o141 d115 b b d32 x67 o151 x66 d116 b b d32 d102 d108 d97 o147 d123 x31 b b d98 d102 b d49 b d54 b x39 o64 o144 o145 d53 x61 b b o60 d48 o65 b x63 b d101 o63 b d97 d51 o70 d55 b d125 x20 b x20 b d97 d118 o145 x20 d97 o40 d103 d111 d111 x64 d32 o164 b x6d o145 x7e

我们发现有b、o、d、x这四种前缀,百度得:
八进制(逢八进一),Octal,缩写OCT或O,一类以8为基数的计数法,用O表示,为了不与数字0混淆,有时也用Q来表示八进制数。
十进制(逢十进一),英文为Decimal System,缩写Dec或D,来源于希腊文Decem,用D表示。
十六进制(逢十六进一),英文名称:Hexadecimal,是计算机里数据的一类表示方法。它由0-9,A-F组成,字母不区分大小写,前缀用0x表示。
二进制(逢二进一),Binary,用b表示。

D:十进制数Decima
B:二进制数Binary
0x(H):十六进制数Hexadecimal
O:八进制数Octal
因此,我们将这些统一转化为十六进制表示,然后转为字符串就可以得到答案。

编写进制转换代码脚本

#! /usr/bin/env python #coding=utf-8 s=["d87","x65","x6c","x63","o157","d109","o145","b","d116","b","o40","x6b","b","b","o141","d105","x62","d101","b","d46","o40","d71","x69","d118","x65","x20","b","o157","b","d32","o141","d32","d102","o154","x61","x67","b","o141","d115","b","b","d32","x67","o151","x66","d116","b","b","d32","d102","d108","d97","o147","d123","x31","b","b","d98","d102","b","d49","b","d54","b","x39","o64","o144","o145","d53","x61","b","b","o60","d48","o65","b","x63","b","d101","o63","b","d97","d51","o70","d55","b","d125","x20","b","x20","b","d97","d118","o145","x20","d97","o40","d103","d111","d111","x64","d32","o164","b","x6d","o145","x7e"] s1="" t="" t1="" for i in s: s1=i for j in range(1): if s1[0:1]=='d': t=str(hex(int(s1[1:]))) t=t[2:]+" " t1=t1+t if s1[0:1]=='x': t=s1[1:]+" " t1=t1+t if s1[0:1]=='o': t=str(hex(int(s1[1:],8))) t=t[2:]+" " t1=t1+t if s1[0:1]=='b': t=str(hex(int(s1[1:],2))) t=t[2:]+" " t1=t1+t print(t1) #方法二: s=["d87","x65","x6c","x63","o157","d109","o145","b","d116","b","o40","x6b","b","b","o141","d105","x62","d101","b","d46","o40","d71","x69","d118","x65","x20","b","o157","b","d32","o141","d32","d102","o154","x61","x67","b","o141","d115","b","b","d32","x67","o151","x66","d116","b","b","d32","d102","d108","d97","o147","d123","x31","b","b","d98","d102","b","d49","b","d54","b","x39","o64","o144","o145","d53","x61","b","b","o60","d48","o65","b","x63","b","d101","o63","b","d97","d51","o70","d55","b","d125","x20","b","x20","b","d97","d118","o145","x20","d97","o40","d103","d111","d111","x64","d32","o164","b","x6d","o145","x7e"] for i in s: for j in range(1): if i[0] == 'd': s1=str(int(i[1:])) print(chr(int(s1)),end='') if i[0] == 'x': s1=str(int(i[1:],16)) print(chr(int(s1)),end='') if i[0] == 'o': s1=str(int(i[1:],8)) print(chr(int(s1)),end='') if i[0] == 'b': s1=str(int(i[1:],2)) print(chr(int(s1)),end='') 

讯享网

运行得到下列16进制数串:
在这里插入图片描述
我们将这一串十六进制数转换成字符串的形式可得到:

讯享网Welcome to kelaibei. Give you a flag as a gift.flag{1e4bf81a6394de5abc005ac6e39a387b} . Have a good time~ 
小讯
上一篇 2025-04-05 10:01
下一篇 2025-02-21 19:25

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/27377.html