delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

30 Aug 2025

改善大量重复内容文件的 tarball 压缩效率

有时,我们会希望分发包含大量重复文件的 tarball。绝大多数情况下,tarball 都会进行压缩, 进行适当的预处理有助于显著地提高压缩效率。

数据压缩的基本原理是利用数据中的冗余,通过更短的编码或规则表示重复或可预测的内容, 从而减少存储或传输所需的空间。简单的例子中,比如连续重复的字符「AAAAAA」可以表达为「6A」, 然而,当重复数据分布在较长范围内时,压缩算法很难直接发现和利用这些远距离的关联, 因为需要额外记录位置或匹配信息,这种匹配开销很大,做的话会严重影响压缩速度并且可能收益不高。 对于文本文件来说,其中的许多内容会高频率地出现,而如果一个 tarball 中包括数个内容一样的大型二进制文件,压缩算法很难有效地检测并对他们进行正确的处理。

Read more...
14 Jul 2025

捞女游戏 / 情感反诈模拟器 第三章

随着年龄的增长,我已经不怎么正经玩游戏了,不过由于独立日这段时间有两个星期只有我自己在家, 加上最近在 YouTube 上看到了游戏中第三章男女主酒吧对手戏的片段感觉制作相当不错, 所以在 Steam 上买了一份。

情感反诈模拟器(原名「捞女游戏」)是一款真人互动式影游, 其剧情画面是活的演员预先录制而非即时渲染。 这种形式有点类似于九十年代出现的互动式DVD(DVDi), 不过看起来分支可以比那时复杂许多,甚至可以加入一些业务逻辑。 这个游戏本身看起来是用 Electron 实现的,对代码做了少许混淆(bytenode),在运行过程中大部分时间实际上是在播放影像。 早期版本曾经可以直接在游戏启动器(使用的是明文的 JavaScript)中暴力注入一段启用远程调试的代码, 从而用一个单独的浏览器就可以调试游戏了,后来更新的版本中游戏制作者将入口堵住了🤣。 不过,这个游戏吸引我的并不是它采用的技术,所以关于技术的讨论到此为止。

以下内容可能包含剧透,并且可能涉及不适合未成年人观看的内容,请仔细斟酌是否要继续阅读。

以下内容可能包含剧透,并且可能涉及不适合未成年人观看的内容,请仔细斟酌是否要继续阅读。

以下内容可能包含剧透,并且可能涉及不适合未成年人观看的内容,请仔细斟酌是否要继续阅读。

Read more...
21 Jun 2025

Postmortem: 关于 xzutil 后门事件的一些事后复盘

说明:这是关于北美时间2024年3月28日披露的 xzutil 后门事件的一些事后复盘。 关于漏洞本身的一些更为详细的背景和细节以及其发现过程, 在 Bryan CantrillAndres Freund 的这次 访谈 中有相当详尽的说明。由于漏洞并非我们发现,在此便不再赘述漏洞本身的细节。

值得庆幸的是,我们有足够的理由认为这次事件中 FreeBSD 并没有受到影响,但这里有相当大的运气的成分, 整体而言,我们的流程并非无懈可击,因此有必要进行一些总结。

背景

自称叫「Jia Tan」的开发者花费了两年的时间逐渐取得了上游社区的信任,并最终成为了 xzutils 的维护者。

攻击者在 2024 年 2 月 23 日在源代码中的一处二进制文件中放置了后门,并随后发布了 xz 5.6.0。 攻击者发布的源代码包中,以巧妙地方式增加了激活后门的脚本。值得注意的是,这些脚本从未进入过 xzutils 的 Git 代码库,因此躲过了包括 FreeBSD 在内的开发者进行的日常代码审计(值得说明的是,由于这些脚本通常是自动生成的, 体积庞大且随 autoconf 等工具的版本变化很大,因此其内容审计难度较大。比较稳妥的做法是从人类易读的 autoconf 文件中重新生成这些脚本)。

由于后门代码最初版本的 bug,攻击者在接下来的两周时间进一步对后门进行了修补以增加其发现的难度。

主要的 Linux 发行版,包括 Debian 和 RedHat,均在其开发版本中跟进了这些变动。 由于 systemd 的插件设计,这些变动导致后门被插入到了这些 Linux 发行版中的 sshd 服务中。 由于后门引入了一系列计算密集的代码,人们逐渐注意到了一些奇怪的性能问题。

最终,PostgreSQL 开发者,就职于微软公司的 Andres Freund 在经过了一段时间的性能追踪之后, 正式确认了 xzutils 后门的存在,并立即通知了主流发行版的安全团队。

我本人也在第一时间收到了通知。当时是太平洋时间的中午,我没有携带解密所需的密钥, 但由于这一讨论相当热烈,加上邮件标题并不加密,因此我大概知道了发生了什么事。

Read more...
21 May 2025

再见, sirius (2010-2025)

delphij.net 搬到美国之后,一直是在大河的 FMT-1 的 sirius.delphij.net 上运行的。 这台机器是 iXsystems 组装,于2010年5月20日上线的,采用 Intel Xeon L5630 处理器, Supermicro X8STi 主板,当时配了24GB内存,4块1.5TB硬盘,后将硬盘替换成了3块2TB+ 1个SSD。

