teddyxlandlee 发表于 2024-6-1 22:33:11

【T2O】喜报:可能是搓了个加密网盘

本帖最后由 teddyxlandlee 于 2024-6-1 22:35 编辑

省流:扫码下载原文如此加密原文如此精彩图片,感受隔壁BB群S之遗风
https://s2.loli.net/2024/06/01/fKjt4aBbX3FDIlS.png

static/image/hrline/4.gif

去年年底购买了一个域名:7c7.icu。尽管早些时候注册了 daozhi.de,但其名称只是用来玩梗的罢了(buwanyuanshen.daozhi.de | 不玩原神导致的、math.daozhi.de)。
当时有想过绑一个短域名平台,也确实绑了个 link.daozhi.de(匿名短链接,例如 link.daozhi.de/qNAEiH),……虽然 daozhi.de 还算短吧(和ads.google.com一样长)但是拿这么个名字用作正经用途,还是有点……怪怪的。
我还是想搞一个自己特色的域名,于是在预算允许的情况下,买了 7c7.icu。
关于 7c7 / #77cc77 这个符号,一年前我就开始用了(MBW页面)。
在 MCBBS 时代,也有人猜测这个符号是什么意思。
有说是一种颜色(后来我确实拿这个颜色作为 SPXX 翻译者的颜色);也有说是出自“寻寻觅觅,冷冷清清,凄凄惨惨戚戚”
——后者是迄今为止最接近的答案了,这句诗确实是我使用这个符号的灵感。
域名够短,可以用来做很多事情。但是当时没想到啥,只是绑了个 a.7c7.icu 挂了个短链接服务(类似于 aka.ms/winget 那样的具名短链接)。

static/image/hrline/line5.png

今年1月份,我找回了两年前落在不知何处的PGP公钥。
与此同时,我开始琢磨一些关于加密(非对称加密、对称加密)之类的问题。
正好我想起,好像是中国移动还是谁的短信里的“安全链接”好像是长这样:https://example.net/#XXXXXX
上网一查,果然#以后的内容不会主动传给服务端,也就是说除非有前端脚本主动上传,否则服务器即使知道文件路径,也永远不知道#后面的文件密码。

于是乎我打算搞一个加密的文件存放处:s.7c7.icu
(仅一个字符长的子域名“s”其实就说明了规划这个网站早有预谋)

我是先想好下载模块该怎么做的。毕竟预算有限,我秉持着在使用相对流畅的情况下,能用免费资源就用免费资源的思想。而静态托管站当然是免费的啦。
下载模块只需要静态网页就能运行——这就牺牲了直链下载(用wget、cURL直接获取文件内容)的功能,但是出于“加密文件存放处”的设计初衷,如果采用直链下载,那么密码必然会在互联网上传播,这就不好了。

然后下载模块的第一版雏形就有了。我当时画了纸质版的工作原理图,原件找不到了,但是还有照片,想要的E-mail我(teddyxlandlee@hotmail.com)。

同时也做了上传端的构想,最开始想的是做成纯网页(这样兼容性最好,甚至兼容手机浏览器):


[*]上传的时候,前端就自己生成一个密码,把文件按照特定的方式加密好,并且自行保管密码。
[*]把文件的元信息,包括(加密前的)文件名、文件大小、Hash等存入一个 meta json 中。
[*]如果文件加密后>4.0KiB,就给 data.s.7c7.icu 服务器发上传请求,服务器会把文件存下来,并且返回一个地址。文件内容会作为“引用”存入 meta json 中。
[*]如果文件加密后≤4.0KiB,就直接把文件内容塞进 meta json。
这种文件reference方式,其实早在去年春天(4月份左右)就已经运用到终末之诗扩展补丁Mod(EPX)的推荐资源包下载了(前端代码,哪来的后端),我也是在那时候知道有同源策略这个东西存在的。
[*]把 meta json 上传到 meta.s.7c7.icu。
[*]全程需要 upload.s.7c7.icu 提供的令牌。而获取令牌的验证方式,当时想采用的是 2FA App 的方式,不使用用户名密码,注册纯靠我自己后台上传。


