javascript - 无法使用可读格式的 JavaScript 读取 IndexedDB sqlite 文件
问题描述
这是我从本地托管网站的 IndexedDB 存储 sqlite 文件中获得的一些内容。(从 Mozilla Firefox 获得)
SQLite format 3@ �.O| �;�� [�������- 3�triggerfile_update_triggerfileCREATE TRIGGER file_update_trigger AFTER UPDATE ON file FOR EACH ROW WHEN NEW..
..
��tabledatabasedatabaseCREATE TABLE database( name TEXT PRIMARY KEY, origin TEXT NOT NULL, version INTEGER NOT NULL DEFAULT 0, last_vacuum_time INTEGER NOT NULL DEFAULT 0, last_analyze_time INTEGER NOT NULL DEFAULT 0, last_vacuum_size INTEGER NOT NULL DEFAULT 0) WITHOUT ROWID ��'- reduxhttp://localhostƸ&~ʘ�
我用 JavaScript 函数 reader.readAsText(file); 获得了它。
由于它是用于取证分析的,因此我无法使用常规 IndexedDB 函数获取它。同源政策不允许我。这个来自本地主机,但其他一些网站也有同样的问题。
如果我将其读取为 reader.readAsArrayBuffer 它会给我这个: [object ArrayBuffer] 作为输出
右键单击 + 检查 + 存储 + 索引数据库很好地显示了它,但我不能总是使用同源策略再次使用它。
我尝试了每种编码,但无法将其转换为正确的显示。一些字符表示为?并在其他一些编码中作为框。例如 http://localhost 在末尾有一些错误表示的字符。有什么办法可以以可读的形式获得它?
编辑
数据显示在 Firefox 和 Chrome 的开发者工具中没有任何问题。我还可以通过这个开发者工具访问我自己网站的数据。我也可以使用这里描述的 IndexedDB 代码访问它https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API
这些数据存储在 C:\Users<userprofile>\AppData\Roaming\Mozilla\Firefox\Profiles<profile>\storage\default\ 下的 .sqlite 文件中
我的问题是,当这些数据是通过逻辑提取从某人的计算机外部获取时,我需要解析这些数据。我尝试制作自己的网站并交换 .sqlite 文件以显示数据。它没有用
解决方案
您需要参考:- SQLite 数据库文件格式。
初始数据来自标头(前 100 个字节),为 SQLite 格式 3。是 >0 16 The header string: "SQLite format 3\000"
您需要使用 SQLite 阅读它(例如 SQLite 工具,例如 Navicat for SQLite、DBeaver、DB Browser ....)或做很多工作来编写自己的阅读器。
但是,从您显示的内容来看,标题似乎不够长。看起来标头只有 46 个字节而不是 100 个字节。您不会triggerfile_update
进入标头。
也许可以在具有十六进制功能的编辑器中查看它,例如 NotePad++ 有一个十六进制编辑器插件。使用它,示例 SQLite 数据库的标题如下所示:-
直到很久以后,模式的数据(表的定义等)才出现:-
因此,文件可能以某种方式损坏。
推荐阅读
- python - 如何使用 python 获取笔记本电脑的充电值
- javascript - 在 vue js 中将 array.length 作为道具传递
- python - 禁止使用诗歌发布到 PyPi
- android - How to create Image view background like this?
- typescript - Mind Bending LinkedList Implementation in TypeScript
- python - Fetch non-empty cells from .xls file using pandas
- python - win10上的tensorflow-gpu安装问题
- javascript - 为什么 .charCodeAt() 不能确保您可以在此 Javascript 算法中找到丢失的字母?
- javascript - react中的自定义排序
- talend - Talend - 如何禁用检查额外功能?