文件倒序
图片
一道经典的Misc图片倒叙题目_misc png 逆序-CSDN博客
例题
正着看还是反着看呢?
看到要倒序,注意他这里是两个字节一组进行倒序的
jpg 文件头 FF D8 FF E0
文件尾是 FF D9
D9FF



可以发现有个flag.txt的倒序,所以我们整个都复制过去进行处理
如果只复制到文件尾的话就会丢失文件,导致隐藏文件的消失

选中尾部拉到最底部,然后(编辑→复制为→复制为十六进制文本)然后在桌面创建一个文本文件,ctrl+v直接复制进去,然后编写脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| # 打开并读取原始文件内容 with open(r'D:\网站下载\exppy\1.txt', 'rb') as f: a = f.read()
# 去掉原始数据中的换行符、空格等不可见字符 a = a.replace(b'\n', b'').replace(b'\r', b'').replace(b' ', b'')
# 将内容逆序 a = a[::-1]
# 将逆序内容写入新的文件 with open(r'D:\网站下载\exppy\new.txt', 'wb') as new: new.write(a)
# 读取逆序后的文件内容 with open(r'D:\网站下载\exppy\new.txt', 'rb') as f: b = f.read()
# 将内容转换为可变的字节数组 blist = bytearray(b)
# 按两个字节为一组进行交换 for i in range(0, len(blist) - 1, 2): blist[i], blist[i + 1] = blist[i + 1], blist[i]
# 打开目标文件以写入最终内容 with open(r'D:\网站下载\exppy\flag.txt', 'wb') as flag: # 将所有处理后的字节内容连续写入文件 flag.write(blist)
# 打印最终处理的内容(以逆序显示) print(blist)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| def format_hex_data_from_file(input_file, output_file): # 读取文件内容 with open(input_file, 'r') as file: hex_data = file.read().strip()
# 将字符串分成每两个字符一组 grouped_data = [hex_data[i:i + 2] for i in range(0, len(hex_data), 2)]
# 以16组为一行,每组之间用空格隔开 formatted_data = '\n'.join([' '.join(grouped_data[i:i + 16]) for i in range(0, len(grouped_data), 16)])
# 将格式化后的数据写入输出文件 with open(output_file, 'w') as file: file.write(formatted_data)
# 输入和输出文件路径 input_file = r'D:\网站下载\exppy\flag.txt' output_file = r'D:\网站下载\exppy\newflag.txt'
# 格式化并写入输出文件 format_hex_data_from_file(input_file, output_file)
|

导入十六进制,保存,修改后缀名为jpg,(文件→导入十六进制→保存→重命名为flag.jpg)

得到照片



打开就可以看到啦
补充exp

其实直接逆序就行,但是糖了,没想到一个字节是两个十六进制表示,唐了

1 2 3 4 5 6 7
| input=open('文件地址','rb') input_all=input.read() ss=input_all[::-1] output=open('输出文件地址','wb') output.write(ss) input.close() output.close()
|
更新: 2024-10-18 11:52:25
原文: https://www.yuque.com/chaye-apqbl/vsc85q/bmpatlf8723vp4o6