如何读取Firefox localStorage数据库data.sqlite中value列的BLOB数据?
恢复Firefox localStorage中浏览器游戏存档的方法
1. 明确Firefox的localStorage存储逻辑
Firefox将localStorage中的字符串数据以BLOB类型存储时,本质是UTF-8编码的原始字符串,并非复杂二进制加密。结合你提到的新存档是Base64编码的JSON格式,丢失的存档数据大概率也是同格式,只是被SQLite以BLOB形式保存。
2. 提取并转换BLOB数据
用SQLite命令行导出BLOB
相比GUI工具,命令行导出更精准,执行以下步骤:
- 打开终端,运行SQLite工具连接目标文件:
sqlite3 /home/fdagpigj/.mozilla/firefox/45otyetp.default/storage/default/https+++v6p9d9t4.ssl.hwcdn.net^partitionKey=%28https%2Citch.io%29/ls/data.sqlite - 执行导出命令,将BLOB数据保存到临时文件:
SELECT writefile('/tmp/villager_save_raw.bin', value) FROM storage WHERE key = 'VillagerKingsSave'; .quit
转换为可读文本
由于数据是UTF-8编码的字符串,直接将二进制文件转为文本即可:
cat /tmp/villager_save_raw.bin > /tmp/villager_save.txt
如果打开后仍显示乱码,尝试转码为UTF-8:
iconv -f utf-16le -t utf-8 /tmp/villager_save_raw.bin > /tmp/villager_save_utf8.txt
3. 解码并恢复存档
- 打开转换后的文本文件,复制其中的Base64编码内容。
- 将Base64解码为JSON:
echo "复制的Base64内容" | base64 -d > /tmp/recovered_save.json - 验证JSON格式无误后,打开游戏并按F12调出调试控制台:
- 切换到
Storage标签,选择LocalStorage下对应游戏的域名 - 找到
VillagerKingsSave键,将解码后的JSON(或原Base64内容,根据游戏实际存储方式)粘贴到值的输入框中 - 刷新页面,检查存档是否恢复
- 切换到
注意事项
- 操作前务必备份原始的
data.sqlite文件,防止数据损坏 - 如果解码后JSON格式异常,可能是导出过程中数据截断,重新执行SQLite导出命令
- 极少数情况下游戏会对存档做简单加密,此时需要分析游戏前端代码的存档逻辑
内容的提问来源于stack exchange,提问作者fdagpigj
相关产品推荐
相关产品推荐