当时也做出了上传端前端部分的雏形:upload.html(此页面设计中应当代理 https://upload.s.7c7.icu/ )
问题是我从来没有接触过后端,更不知道怎么白嫖 Netlify、Vercel 的空间和算力,好在这两年AI兴起,学习后端的成本比较低了,很多时候能看懂AI写出来的代码就够了
……吗
当时研究了两个周末没研究明白,留下一摊废代码,想要的E-mail我,反正跑不了。

遂摆烂。

static/image/hrline/line9.png

其实现在三次元生活越来越繁忙,像这种不定期发作品都是诈尸级别的表现了。
嗯对,这个家伙在3月32号4月1号又突发奇想发了个模组:Poem Lover,当时在 HiMCBBS 和隔壁 MineBBS 发了帖。
它的功能是让玩家每次从末地回主世界都看一遍终末之诗,仅在客户端安装,服务端无需安装,可以在多人游戏用。
甚至留下了设计原稿(周六在学校写的

哦对,愚人节顺便留下了牢坛复活站和MCBBS.daozhi.de两份整活作品,访问量都快破千了。

这次六一做这个,倒是没有像上次愚人节那样的契机。还在过六一?
就是突然想到,诶我这么个东西三个月之前就放弃了,但是它其实能做。
虽然通过后端的权限控制比较困难,但是我可以干脆放弃用户系统,并且假定有上传权限的人都是绝对守规矩的人!
——有点退而求其次,但是这样做一个标准的 Python 脚本,作为客户端 uploader,其实就够了。

——然后它就有了。(本来以为昨天晚上加今天上午就能干完,看来我还是太自信了)

现在这么个站基本就是可用的状态:存储白嫖GitHub,网站用Netlify;下载者只要有个链接就能用浏览器下载,上传者只要有token就能用脚本上传。
上传脚本的效果大概就这样:

链接结构和初版基本上差不多,只不过200代理没搞明白怎么传递“s.7c7.icu → meta.s.7c7.icu” 这么一条信息,就只好做成302重定向了。

static/image/hrline/5.gif

你要说从23年下半年到现在,大作品已经不发了,况且MC社区的大环境也受到了巨大打击,这种小打小闹有啥现实意义不。
——多少有一些吧。

[*]去年十月份左右搞的XDecompiler,用来生成MC反编译代码和资源的GitHub私有仓库,挂在actions上尚能一战,个人感觉相比于Nickid的GitMCDecomp还是略胜一筹的。
[*]十一月份搞了个二十四点游戏的 Spigot 插件,算法是独立研究出来的,当时在学校研究了俩礼拜。
[*]link.daozhi.de 和 a.7c7.icu 短链接,已经成为了我生活的一个基础设施了。比如说 MCBBS.rip 的扫雷:https://a.7c7.icu/bbsweeper,或者刷到的 Glish 语言小网站: https://a.7c7.icu/glish,有短链接就可以省的去记网址了。没错我是有记网址的习惯的,不像有些人看个百度热搜还要在Edge搜索框搜“百度”
[*]中间花几个晚上断断续续完成的 qr.7c7.icu,已经被我用来进行小容量(几十KiB)电子数据的线下邮递了话说刻张CD-ROM不更香吗 讲真这玩意确实避免了我四处找二维码生成网站的麻烦,懒得找就自己做一个。
[*]再就是今天的 s.7c7.icu 了,算是补全了分享中等容量私密文件的一道坎。


s.7c7.icu 是可以复制的。参考 s7c7icu/static(静态网页部分 | 下载)、s7c7icu/main-stub(Redirector)和 s7c7icu/uploadClient(Python 客户端 | 上传),你也可以搞一个。话说我为什么懒到不写README

甚至静态网页你可以直接用我的基础设施,只要你设置好同源策略就行(把 Meta 和 Data 部分的 CORS 设成 * 或 static.s.7c7.icu)。

——甚至前端网页都可以另起炉灶,因为 download.js 才是下载的基础设施。
你甚至可以拿这玩意做加密博客——这也是我想过的。罢,罢,没时间研究了,摆烂烂(构想中的是 Markdown 原文被加密,URL 带 hash 访问可以解密,然后渲染成 HTML。能研究出来者重赏


害怕

FlashDragon 发表于 2024-6-1 22:49:38

小白表示一点看不懂,我只想说一句,大佬NB!

teddyxlandlee 发表于 2024-6-1 23:01:19

本帖最后由 teddyxlandlee 于 2024-6-1 23:13 编辑

关于许可协议(License)的问题,刚才想了一下。
上面提到的跟 s.7c7.icu 相关的代码,暂以 CC BY-SA 4.0 协议分享。(其实CC协议都是没有后悔药的awa

后面想起来了我再去把 License 和 Readme 文件补全。
有些代码是用 ChatGLM 跑出来的,所以有亿些比较详(fán)细(suǒ)的中文注释。[贴吧_阴脸]跟我的代码习惯确实不太一样哈哈

static/image/hrline/2.gif

多说一句:上面提到的PoemLover模组(今年愚人节做的),还是一如既往的 一个 JAR 支持多版本(1.18+)及多平台(Fa/Fo/Neo/Quilt),工作原理也是一如既往的ASM 黑科技,正经人谁引入 MC本体 做依赖啊

四分之一的紫晶 发表于 2024-6-2 23:07:09

二维码内容:
https://s.7c7.icu/suF0zN#6PE_sTmAPLv7yXG3CW778Rp2N-te6QtOFKp06aAML9Ijp9LCFVPahcFB-oRMhS4EzIhN7mjH_g8=

teddyxlandlee 发表于 2024-6-3 23:45:55

四分之一的紫晶 发表于 2024-6-2 23:07
二维码内容:
https://s.7c7.icu/suF0zN#6PE_sTmAPLv7yXG3CW778Rp2N-te6QtOFKp06aAML9Ijp9LCFVPahcFB-oRMhS ...

可以下载下来看看
有没有种可能是可以直接点击的呢

冰川橘子 发表于 2024-6-4 03:54:25

很好!虽然我大概率不会用

teddyxlandlee 发表于 2024-6-4 13:50:55

冰川橘子 发表于 2024-6-4 03:54
很好!虽然我大概率不会用

上传只需要一行命令(使用Python脚本),下载只需要一个网址。只不过前者需要一个GitHub账号(得有仓库权限)和GitHub Token。

如果说自建站同理,但是需要额外配置一大堆像DNS绑定、CORS策略设置之类的一大堆问题,这些恐怕不是你能handle的了了

teddyxlandlee 发表于 2024-6-9 21:35:25

喜报:上周把200代理搞定了,方法是fork出了一个download.html
页: [1]
查看完整版本: 【T2O】喜报:可能是搓了个加密网盘