Decayfmt - 一种每次打开都会稍微损坏自己的文件格式
在《本周 Rust》第660期中介绍。一个每次打开都会稍微损坏自己的文件格式。每次打开都会永久性地损坏磁盘上的文件,损坏的程度在文件名中嵌入,在你看到之前。文件本身无法恢复。这个文件是唯一重要的副本,每次读取都会毁坏它一点。两种文件类型:.idcy<x> 用于图像(例如:photo.idcy3),.tdcy<x> 用于文本(例如:note.tdcy7),x是文件名中的正整数,不稳定性参数。x越高,每次打开的损坏越多。观察它如何衰变 上面的网格是同一幅图像在x=1,x=3,x=8和x=15时编码的,每种情况打开的次数相同。同一张图片,四种衰变速率。为了在单个打开中跟随一个不稳定值,每次打开都在磁盘上进一步损坏文件,而没有回程:干净的原件:不稳定性 1次打开后 3次打开后 x=3(温和) x=10(严重) 在x=3时,图像在多次打开中优雅地退化。在x=10时,打开一次几乎消失,三次后纯粹噪声。x是从缓慢消退到几乎瞬间毁坏之间的拨轮。文本以同样方式退化。以x=1编码的一句话(缓慢燃烧),在几次打开后打印:原始:这句话在消亡,每次你阅读它都会让它更死去一点。 开一次:这 sgntence 是 d+ingd!而且每次你 re&p 它 P~u kiKl 它都会多死一点} 开三次:这 sgfxFn0e 在 d+ingd 3D6 每 tibe 你 re&" 它 P~u kiKl 它 1ittl> m1re} 开六次:TIbm sgf}Fn0e ts d+iqgd yD6 ev*ry tibe 你 re&" )t Pnu kiKB )t aC1it"l> m1^e} 开九次:T/Sm sgf}Fk0- ts d|iqgd HD6 e@*rV tiFe 你 re&" )t Pnu kiKB )tpaC1it"lYMm1^>} 开十二次:h/Sm hgf}Nk0-'ts?K|iqgd HD6 e@`~V}t&Fe y%u re&" )2 Pnu kiKB )6UaC1it1lYMm1]b! 损坏只是替换可打印字符,所以文本会变成看起来像是可读的胡言乱语,而不是二进制噪音。 这是 decayfmt 和不是 decayfmt 的东西,是一个通过数学而不是密码学强加的社会契约。它不是加密,不是 DRM,也不是安全删除工具。损坏是诚实的,并且仅从文件中无法恢复,但任何拥有备份或十六进制编辑器的人都可以战胜它。如果你想要原件,请保持备份。如果你不希望任何人恢复它,请不要制作一个。 安装 使用cargo 如果你有Rust工具链,最快的安装方式是已发布的crate:cargo install decayfmt 从发布中 下载适合你平台的二进制文件,并将其放在你的PATH中。没有运行时依赖需要安装。在macOS上,二进制文件是未签名的,所以首次运行可能会被Gatekeeper阻止。右键点击它并选择打开,或者使用 xattr -d com.apple.quarantine decayfmt 清除隔离标志。 从源代码 需要Rust工具链。cargo build --release 二进制文件生成在 target/release/decayfmt。 快速开始 在你的终端中看到它衰变,不需要图像或示例文件:echo "this sentence is about to start dying" > note.txt decayfmt encode --input note.txt --output note.tdcy8 decayfmt open note.tdcy8 不稳定参数x来自输出名称(note.tdcy8在x=8下衰变)。再运行几次最后一行,观察每次打开后句子如何进一步腐烂。损坏在打印之前被写入磁盘,因此没有回程。像8这样高的x会迅速损坏;像1这样低的x在多次打开中是缓慢燃烧。在Windows PowerShell中,>重定向写入UTF-16,而decayfmt拒绝;请改为使用 Set-Content note.txt "this sentence is about to start dying" 创建文件。cmd.exe和PowerShell 7对上述行没有问题。 用法 编码 将源图像或文本文件转换为decayfmt文件。编码从不损坏;新文件是干净的。 decayfmt encode --input photo.png --output photo.idcy3 decayfmt encode --input note.txt --output note.tdcy7 文件类型和不稳定性x来自输出名称:图像用idcy表示,文本用tdcy表示,后面跟着x作为正整数(photo.idcy3是在x=3下的图像)。输出名称如果不能打开,则拒绝而不是记入。 图像解码为原始RGBA;文本必须是有效的UTF-8。 打开 打开一个decayfmt文件。这会在磁盘上就地损坏它,然后显示结果。图像将在系统的默认图像查看器中打开。文本打印到终端,当没有终端时(例如从文件管理器启动时),它也将在默认文本编辑器中打开。 decayfmt open photo.idcy3 decayfmt open note.tdcy7 x从文件名中读取,因此重命名文件会改变下次打开的难度。 损坏的工作原理 在每次打开时,从x派生出每字节的损坏概率:p = 1 - exp(-x / 10) 所以x = 1大约每次打开损坏9.5%的合格字节,x = 5大约39%,而x = 10大约63%。随机性来自一个从操作系统熵的密码安全生成器,永远不来自固定种子,所以两次打开同一状态的结果看起来不同,损坏序列无法重放。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