sqlite - 如何定位 SQLite 数据库的密钥
问题描述
我正在使用即时通讯软件,我怀疑该软件保留了很多关于我的机器的信息(例如我的 MAC 地址)并且可能会泄露这些信息。我决定要检查软件的本地数据库并查看它在本地保存的内容。
我已经能够使用软件自己的日志转储和 Procmon 找到有趣的 DB。但是,它们是受密钥保护的 SQLite DB。
- 我有什么办法知道密钥的格式和大小是什么?会是十六进制吗?
- 我怎样才能有效地继续我的研究?我使用 procmon 进行查看,并且能够从第一次打开软件时检测到该软件第一次使用受密钥保护的数据库。但是,我无法检测到该软件使用的任何“有趣”的本地文件,并且可以暗示密钥的位置——除了正在使用的几个 Windows 注册表值——但我不太确定如何处理它。
对不起,如果我在英语中有错误,并提前感谢。
解决方案
- 我有什么办法知道密钥的格式和大小是什么?会是十六进制吗?
密钥只是明文形式(就像普通密码一样),大小(也像密码一样)由数据库的创建者定义。
- 我怎样才能有效地继续我的研究?
我建议对应用程序进行逆向工程并查找启动与数据库的连接的部分。为此,您可以使用动态分析(使用调试器)或静态分析(使用反汇编程序分析二进制文件)。
推荐阅读
- ionic-framework - ngFor ion-grid & button 中的离子输出裁剪底部
- kubernetes - 如何登录到 azure kubernetes 集群?
- machine-learning - 如何自信地评估 ML 图像分类器
- android - 当我进入地理围栏时,我不知道如何更改“btn_done.isEnabled = true”代码
- python-3.x - 如何在包含多个字典的列表中获得具有最大值的字典?
- javascript - 使用 select 过滤表数据的问题
- python - 不存在这样的文件或目录 PYTHON
- mongodb - 如何在 MongoDB 的父对象中搜索子对象?
- sql-server - SQL Server 中很少填充的表列的合适属性?
- sql-server - 键入字符串作为参数输入,返回错误消息“将数据类型 nvarchar 转换为日期时间时出错。”