BugkuCTF-Crypto题进制转换
補充:
Python為我們提供了強大的內置函數和格式操作數字的方法去實現進制轉換的功能
下載文件:
點擊文本內容如下:
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
我們發現有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","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"] s1="" t="" t1=""for i in s:s1=ifor j in range(1):if s1[0:1]=='d':t=str(hex(int(s1[1:])))t=t[2:]+" "t1=t1+tif s1[0:1]=='x':t=s1[1:]+" "t1=t1+tif 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","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"] 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進制數串:
我們將這一串十六進制數轉換成字符串的形式可得到:
所以flag即:
flag{1e4bf81a6394de5abc005ac6e39a387b}
總結
以上是生活随笔為你收集整理的BugkuCTF-Crypto题进制转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jq设置内容和属性
- 下一篇: C语言 break 和 continue