Showing Posts From
LevelDB
Chrome 扩展 Local Extension Settings 目录:.log 文件是 LevelDB WAL,不是文本日志
目录结构 在 Windows 上,Chrome/Edge/指纹浏览器的扩展本地存储位于: C:\Users\用户名\AppData\Local\Google\Chrome\User Data\Default\ └── Local Extension Settings\ └── mcohilncbfahbmgdjkbpemcciiolgcge\ ├── 000001.log ├── 008803.log ├── CURRENT ├── LOCK ├── LOG └── MANIFEST-000001这里的 mcohilncbfahbmgdjkbpemcciiolgcge 是扩展的 ID。 .log 文件不是文本日志 008803.log 这类文件是 LevelDB WAL(Write-Ahead Log) 文件,不是普通文本日志。 LevelDB 是 Chrome 用于存储扩展数据(chrome.storage.local、IndexedDB 等)的键值数据库。WAL 文件以二进制格式存储事务日志,内容通常是 protobuf 或 JSON 序列化后的数据。 用 xxd 或十六进制编辑器查看文件头: xxd -l 256 008803.log如果看到 JSON 结构或可读字符串,说明是纯文本 JSON 存储(部分插件会明文存)。如果是乱码二进制,则是 protobuf 等序列化格式。 如何确认扩展 ID 对应哪个插件 方法一:浏览器内查找(最快) chrome://extensions/开启右上角"开发者模式",每个插件卡片下方会显示 ID,搜索目标 ID 即可。 方法二:读取 manifest.json 同一个扩展 ID 目录下找扩展的安装目录: C:\...\Extensions\mcohilncbfahbmgdjkbpemcciiolgcge\1.x.x\manifest.json{ "name": "OKX Wallet", "description": "...", "version": "6.x.x" }方法三:查看 WAL 文件中的可读字符串 部分钱包插件(如 MetaMask、OKX Wallet)的数据会以 JSON 存储,可以直接在 WAL 文件里搜索关键词: strings 008803.log | grep -i "wallet\|token\|address"或者 Python 读取: with open("008803.log", "rb") as f: data = f.read() # 找 JSON 开始位置 start = data.find(b'{') if start != -1: print(data[start:start+500])常见扩展 ID 对应扩展 ID 扩展名nkbihfbeogaeaoehlefnkodbefgpgknn MetaMaskmcohilncbfahbmgdjkbpemcciiolgcge OKX Wallet(Web3)bfnaelmomeimhlpmgjnjophhpkkoljpa Phantomfhbohimaelbohpjbbldcngcnapndodjp Binance Wallet确认后,如果数据目录很大(几十 MB),说明插件本地存了大量数据,可能是交易历史、密钥材料或缓存。
Chromium 扩展的 Local Extension Settings 目录里是什么
Chromium 系浏览器(Chrome、Edge、Brave、指纹浏览器)的用户目录里经常能看到: Default/Local Extension Settings/<extension-id>/ ├── 000003.log ├── 008803.log ├── CURRENT ├── LOCK ├── LOG └── MANIFEST-000002看到 .log 会以为是普通日志文件——其实不是,这是 chrome.storage.local API 底层的 LevelDB 数据文件。 什么是 LevelDB WAL LevelDB 是 Google 出的嵌入式 KV 库,Chromium 用它存扩展的持久数据。文件角色:文件 含义000xxx.log 当前写入的 WAL(Write-Ahead Log)000xxx.ldb 已 compact 完毕的 SSTableCURRENT 指向最新的 MANIFESTMANIFEST-xxx 版本元信息LOG 真正的运行日志LOCK 进程锁.log 是二进制格式的 KV 追加写。用文本编辑器打开会看到一堆乱码 + 部分可见的 JSON 片段——那些片段是扩展存进去的数据。 扩展 ID 反查扩展名 看到目录名是一串 32 字符: mcohilncbfahbmgdjkbpemcciiolgcge想知道是哪个扩展,几个方法: 方法 1:浏览器里查 chrome://extensions/ 打开开发者模式,右上角就能看到每个扩展的 ID。搜刚才那串 ID 就找到了。 方法 2:读 manifest.json 扩展本体在: <UserDataDir>/Default/Extensions/<extid>/<version>/manifest.json打开 manifest: { "name": "OKX Wallet", "version": "3.x.x", "description": "..." }方法 3:看 .log 里的可见字符串 Windows: findstr /C:"name" 000003.logLinux/macOS: strings 000003.log | head -50有些扩展会把 name / apiUrl / host 直接明文写进 storage,能顺出线索。 用代码正经读它 不建议手工解析二进制。装 levelup + leveldown(Node),或者用 Python 的 plyvel: # pip install plyvel import plyveldb = plyvel.DB( r"C:\Users\me\AppData\Local\Google\Chrome\User Data\Default\Local Extension Settings\mcohilncbfahbmgdjkbpemcciiolgcge", create_if_missing=False, ) for k, v in db: print(k, "=", v[:200]) db.close()注意 Chrome 必须关掉,不然 LOCK 拿不到,Python 会报: plyvel._plyvel.IOError: Lock file existsNode 版: const level = require("level");const db = level("./Local Extension Settings/mcohilncbfahbmgdjkbpemcciiolgcge"); db.createReadStream() .on("data", ({ key, value }) => console.log(key.toString(), value.toString())) .on("end", () => db.close());里面存的是什么 看到的 JSON 值大多是扩展自己 chrome.storage.local.set 存的东西。举例:密码管理器 → 加密后的密码库 广告拦截器 → 规则订阅、白名单 翻译扩展 → 用户偏好、缓存 Web3 钱包(MetaMask / OKX / Phantom 等)→ 加密后的助记词、地址簿、dApp 授权列表Web3 钱包一般用 AES/PBKDF2 之类加密助记词,密码不知道也解不出。但指纹浏览器同步这些数据的时候,就是在拷贝这个目录里的 .log。 迁移扩展数据 想把一个 profile 里的扩展数据搬到另一个 profile,直接关掉 Chrome 后整目录拷过去: xcopy /E /I ^ "C:\Users\A\AppData\Local\Google\Chrome\User Data\Default\Local Extension Settings\<extid>" ^ "C:\Users\B\AppData\Local\Google\Chrome\User Data\Default\Local Extension Settings\<extid>"Extensions/<extid> 目录(扩展本体)也要一起拷才能真正生效。 一句话总结 Local Extension Settings/<extid>/000xxx.log = LevelDB 的 WAL 文件,不是文本日志。想看内容用 plyvel/level 打开数据库;想知道是哪个扩展就查 ID 或读 manifest.json。
