BugkuCTF-MISC题普通的二维码
考點(diǎn)在八進(jìn)制轉(zhuǎn)字符串
下載文件file.zip解壓得到一張二維碼,掃描沒(méi)有flag
通過(guò)010editor打開(kāi),在尾部有一串?dāng)?shù)字
字符串為:
146154141147173110141166145137171060125137120171137163143162151160164137117164143137124157137124145156137101163143151151041175@xjseck!
保存在八進(jìn)制.txt
考點(diǎn)在八進(jìn)制轉(zhuǎn)字符串
3個(gè)一組~
觀察這段數(shù)據(jù)發(fā)現(xiàn)只有0-7,沒(méi)有8和9,很容易想到是8進(jìn)制數(shù)據(jù),可以將其轉(zhuǎn)換成10進(jìn)制,然后再轉(zhuǎn)成ascii字符。一開(kāi)始看這個(gè)數(shù)字總長(zhǎng)126個(gè),2的倍數(shù),加上以前轉(zhuǎn)換16進(jìn)制的慣性思維,讓我以為這里也是兩兩一對(duì)的轉(zhuǎn)換,轉(zhuǎn)換出來(lái)自然不正確,一堆亂碼,后來(lái)發(fā)現(xiàn)兩位的8進(jìn)制數(shù)據(jù)最大077(數(shù)字前加0表示8進(jìn)制),轉(zhuǎn)換成10進(jìn)制63也表示不完ascii碼表上的字符啊,而且126剛好也是3的倍數(shù),所以三個(gè)一組來(lái)轉(zhuǎn)換,如下腳本:
f=open('八進(jìn)制.txt') temp=[] while True:k=f.read(3)if k:temp.append(k) """append()方法用于在列表末尾添加新的對(duì)象。"""else:break f.close()for i in temp:num='0o'+inum=int(num,8) """將這個(gè)八進(jìn)制數(shù),int一下,也就是轉(zhuǎn)換為十進(jìn)制數(shù),將第二個(gè)參數(shù)換成2,則可以實(shí)現(xiàn)二進(jìn)制轉(zhuǎn)換為十進(jìn)制,換成16,可以實(shí)現(xiàn)16進(jìn)制轉(zhuǎn)換為十進(jìn)制。"""num=chr(num) """num=chr(num) chr(i)用于范圍在range(256)內(nèi)的(就是0~255)整數(shù)作參數(shù),返回一個(gè)對(duì)應(yīng)的字符。i可為10進(jìn)制也可為16進(jìn)制的數(shù)字,返回值為當(dāng)前整數(shù)對(duì)應(yīng)的ASCII字符。"""print(num,end='') "print若不加end,默認(rèn)換行"運(yùn)行此腳本
得到flag
總結(jié)
以上是生活随笔為你收集整理的BugkuCTF-MISC题普通的二维码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Lock锁详细讲解
- 下一篇: C语言 __LINE__ - C语言零基