在今年折腾新机器的时候,这台机器上的三块硬盘突然无预警暴毙了一块。我于是加快了迁移的速度。 5月20日在这台机器上线15周年的时候,所有的服务都已经迁移到了新的机器上, 于是我去大河最后一次关机,把它拉了回来。

过去十五年中,这台机器除了2015年有一块硬盘坏过一次(当时采用的是整体替换)之外基本上没有出过其他问题。 我去机房的间隔基本上是以年为单位的。

再见。

Read more...
25 Apr 2025

购买二手硬件的一些人生经验

以往我是不直接在 eBay 上购买二手硬件(这不包括美国比较常见的「翻新refurbished」硬件, 这类卖家往往是比较专业的回收处理机构)的,原因是购买此类硬件多少有点像拆盲盒: 二手硬件的质量往往缺乏统一且一致的标准,并且通常只提供较短的退货窗口。

不过 上回书 说到我收了一台二手的 Dell R740 服务器,既然选择了消费降级索性一降到底试试看买二手内存和存储。

Read more...
26 Mar 2025

Debrand Dell Vxrail E560

最近从张师傅那里获得了一台来自政府换新时拍卖的二手 Dell VxRail E560, 这是 Dell/EMC 「超融合」概念的机器,实际硬件和 Dell PowerEdge R640 是一样的。

由于我并不需要使用 VxRail E560 系列增加的一系列 VMWare 功能, 将其变回 PowerEdge R640 可以让管理员获得更多的对于固件的控制。 这里记录一下过程。

首先是在 Dell 下载 4XHVW,找到其中的 Flash BIOS executable (目前版本是 4XHVW_14G_DBE_CustBSU_3_00.exe )。

这个 exe 文件是一个 7zip 的自解压文件。 FreeBSD 里可以用 7z 解压得到一个 4XHVW_14G_DBE_CustBSU_3_00.pm 的文件。在 iDRAC 中把它作为系统更新安装上去。之后,对 iDRAC 做回厂复位,然后重新对机器做 power cycle 即可。

全部操作可以在远程完成。

Read more...
12 Feb 2025

C++ 中的 main 定义

新的 C++ 标准中 不允许给 main 指定 linkage-specification 了。

当然,考虑到原本 main() 也是 C 运行环境在开始运行程序的时候调用的, 而 C 运行环境自然也预期 C linkage,即不按照 C++ 的习惯对符号根据参数增加名字前缀, 因此大部分编译器在遇到 C++ 程序定义全局 main() 的时候也会按照习惯采取 C linkage 方式去翻译。这一规则首先被 GCC 采纳,随后 LLVM 也跟进了。

Read more...
13 Jan 2025

【公告】关于 woodpecker.org.cn 网站已经停止维护的说明

转载自 khsing 今天在 python-cn 发表的公告。 我本人早年也曾经参与过啄木鸟社区的维护,在此特别声明,我与现在的这个 woodpecker.org.cn 没有任何关系。 除此之外,本人之前在啄木鸟社区发表的内容采用的是 CC BY-NC-SA 1.0 许可,从未授权商业使用, 本人保留在法律许可范围内向目前域名的所有者,以及在美国境内为其提供网络服务的供应商进行追索的权力。


大家好,

因多种原因,原啄木鸟社区网站 (woodpecker.org.cn) 已于2021年5月停止运营。然而,我们近期注意到有人重新注册了该域名,并使用网站原有的内容继续冒充啄木鸟社区名义继续运行,及使用 Google Ads 牟利。

我们此前已经尝试过多次试图联系此人均未得到回应,在此特别提醒大家:

  1. 原啄木鸟社区网站早已经停止运营,原管理团队、豆瓣与目前的域名持有人无任何关联。

  2. 鉴于目前的域名持有人对我们的联系尝试做出任何回应,我们无法排除该网站以冒充原网站的手法采用钓鱼的方式,从而试图获取此前用户登录凭证的可能性。因此,请大家不要再登录该网站。如果此前登录过网站,并且密码在其他网站使用过,请假定密码已经失窃,并立即修改在其他地方使用的密码。

  3. 目前的域名持有人使用了无效的网站原备案信息,这有可能涉嫌违反中华人民共和国有关法律法规。

  4. 原啄木鸟社区团队强烈谴责其冒充行为以及通过冒充牟利,并保留依法追究其法律责任的权力。

感谢各位蟒友多年来的支持与厚爱


Read more...
30 Dec 2024

新的 arc4random_uniform 实现

本月初, Robert Clausecker 替换了 FreeBSD 的 arc4random_uniform(3)

arc4random_uniform(3)arc4random(3) 之上封装的一个生成一个较小范围伪随机数的函数。 arc4random(3) 采用密码学安全的伪随机数生成一个在 32-bit 范围,即 \([0,\ 2^{32}-1] \) 内均匀分布的伪随机整数, 此处的随机分布是依靠对称加密算法(目前采用的是 Chacha20)中用于实现加密的伪随机置换(Pseudorandom Permutation)来保证的。

Read more...
30 Nov 2024

数据的长期保存

我们每个人每天都在产生各种数据。包括个人笔记、照片等等在内的许多数据, 许多可能不太容易再次获得或制造。今年夏天,我整理了一些自己二十年前刻录的光盘, 这里记录一下长期保存数据的一些原则、需要避免的陷阱,以及确保数据在数十年后仍然可用的最佳实践。

Read more...