Loading
1

[工具] Volatile v0.0.1 – 使用浏览器进行位反转以缓解复杂压缩技巧导致的不便

工具地址:https://volatile.saya.pw

界面样式

界面样式

功能简介

这个工具目前只做一件事情,就是对输入文件的每一 bit 都进行位反转操作,然后再把反转完的文件下载回你的电脑里,其速度取决于电脑性能。

被处理过的文件没有办法直接打开,需要用这个工具再进行一次位反转操作才能恢复正常。

我的主要目标是提供一种更容易操作的防爆方法。如果没有对安全性的额外要求的话,理论上可以直接打一个不加密的 zip 包,然后使用这个工具把 zip 包处理一遍再分享出去,分享出去的 zip 包几乎不可能直接在网盘内解压,也几乎不可能被其他压缩软件直接打开(毕竟网盘和压缩软件不知道这个文件是位反转过的)。

使用方法

内容分享者的使用步骤:

  1. 你作为内容上传者已经将资源打包完成,比如说压缩包的名字叫“A.zip”
  2. 打开工具网址
  3. 选择“Compress & Encrypt/压缩并加密”模式
  4. 点击文件输入框,找到并选择“A.zip”
  5. 点击“Execute/执行”
  6. 正常情况下,浏览器会开始下载文件,文件名会有一个前缀“enc_”表示这个文件是经过一次加密的,等待文件下载完成后分享这个文件即可
  7. 在分享文件时附带工具地址

内容下载者的使用步骤:

  1. 下载被处理过的文件,比如说就是上文中的“A.zip”
  2. 打开分享者提供的工具网址
  3. 选择“Decrypt/解密”模式
  4. 点击文件输入框,找到并选择“A.zip”
  5. 点击“Execute/执行”
  6. 正常情况下,浏览器会开始下载文件,文件名会有一个前缀“dec_”表示这个文件是经过一次解密的,可以用通常的方法打开

为什么需要访问一个网站

我研究了一阵子,最后没有找到能够完全离线处理大文件的方法,只能退而求其次使用 Service Worker ,这个 Service Worker 能够模拟服务端向客户端发送文件。

这个工具目前只是 StreamSaver.js 的一个简单封装,使用 stream 去读写文件,这样处理大文件的话应该不会爆内存。

性能与内存占用情况

我的 CPU 是 i9-10900K ,处理速度在 20MB/s~30MB/s 之间浮动:

处理速度

处理速度

我使用的浏览器是 Edge 129.0.2792.79 ,加解密 2 GB 的文件内存占用在 1.3GB 左右(不过我开了几十个 tab ,由这个工具实际占用的内存应该比较少):

文件大小 2.2GB ,快处理完成时的内存占用情况

文件大小 2.2GB ,快处理完成时的内存占用情况

如何部署一个自己的版本

这个工具一共由 5 个文件构成:

  1. https://volatile.saya.pw/index.html
  2. https://volatile.saya.pw/StreamSaver.min.js
  3. https://volatile.saya.pw/ponyfill.min.js
  4. https://volatile.saya.pw/mitm.html
  5. https://volatile.saya.pw/sw.js

若要自己部署,你需要找一个能够帮你 host 静态文件的服务提供商,比如说 github page 或者 gitee page 。我的自己使用的方法是境外服务器 + cloudflare 。

然后把这 5 个文件下载下来,放进你自己的服务器里就行了。

其中 index.html 文件内有具体的业务逻辑,没有做任何压缩或混淆,你可以随意修改,制作一个属于你自己的加解密工具,只要记得在分享文件时带上你自己的工具链接就行。

下一步计划

接下来,我会尝试让使用者能够以一种简单的方式去定义处理数据的过程。目前的加解密过程是写死的,就是简单的位反转,但这样的话实际上只是又创建了一个固定的私有文件格式而已,我希望加密的过程是可以由用户自己定义的。

此外,我希望在这套工具内集成一个压缩软件(可能会使用 wsam 去实现),内容分享者可以直接把文件夹拖拽进页面,然后页面会直接进行压缩和加密操作(这也是为什么第一个模式的名字叫“压缩并加密”,而不是仅仅叫“加密”)。

最后,工具的可用性也有待提高,比如说如果能直接拖拽文件,而不是必须通过点击文件输入框选择文件的话,易用性应该会更高。