考点在八进制转字符串
下载文件file.zip解压得到一张二维码,扫描没有flag
通过010editor打开,在尾部有一串数字
字符串为:
146154141147173110141166145137171060125137120171137163143162151160164137117164143137124157137124145156137101163143151151041175@xjseck!
保存在八进制.txt
考点在八进制转字符串
3个一组~
观察这段数据发现只有0-7,没有8和9,很容易想到是8进制数据,可以将其转换成10进制,然后再转成ascii字符。一开始看这个数字总长126个,2的倍数,加上以前转换16进制的惯性思维,让我以为这里也是两两一对的转换,转换出来自然不正确,一堆乱码,后来发现两位的8进制数据最大077(数字前加0表示8进制),转换成10进制63也表示不完ascii码表上的字符啊,而且126刚好也是3的倍数,所以三个一组来转换,如下脚本:
f=open('八进制.txt')
temp=[]
while True:k=f.read(3)if k:temp.append(k) """append()方法用于在列表末尾添加新的对象。"""else:break
f.close()for i in temp:num='0o'+inum=int(num,8) """将这个八进制数,int一下,也就是转换为十进制数,将第二个参数换成2,则可以实现二进制转换为十进制,换成16,可以实现16进制转换为十进制。"""num=chr(num) """num=chr(num) chr(i)用于范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符。i可为10进制也可为16进制的数字,返回值为当前整数对应的ASCII字符。"""print(num,end='') "print若不加end,默认换行"
运行此脚本
得到flag