
1. 创作缘起此前作者发布了关于如何让 traceroute 工具显示任意内容的文章又受前几天发布的另一个《Bad Apple》翻唱版本启发决定动手实现。当然作者并非第一个这么做的人但这并未阻止其行动。2. 实现原理是什么在相关文章中作者展示了向 traceroute 输出中注入虚假跃点的方法。利用 nftables 的 numgen 功能可让每次生成 ICMPv6 数据包时跃点变化。numgen 能生成随机数或单调计数器借助计数器可使每个跃点在生成响应数据包时返回不同的 IPv6 地址。使用上一篇文章中的测试环境有相应的代码操作。要实现这一点还需解决两个问题。一是使用 sysctl net.ipv6.icmp.ratelimit0 禁用内核对 ICMPv6 出站流量的速率限制否则效果很快消失。二是 mtr 通常为每个跃点显示多个地址这在正常情况有用但在此场景烦人为解决该问题需给 mtr 打一个单行补丁。做好准备工作后作者使用 ffmpeg 将视频重新采样为每秒 8 帧并将缩小尺寸后的单帧导出为 PNG 文件然后编写 Python 脚本读取图像文件并转换为 nftables 规则集以生成相应的 ICMPv6 响应。这会生成超过 1MB 的 nftables 规则但作者认为一切值得。3. 为何要这么做影子艺术版的《Bad Apple》音乐视频已成为破解显示设备的标杆其因采用影子艺术风格甚至可在每个像素只有 1 位的“显示器”上呈现。有一个 Reddit 子版块专门展示人们在各种设备上播放《Bad Apple》的成果作者目前最喜欢利用兼容 HD47780 的字符 LCD 的破解案例此外还有多个版本的合集视频。考虑到这些作者觉得自己别无选择。作者欢迎大家在文章的 Fediverse 讨论帖中发表评论。同时提到除给 mtr 打补丁也可用 shell 循环包装 traceroutemtr 虽允许限制每个跃点显示的地址数量但总是会显示第一个地址作者还无法决定在个人排名中人们在共享在线画布上重绘视频的案例和使用自动立体图的案例哪个排第二。网站导航与语言切换网站导航包括 jssfr.de 主页、法律声明 / 联系我们。语言切换有英文和德文选项。还有一些相关的链接展示。