Bad Apple 之 Traceroute 版

Hacker News Top 工具

摘要

作者演示了如何使用 nftables 和 traceroute,通过注入带有不同 IPv6 地址的虚假跳点来显示 Bad Apple 动画,展示了一个创造性的网络黑客技巧。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/07/30 22:52

# Bad Apple!! 但这次是 traceroute 原文来源:https://jssfr.de/2026-07-27-bad-apple-but-traceroute.html 作为我上一篇关于如何让 traceroute 工具显示任意内容的文章(https://jssfr.de/2026-07-25-messing-with-traceroute.html)的后续,并且受到前几天另一个 Bad Apple 翻唱版发布(https://www.youtube.com/watch?v=zcGdKK_cQbE)的启发,我实在不得不做(https://jssfr.de/2026-07-27-bad-apple-but-traceroute.html#why)。当然,我并非第一个做这件事的人(https://www.youtube.com/watch?v=Od02Xse4axY),但这根本阻止不了我。 ## 工作原理 在我上面链接的那篇文章中,我演示了如何向 traceroute 输出中注入虚假跳点。利用 nftables 的 `numgen` 功能(https://wiki.nftables.org/wiki-nftables/index.php/Math_operations),我们可以让每一次生成 ICMPv6 包时的跳点都不同。`numgen` 可以给我们随机数或者单调递增的计数器。使用计数器,我们可以轻松让每个跳点每次响应包生成时返回不同的 IPv6 地址。 利用上一篇帖子中的 playground(http://localhost:8002/2026-07-25-messing-with-traceroute.html#setting-up-a-playground): ``` ip netns exec tracemess nft -f - <addrs[i], &addrcopy, sockaddr_addr_size(sourcesockaddr)); ``` 一切就绪后,我用 ffmpeg 将视频重采样为每秒 8 帧(相当于帧间隔 125 毫秒),并导出缩小到 30x11 像素的每一帧 PNG 文件。然后我编写了一个 Python 脚本,读取这些图像文件,并将其转换为 nftables 规则集,用于生成相应的 ICMPv6 响应。这样产生的 nftables 规则略超过一兆字节,但绝对值得。 ## 为什么? 剪影艺术风格的 Bad Apple 音乐视频(https://www.youtube.com/watch?v=i41KoE0iMYU)已经成为“破解显示”的标杆——这里对“显示”的定义非常宽松(https://www.youtube.com/watch?v=A__lP5Vtdug),就好比运行《毁灭战士》(1993年视频游戏)(https://canitrundoom.org/)已经成为在新硬件平台上获得代码执行能力的基准测试一样。我猜原因在于,由于它的剪影艺术风格,即使是在每像素只有一位(开/关)的“显示器”上也能渲染出来。 有一个专门展示人们让 Bad Apple 能在各种设备上播放的 subreddit(https://www.reddit.com/r/ItPlaysBadApple/)。到目前为止我最喜欢的是这个滥用 HD47780 兼容字符 LCD 的黑客作品(https://www.youtube.com/watch?v=lI8jfwCPBJM),仅仅因为我也喜欢折腾这些设备。还有不止一个合集视频展示了多个版本(https://www.youtube.com/watch?v=fu4RvH0W3mg)。 考虑到这些……我别无选择,不是吗?

相似文章