返回资讯中心
外部精选
软件工程
#开发者实时流

黑客改造两只Furby,万圣节门口整夜互怼吓人

来源标题:Over-engineering Halloween with two hacked Furbies

一名开发者用两块Furby Connect改装出万圣节门口的整晚对呛表演:蓝色Furby招呼拿糖,粉色Furby眼冒红光威胁“敢拿两颗试试”。两只玩具通过蓝牙接收藏在糖果碗下开发板的指令,代码已开源,可用笔记本电脑加两只Furby复刻。

Hacker News 最新benbalter2026/11/2 · 今天30 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

11 分钟阅读 TL;DR:摘要:Furby 本来就够让人毛骨悚然的了,于是我干脆顺着这个方向走。两只被改造过的 Furby Connect 摆在我家门口,一整晚都在互相飙恐怖台词——一只邪恶的粉色,一只甜美的蓝色,由藏在糖果碗下面的板子通过蓝牙给它们提示。代码是开源的,你只需要一台笔记本电脑、两只 Furby 和一份原版 Furby DLC,就能自己搭一套。

“万圣节快乐!拿一个吧!”我家门口那只蓝色 Furby 叽叽喳喳地说。然后粉色那只眼睛闪着红光,答道:“拿两个……如果你敢的话。”

一只 Furby 想让你守规矩。另一只想要你所有的糖。它们吵了一整晚。

把东西过度工程化是我的老毛病了:看看我的家庭网络(搞了两次)和我的书就知道了。正常人会去 Home Depot 买那个 12 英尺的骷髅。而我花了两周时间,教一对 2016 年的玩具通过 BLE 演一出喜剧。

Furby 早就顶着“90 年代最恐怖玩具”的名声。Furby Connect 是 2016 年的版本,有 LCD 屏幕做的眼睛、会发光的天线,还有一个 app。¹ 那个 app 通过蓝牙跟 Furby 通信,这意味着任何会说蓝牙的东西都能跟它对话。Furby 还会从 app 下载 DLC 包——声音、眼睛动画和动作的文件,它把这些都存在内存里。

一个 DLC 决定了 Furby 能做什么,但 Furby 只有在收到蓝牙提示时才会做。一场演出需要一个指挥(一台笔记本电脑,或者一块藏在糖果碗下面的小板子),来告诉每只 Furby 什么时候该说下一句台词。

英国一家叫 Context 的安全公司在 2017 年完成了最难的部分,逆向工程了 DLC 格式。² 我要做的就是在它的基础上继续搭,让一只粉色 Furby 用威胁性的停顿说出“Trick.”。

两只 Furby 坐在门边。粉色是邪恶的:恶魔眼、天线发着红光,台词像“午夜之后别喂 Kah……”³ 蓝色是友善的那只,有南瓜灯眼睛,还总爱拆粉色的台。(“Kah 不怕。Kah 有糖。”)

它们用短场景交换台词。有些是问候语,有人走近时播放。其余的按 20 到 45 秒的计时器播放,所以门廊永远不会安静。几个我最喜欢的:

浏览器模拟器里还有四个场景。

关于 Furby Connect,我吃了不少苦头才学到这几件事:

当它们互相唱歌时,两只都不会通过蓝牙广播自己,所以什么都找不到它们。解决办法是一只一只唤醒,演出会告诉你什么时候该做什么:“粉色已连接。现在给蓝色通电。”在板子上,粉色闪一次灯,蓝色闪两次。

忙碌的 Furby 会静音播放你的台词。有一阵子,大约三分之一的片段只有眼睛和扭动,没有声音,因为一只还在动的 Furby 会忽略下一句台词的声音。我用一个检查脚本把它揪了出来,这个脚本在每只 Furby 上把每个片段播放一次并计时。眼睛和扭动经常在音频结束后还持续很久,在这个窗口里提示的任何台词都会静音播出。⁴

一模一样的 Furby 就是一模一样的。演出只靠每只正在运行的 DLC 来区分它们。如果不小心把粉色的文件刷(flash)进了两只,你就会得到两只邪恶 Furby,没人叫孩子们拿一个。

不管它的话,Furby 会睡着。它真的会打呼噜,这在睡觉时很可爱,但对一整晚招待讨糖人的活动毫无用处。保持蓝牙连接能让两只 Furby 整夜醒着,也能防止它们内置的把戏——比如一听到音乐就跳舞——插进演出里。

没有关机开关。也没有故障保护,这很符合 Furby 的风格。让它闭嘴的唯一办法是拔电池,所以万圣节那天我把两个电池仓门都开着,插上或拔下一节电池来唤醒或让它睡觉。

每只 Furby 的全部曲目都能塞进 350 KB#

每只 Furby 都有自己的 DLC,包含那只 Furby 的台词、眼睛和天线颜色。一个文本文件 show.toml 描述整场演出——每个片段和每个场景——一条命令就能从中构建出两个 DLC。

每个 DLC 都必须压在那个 350 KB 的上限以下。⁵ 这就是为什么粉色的 Toccata 只有五秒,够认出来就行,而且 Furby 的喇叭放巴赫也确实不怎么样。

那些声音是用 AI 模仿 Furby 自己的嗓音,以原版 DLC 的片段为蓝本,而且它们只留在我家门廊上。⁶ 每个片段,不管是真声还是替身,也都必须转换成 Furby 自己的压缩音频格式,这以前意味着要用一个 Windows 专用工具。后来有个陌生人在我的 fork 上开了个 issue。一位叫 John-K 的开发者在开源项目 a1800_codec 里逆向工程了这个格式,觉得我可能用得上。我确实用上了。这就是为什么我的工具链能在 Mac 上跑,也是我最喜欢开源的一点:一个你从未见过的人解决了你的问题,然后还特意来告诉你。

以前加载这一切意味着要用一个浏览器工具,而且每次上传前都要来一次“舌头加尾巴”的重置。⁷ 现在一个终端脚本加载一只 Furby 只要大约两分钟,而不是将近六分钟,也不用拔舌头了。

但为了知道一个包袱能不能响,等这么久还是太久了,所以我先在浏览器模拟器里排练场景:两只 Furby 并排,按真实演出会产生的眼睛、天线灯光和时机播放每一句台词。在那里调整一个场景,就省掉了每次改动都要构建 DLC、加载、再唤醒 Furby 的大约五分钟往返。

我用代码画了两套眼睛,然后把它们切成 Furby 存储用的小图像块。在我电脑上看起来完美的眼睛,到了 Furby 上却偏移和重复了。我逐文件二分排查,最后归结到图块数量上。当两只眼睛共享图块时,除非文件总共至少有 16 个图块,否则 Furby 会把它们打乱。我在任何地方都没找到相关文档。⁸

每只 Furby 都恰好得到一个眼睛动画:粉色是恶魔,蓝色是南瓜。⁹

天线灯也加入进来。当 Furby 说话时,它的天线会发出与眼睛匹配的颜色,并随着台词的响度起伏:粉色的恶魔眼是红色脉冲,蓝色的南瓜是橙色烛光闪烁。

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →