Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/noclin/localstorage-recovery
一次恢复Chromium的LocalStorage (LevelDB)实践。务必谨慎删除,幸好还能恢复~
https://github.com/noclin/localstorage-recovery
chrome chromium electron ldb leveldb localstorage recovery restore undelete
Last synced: 2 months ago
JSON representation
一次恢复Chromium的LocalStorage (LevelDB)实践。务必谨慎删除,幸好还能恢复~
- Host: GitHub
- URL: https://github.com/noclin/localstorage-recovery
- Owner: NoCLin
- Created: 2019-04-16T12:05:18.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-02-16T07:14:09.000Z (almost 5 years ago)
- Last Synced: 2024-09-29T01:24:05.212Z (3 months ago)
- Topics: chrome, chromium, electron, ldb, leveldb, localstorage, recovery, restore, undelete
- Language: Python
- Homepage:
- Size: 5.86 KB
- Stars: 10
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# localStorage 数据恢复
适用于Chrome、Chromium、Electron等软件
## 数据文件
LocalStorage 文件存储位置:{APP_DATA_DIR}/Default/Local Storage/leveldb
localStorage 使用 LevelDB 作为底层数据库
```
leveldb
├── 000003.ldb
├── 000014.ldb
├── 000077.ldb
├── 000080.log
├── CURRENT
├── LOCK
├── LOG
├── LOG.old
└── MANIFEST-000079
```其中 若干`*.ldb`存储了若干版本的数据,可从此处恢复。
请参考:https://antimatter15.com/2015/12/recovering-deleted-data-from-leveldb/
## 示例数据
bytearray:`b'\x00,{\x8cN!k\x84vpenc'`
Unicode:`\u7b2c\u4e8c\u6b21\u7684\u6570\u636e`
中文:第二次的数据
程序输出:
```
(bytearray(b'_file://\x00\x01message'), bytearray(b'\x00,{\x8cN!k\x84vpenc'))
['0x7b2c', '0x4e8c', '0x6b21', '0x7684', '0x6570', '0x636e']
第二次的数据
```## 解码处理
1. 去掉第一个\x00
2. 剩余bytes 两两倒序以hex组合成一个Unicode (`,{` == `\x2c\x7b` => `\u7b2c` => `第`)## 工具链
- unicode编码解码: http://www.jsons.cn/unicode/
- ldbdump :
用于从ldb文件dump出数据,但是会直接输出内容而不是byte array,需要手工修改源码不输出明文字符。
> 然后 ldbdump xxxxxx.ldb > raw.file 可以发现 raw.file 里面是明文字符了,但是如果原来的数据含有中文或者二进制内容,那么导出文件不好用php处理请参考:https://blog.csdn.net/gold2008/article/details/70837495
- leveldb python leveldb库
> 这个库只能读取文件夹,不能读取.ldb文件,因此最好使用ldbdump读取