因为烦恼 home 目录的杂乱,bing搜索「home目录清洁」,得到一篇博客: 码农的自我修养之保持干净的 $HOME 目录 - 少数派 以及它的 GitHub pages 地址 保持干净的 $HOME 目录
补充: markdown 的超链接文本遇到有
$需要转义,写作\$,否则可能解析出错。
然后在这个 GitHub pages 发现很多个人内容,关于生活而非技术。 好奇之下走马观花浏览一番,其中一篇博客居然要求密码: 回忆-毕业十年
按理说静态页面是没有服务端交互的,它怎么实现加密的呢?网上搜搜,找到 一篇帖子, 其中 6 楼有一个回复提供了一个 静态博客加密案例。 略微研究一番源码,原理不难,就是部署加密文件而非明文 HTML,然后在浏览器输入密钥解密。 这个思路可以借鉴,但是不推荐使用。
回到前面的博客,要知道 GitHub pages 是公开的,也就是可以查看源码的。
如果 GitHub 用户名是
xxx,那么博客地址就是xxx.github.io,源码地址就是github.com/xxx/xxx.github.io。
查看源码发现该博客是用 vue 写的,并不是前面案例的方案。 vue 生成的不是一般的静态网页,而是 webapp。因为不熟悉 vue,它又不是一般的 js,无从下手。 偶然尝试新标签页打开链接,居然显示内容了!只是一秒钟后又要求输入密码,并且锁定背景。 根据这个发现,可以推测要求密码完全是「防君子不防小人」,哈哈。
首先测试 curl 下载 html,验证可行,可以看到全部内容! 然后仔细审查源码,发现博客内容是用 markdown 编写的,完全明文。 至此成功「破解」,虽然不是正面突破,但是密码攻防就是如此,百密一疏就是致命。
EOF
翻阅文件发现了这篇一个月前的随笔,整理成文。
另外,之前没有破获密码有些遗憾,考虑到既然是全部明文,那么密码应该也是明文, 于是又查看那个博客的源码,果然找到了线索,在 这个文件 里发现了「私密访问」。文件很短,也没有复杂逻辑,其中要求密码的代码如下
| |
可以看到密码判断逻辑 btoa(password ?? '') === 'OTUzNg=='。
因为不常用 JavaScript,搜索得知其有两个函数 btoa 和 atob 用来编解码 base64。
打开浏览器控制台,输入 atob('OTUzNg==') 得到 9536,这就是最终的密码。
打开加密的博客,因为内容过多、网络很慢,竟然将近 10 秒的自由阅读后才要求密码😀。 输入上面获取的密码,果然通过。
EOF