文件倒序

文件倒序

图片

一道经典的Misc图片倒叙题目_misc png 逆序-CSDN博客

例题

正着看还是反着看呢?

看到要倒序,注意他这里是两个字节一组进行倒序的

jpg 文件头 FF D8 FF E0
文件尾是 FF D9

D9FF

1723711338491-709d7522-23a5-40ce-bb3e-d629bd22466e.png

1723712639959-32079af1-6dd4-47b0-83a3-6ec25848e1f0.png

1723718995985-32ba81dd-7c62-47d2-94b2-baac03d45509.png

可以发现有个flag.txt的倒序,所以我们整个都复制过去进行处理

如果只复制到文件尾的话就会丢失文件,导致隐藏文件的消失

1723719081989-cbd6dbe2-0c14-4a85-b2ae-c70ff95b07b6.png

选中尾部拉到最底部,然后(编辑→复制为→复制为十六进制文本)然后在桌面创建一个文本文件,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)

1723715121060-d6f65c17-7358-467d-a682-ea46aa9ddb2c.png

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

1723716388658-a2047cef-993d-4fcf-946f-78ac2b10008b.png

得到照片

1723716519153-5455cc00-e756-47a2-a136-4f594c257acc.jpeg

1723718971683-aa1ec613-1bdb-4841-889a-c5d19ab49252.png

1723719180069-ca545beb-a635-46a6-a3f0-f8b744840f6a.png

打开就可以看到啦

补充exp

1727076597060-900372ab-0cf0-4eac-87cc-4278854bdba2.png

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

1727076858646-3d55fa0b-1688-46e2-acab-fc6f182ad04f.png

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


文件倒序
http://example.com/2025/01/19/MISC/基础/文件倒序/
Author
chaye
Posted on
January 19, 2025
Licensed under