gpt4 book ai didi

python - 我是否正确地从此 mysqldump 中提取了 JPEG 二进制数据?

转载 作者:行者123 更新时间:2023-11-29 03:14:35 24 4
gpt4 key购买 nike

我有一个 8 年前运行的 vbulletin 站点的非常旧的 .sql 备份。我正在尝试查看存储在数据库中的文件附件。下面的脚本将它们全部提取出来,并根据 JPEG wiki page 通过十六进制转储和检查 SOI(图像开始)和 EOI(图像结束)字节(分别为 FFD8 和 FFD9)验证为 JPEG。 .

但是当我尝试用 evince 打开它们时,我收到这条消息“解释 JPEG 图像文件时出错(JPEG 数据流不包含图像)”

这里可能发生了什么?

一些背景信息:

  • sqldump 大约 8 岁
  • vbulletin 2.x 是存储信息的软件
  • 很可能使用了 php 4
  • 最有可能是 mysql 4.0,甚至可能是 3.x
  • 存储这些附件的列数据类型是 mediumtext

我的 Python 3.1 脚本:

#!/usr/bin/env python3.1

import re

trim_l = re.compile(b"""^INSERT INTO attachment VALUES\('\d+', '\d+', '\d+', '(.+)""")
trim_r = re.compile(b"""(.+)', '\d+', '\d+'\);$""")
extractor = re.compile(b"""^(.*(?:\.jpe?g|\.gif|\.bmp))', '(.+)$""")

with open('attachments.sql', 'rb') as fh:
for line in fh:
data = trim_l.findall(line)[0]
data = trim_r.findall(data)[0]
data = extractor.findall(data)
if data:
name, data = data[0]
try:
filename = 'files/%s' % str(name, 'UTF-8')
ah = open(filename, 'wb')
ah.write(data)
except UnicodeDecodeError:
continue
finally:
ah.close()

fh.close()

更新JPEG 维基页面说 FF 字节是节标记,下一个字节指示节类型。我看到一些没有在 wiki 页面中列出的(具体来说,我看到很多 5C 字节,所以 FF5C)。但是这个列表是“通用标记”,所以我试图找到一个更完整的列表。此处的任何指导也将不胜感激。

最佳答案

使用示例 SQL 语句更新您的问题,包括 JPEG 字符串值的几行/字节。也许数据是 base64 编码的,或者甚至是直接的十六进制值。我们会进一步帮助您。

此外,通过发出以下命令更容易查看文件内容的类型:

file yourfile.jpg

关于python - 我是否正确地从此 mysqldump 中提取了 JPEG 二进制数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2723973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com