每日一练:奇怪的TTL字段(python实现图片操作实战)

打开图片,只有四种数字:127,191,63,255

最大数字为255,想到进制转换

将其均转换为二进制:

发现只有前2位不一样

想着把每个数的前俩位提取出来,组成新的二进制,然后每八位一组,再转字符

python 复制代码
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

相关推荐
mottte2 天前
BUUCTF[极客大挑战 2019]Havefun 1题解
php·web·ctf
mottte2 天前
BUUCTF[ACTF2020 新生赛]Include 1题解
web·ctf·文件包含漏洞
Star abuse6 天前
2025一带一路暨金砖国家技能发展与技术创新大赛第三届企业信息系统安全赛项
安全·web安全·ctf·全国职业院校技能大赛
落寞的魚丶6 天前
第三届宁波技能大赛网络安全赛项样题
网络安全·渗透测试·ctf·服务器配置·第三届宁波技能大赛
kali-Myon8 天前
栈迁移与onegadget利用[GHCTF 2025]ret2libc2
c语言·安全·pwn·ctf·栈溢出·栈迁移·onegadget
亿.69 天前
“轩辕杯“云盾砺剑CTF挑战赛 Web wp
web·ctf·writeup
未完结的牵挂13 天前
第二届帕鲁杯 solar_Linux后门排查 WP
网络安全·ctf·应急响应
ALe要立志成为web糕手14 天前
php://filter的trick
安全·web安全·网络安全·php·ctf
uwvwko17 天前
ctfshow——web入门254~258
android·前端·web·ctf·反序列化
uwvwko18 天前
BUUCTF——web刷题第一页题解
android·前端·数据库·php·web·ctf