Sarvesh2005-code/subtext
GitHub: Sarvesh2005-code/subtext
Subtext 是一个将关系型 SQL 数据隐藏在图像像素最低有效位中的离线数据库引擎,实现了数据存储的隐蔽性与可否认性。
Stars: 0 | Forks: 0
# Subtext 🥷
**数据库是一个谎言。**
Subtext 是一个高性能、离线的关系型数据库引擎,它摒弃了传统的存储文件。相反,它通过数学计算,将标准的 SQL 表数据嵌入到标准图像目录的最低有效位(LSB)中。
对于操作系统来说,你拥有的是一个存放高清壁纸的文件夹。而对于 Subtext 来说,你拥有的是一个完全符合 ACID 标准、由 SQL 驱动的只追加日志(Append-Only Log)。
## 惊艳之处
没有云端。没有 `.db` 文件。没有网络连接。
```
$ ls -l ~/Pictures/Wallpapers
-rw-r--r-- 1 user staff 5.2M bg_01.png
-rw-r--r-- 1 user staff 4.8M bg_02.png
-rw-r--r-- 1 user staff 6.1M bg_03.png
$ subtext sql ~/Pictures/Wallpapers "SELECT username, hash FROM users WHERE id = 1"
+----------+----------------------------------+
| username | hash |
+----------+----------------------------------+
| sarvesh | a9f0e61d137b... |
+----------+----------------------------------+
```
## 工作原理
Subtext 将一个包含 PNG/JPG 的文件夹视为一个碎片化的虚拟文件系统(VFS)。
1. **MBR:** 第一张图像的前 64KB 作为主引导记录(Master Boot Record),用于存储动态 SQL Schema Registry。
2. **LSM 架构:** 为了避免为了单个 `UPDATE` 而重写整个 5MB 图像所带来的 CPU 开销,Subtext 以日志结构合并树(LSM)的方式运行。数据被序列化为超密集的 `postcard` 二进制文件,并按顺序追加到图像的像素中。
3. **合理的可否认性:** 在任何数据接触像素之前,它都会通过确定性的 XOR 密码进行掩码处理。对原始图像运行 `strings` 只会产生加密噪声。在视觉上,像素的 RGB 值最多偏移 ±2,这使得数据在人眼看来在数学上是不可见的。
## 安装与使用
**1. 初始化目录**
将一个标准的图像文件夹转化为 Subtext 存储块。
```
subtext init ./my_images
```
**2. 执行 SQL**
Subtext 支持标准的单表 CRUD 操作。
```
subtext sql ./my_images "CREATE TABLE secrets (id INT, payload TEXT)"
subtext sql ./my_images "INSERT INTO secrets VALUES (1, 'The ghost is in the machine')"
```
**3. Vacuum(垃圾回收)**
因为它是只追加日志,所以更新操作会留下“死像素”。运行 vacuum 来压缩数据并释放图像容量。
```
subtext vacuum ./my_images
```
## 安全 OPSEC
默认情况下,Subtext 通过对目录的绝对路径进行哈希处理来保护 XOR 密码。为了获得真正的安全性,请通过环境变量提供你自己的加密密钥:
```
export SUBTEXT_KEY="your_super_secret_key"
```
*为隐匿而生。掌控你的领域。*
标签:LSM树, SQL, 信息隐藏, 关系型数据库, 可视化界面, 存储引擎, 系统审计, 通知系统, 隐写术