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, 信息隐藏, 关系型数据库, 可视化界面, 存储引擎, 系统审计, 通知系统, 隐写术