LynShred 是一款基于 Tauri + Rust 的图形化文件安全粉碎工具,提供可靠的物理级文件覆写删除功能。
| 算法 | 遍数 | 覆写模式 | 说明 |
|---|---|---|---|
| US Navy (3 passes) | 3 | 全 0x00 → 全 0xFF → 随机 |
快速擦除,覆盖基本数据残留 |
| DoD 5220.22-M (7 passes) | 7 | 随机 → 全0 → 全0 → 全1 → 随机 → 全0 → 随机 | 符合美国国防部标准,平衡速度与安全性 |
| Gutmann (35 passes) | 35 | 4遍随机 → 27遍特定字节模式 → 4遍随机 | 覆盖所有常见编码方式的磁道残留,最彻底的软件擦除方案 |
- 自动检测文件所在驱动器是否为固态硬盘(SSD)
- 优先通过
IOCTL_STORAGE_QUERY_PROPERTY(Seek Penalty 查询)直接询问卷设备,无需管理员权限 - 查询不支持时回退到 Windows
fsutil volume disktype命令(需管理员) - 检测到 SSD 时会弹出风险提示,告知用户磨损均衡机制可能导致覆写失效
- 拖放支持:直接将文件或文件夹拖入窗口即可添加
- 批量操作:支持添加文件、添加文件夹(递归遍历)、多选移除
- 实时进度:后台异步粉碎,进度条实时反馈,支持随时取消
- 操作确认:每次执行前弹出二次确认,防止误操作
- 异步架构:粉碎操作在独立线程中运行,界面始终流畅
- 线程安全:通过
AtomicBool实现取消标志,无锁竞争;工作线程 panic 不会导致应用锁死 - 强制刷盘:每遍写入后调用
sync_all()确保数据落盘 - 读回验证:首个确定性图案遍写入后读回校验,确认覆写确实落盘
- 分块写入:512 KiB 分块,兼顾性能和取消响应速度
- 符号链接防护:目录递归遍历时跳过符号链接 / NTFS junction,防止越出所选目录误删链接目标
- 系统目录拦截:位于
Windows、Program Files、ProgramData等系统关键目录下的文件会被拒绝加入与执行 - 文件名冲刷:覆写前连续 3 次随机重命名,降低原文件名在目录项 / MFT 中的取证残留
- NTFS ADS 擦除:自动枚举并擦除 NTFS 备用数据流
- 列表上限:文件列表上限 50,000 条,防止枚举超大目录导致内存失控
- 攻击面收紧:禁用未使用的
shell.open能力,CSP 移除style-src 'unsafe-inline'
LynShred 2.2.1/
├── crates/
│ └── shred-core/ # 核心擦除库
│ ├── Cargo.toml
│ └── src/
│ ├── lib.rs # 库入口
│ ├── wipe.rs # 三种擦除算法实现 (3/7/35 passes)
│ ├── ssd.rs # SSD 检测 (Windows)
│ └── error.rs # 错误类型定义
├── src-tauri/ # Tauri 桌面应用
│ ├── Cargo.toml
│ ├── build.rs
│ ├── tauri.conf.json # Tauri 配置 (窗口、权限、打包)
│ ├── icons/
│ │ └── icon.ico
│ └── src/
│ ├── main.rs # 程序入口,注册 Tauri 命令
│ └── commands.rs # Tauri IPC 命令实现
├── ui/ # 前端界面 (WebView2)
│ ├── index.html # 页面结构
│ ├── styles.css # 样式
│ └── app.js # 前端逻辑,与 Rust 后端通信
├── Cargo.toml # Rust 工作区配置
├── README.md
└── LynShred.exe # 编译产物 (Release)
- Rust 工具链 (edition 2021)
- Windows (当前仅支持 Windows 平台)
# Release 构建
cargo build --release
# 产物位于
# target/release/LynShred.exe- 运行
LynShred.exe - 通过 添加文件、添加文件夹 按钮或直接拖放文件到窗口中
- 在底部下拉菜单中选择擦除算法
- 点击 开始处理
- 如检测到 SSD 会弹出风险提示,确认后继续
- 再次确认操作不可逆
- 等待进度条完成
注意:粉碎操作不可逆,请务必确认文件已不需要再执行。
- 去除只读 / 隐藏 / 系统属性后,以读写模式 (
r+b) 打开文件(缓解 TOCTOU) - 枚举并擦除 NTFS 备用数据流 (ADS)
- 连续 3 次随机重命名,冲刷目录项中的原文件名
- 按选定算法的模式序列逐遍写入数据
- 每遍写入后调用
sync_all()强制刷入物理介质;首个确定性遍读回验证 - 覆写完毕后再次随机重命名并删除文件,同步父目录
现代 SSD 使用磨损均衡 (Wear Leveling) 和垃圾回收 (Garbage Collection) 技术,操作系统对某个逻辑扇区的覆写操作不一定映射到相同的物理闪存单元。因此:
- 对于 SSD 上的文件,普通覆写删除可能无法彻底清除原始数据
- 针对高度敏感的数据,建议使用全盘加密 (如 BitLocker) 或物理销毁
原始的 Gutmann 算法专为 MFM/RLL 编码的传统硬盘设计,35 遍覆盖包括:
- 前 4 遍:随机数据
- 中间 27 遍:特定字节模式 (0x55, 0xAA, 0x92, 0x49 等)
- 后 4 遍:随机数据