做网站怎么买服务器吗,建网站设计,上海营销网站,深圳网站建设公司 概况打开图片#xff0c;只有四种数字#xff1a;127#xff0c;191#xff0c;63#xff0c;255
最大数字为255#xff0c;想到进制转换
将其均转换为二进制#xff1a;
发现只有前2位不一样 想着把每个数的前俩位提取出来#xff0c;组成新的二进制#xff0c;然后每…
打开图片只有四种数字12719163255
最大数字为255想到进制转换
将其均转换为二进制
发现只有前2位不一样 想着把每个数的前俩位提取出来组成新的二进制然后每八位一组再转字符
import binascii #该模块处理二进制和ASCII转换with open(ttl.txt, r) as file: #以只读方式打开文件lines file.readlines() #返回列表读取所有行ttl_data for line in lines:prefix {0:b}.format(int(line[4:])).zfill(8) #{0:b}.format()格式化字符串将传入参数格式化为二进制。int(line[4:])从line中取出从索引4到末尾的全部字符并转换为整数。# .zfill(8)得到的字符串右对齐不足八位补0。ttl_data prefix[0:2] #获取prefix的前俩位字符flag
for i in range(0, len(ttl_data), 8): #步长为8每次处理8个二进制数flag chr(int(ttl_data[i:i 8], 2)) #将8个二进制数转换为字符2表示输入的数是二进制print(flag)
# 发现flag为图片的文件头
flag binascii.unhexlify(flag) #函数用于将十六进制表示的ASCII字符串通常以0x开头但在unhexlify中不需要转换回其原始的二进制数据。
with open(./res.jpg, wb) as file:file.write(flag)
拿到图片残缺二维码foremost分离以后拿到二维码碎片拼图扫二维码拿到加密的flag之后根据提示cipher解密拿到flag