|
← 判断力与美学 ← Judgment & Aesthetics
SAE 判断力与美学 · 余项之美
SAE Judgment & Aesthetics · Beauty of the Remainder
2026-08-31

屏幕发出去的,是它没显示的那部分

The Screen Transmits What It Doesn't Display

Han Qin (秦汉)

一个署名 Efe 的人(GitHub 上叫 WaiiXD)写了一个网页。打开它,屏幕开始闪一种黑白交替的图样;把手持电台的天线凑到显示器边上,能收到摩尔斯电码。没有发射机,没有 SDR,没有驱动,没有安装——整套设备就是一台你本来就有的显示器,加上一个静态托管的页面。原理是像素时钟:1080p 在 CEA-861 时序、60 Hz 刷新下,一帧的总列数是 2200,总行数是 1125,相乘再乘以 60,得到 148,500,000 Hz。挑对黑白图样,让 HDMI 或 DisplayPort 差分对上的电平翻转次数最大化,漏出去的杂散就足够强,强到几厘米外能被解出来。Hackaday 8 月 30 日报道了它。

把可见的那部分单独算一遍:1920 × 1080 × 60 = 124,416,000 Hz,也就是 124.416 兆赫。差掉的那 24 兆赫从哪来?从 280 列和 45 行来——水平消隐和垂直消隐,每一帧里那些从不被显示的像素。载波频率里大约六分之一,由画面上根本不存在的部分决定。更妙的是,发射效果最好的图样恰好是信息量最低的图样:纯粹的交替,翻转最多,内容为零。图像被掏空到只剩电平变化,而剩下的那点电学残渣就是全部的作品。

这条链路上的每一层构造,存在的理由都是消灭这个信号。屏蔽层、阻抗受控的板层、双绞差分对、EMC 认证——Hackaday 自己写得很准:显示器、接头、线缆全是为了把信号干净地送到屏幕、同时防止它漏到周围而设计的。Efe 用的不是这套系统提供的任何一项能力,而是它拼命想扔掉的东西。更要紧的是它跑在浏览器里。浏览器是现代计算机上权限最稀薄的一层,它的整个设计目标就是"什么都不给"。它可以收回每一个 API。但它收不回这个,因为这不是一项权限,是一份残留。构造只能枚举它所授予的;余项恰恰是不可枚举的那部分,因而也不可撤销。你没办法给一个余项写访问控制。

这里必须把已构和还活着的余项分开。1985 年 Wim van Eck 发表论文,说明可以从电磁辐射里重建 CRT 屏幕的内容;这条线后来被命名、被标准化(TEMPEST)、被认证化,到 2024 年已经有人用深度学习去读 HDMI 的泄漏。Erik Thiele 大约 2001 年做的 Tempest for Eliza,用 CRT 在调幅波段放 mp3,Hackaday 2005 年就写过。Bellard 同一时期用显卡发过 DVB-T。这些都很美,但那是凿构循环跑完之后的沉积物:有人凿过,命名过,名字合拢了。Efe 站在这条线的另一侧——从一个毫无特权的网页主动发射,把泄漏当成表达——而这一侧还没有名字。证据就在它自己的评论区,全部发生在二十四小时之内:有人说这是"用 TEMPEST 式的技术来主动发射",可 TEMPEST 是接收侧的词;有人纠正说"既然有意传递信息,那更像一条隐蔽信道",可这里没有任何隐蔽,它是一个公开网址;有人说"跟二十五年前的 Tempest for Eliza 是一回事",那是直接把它塞回已构;还有人指向 Bellard。四个名字,一个都不合身。文章末尾那句免责声明是同一个缺口的另一个症状:这台设备是按"不发射"认证出厂的,而这个行为是发射,没有哪一类执照覆盖"一块显示器"。

现在看比以后看要紧,理由不在艺术界,在工程。同一条评论区里,有人正在设法消灭这个信号:他在视频线上夹了一串磁环,只压下去一点,想找一根屏蔽更好的线;另一个人回他,线从来不是问题,问题在板上的走线,换好线只能拿到 3 到 6 分贝,把 PCB 设计干净能拿到 15 到 20 分贝;第三个人说升到 4K 就完事了,时钟一变频率就挪出那个波段。还有人提到 148.5 兆赫的三次谐波落在 445.5 兆赫,正压着 70 厘米波段——这个余项还有它自己的余项,而那正是让人恼火的部分。把这几句连起来读就是一张时间表:每一代更干净的板层、更好的屏蔽、更高的像素时钟,都在抹掉一点这个信道。这是少见的一种情形——窗口在关,不是因为艺术界来了,而是因为工程学在正常工作。这件作品的材料是一个缺陷,而缺陷是会被修好的。

所以值得现在就打开那个页面,把收音机凑过去听一次。不用买任何东西,不用装任何东西;乐器就是一个网页,加上一块你已经在看着的屏幕。而它发出去的那段电码,是用画面里从来没有人打算让你看见的那一部分做成的。

waiixd.github.io ↗ hackaday.com ↗

Someone credited as Efe — WaiiXD on GitHub — wrote a web page. Open it and the screen starts flickering a pattern of black and white pixels; hold a handheld radio's antenna near the monitor and you pick up Morse code. No transmitter, no SDR, no driver, no install. The entire apparatus is a monitor you already own plus a statically hosted page. The mechanism is the pixel clock: at 1080p under CEA-861 timing and a 60 Hz refresh, a frame is 2200 columns by 1125 rows in total, and 2200 × 1125 × 60 comes to 148,500,000 Hz. Choose the pattern that maximises voltage transitions on the HDMI or DisplayPort differential pairs and the spurious emission gets strong enough to decode a few centimetres away. Hackaday wrote it up on 30 August.

Now do the arithmetic on the visible part alone: 1920 × 1080 × 60 = 124,416,000 Hz, or 124.416 MHz. Where do the missing 24 MHz come from? From 280 columns and 45 rows — the horizontal and vertical blanking intervals, the pixels in every frame that are never displayed. Roughly a sixth of the carrier frequency is contributed by the part of the picture that does not exist as picture. Better still, the pattern that transmits best is the one carrying the least: pure alternation, maximum transitions, zero content. The image is hollowed out until only the voltage changes remain, and that electrical residue is the whole of the work.

Every layer of construct in this signal chain exists in order to destroy that emission. Shielding, controlled-impedance stackups, twisted differential pairs, EMC certification — Hackaday puts it exactly right: the monitor, connectors and cable are all built to get the signal cleanly to the display while preventing it from leaking out. Efe is not using any capability the system offers. He is using the thing it is straining to throw away. And it matters that this runs in a browser. The browser is the thinnest-privileged layer on a modern computer; its entire design goal is to grant nothing. It can revoke every API. It cannot revoke this, because this is not a permission — it is a residue. A construct can only enumerate what it grants; the remainder is precisely the part that cannot be enumerated, and therefore cannot be revoked. You cannot write an access control for a remainder.

The already-construct has to be separated out here from what is still alive. In 1985 Wim van Eck published the paper showing that the contents of a CRT could be reconstructed from its electromagnetic radiation. That line was subsequently named, standardised (TEMPEST), turned into a certification regime, and by 2024 had a deep-learning literature for reading HDMI leakage. Erik Thiele's Tempest for Eliza, from around 2001, played mp3s over AM through a CRT; Hackaday covered it back in 2005. Bellard sent DVB-T out of a graphics card in the same era. All of it is beautiful, and all of it is sediment left after the chisel-construct cycle finished: someone cut, someone named, the name closed over. Efe stands on the other side of that line — deliberate emission from an unprivileged page, leakage treated as expression — and that side has no name yet. The evidence is in the piece's own comment thread, all of it inside twenty-four hours. One reader calls it "TEMPEST-like techniques to intentionally transmit," but TEMPEST is a receive-side word. Another corrects him: since it is deliberately carrying information, it is "more a covert channel" — except nothing here is covert; it is a public URL. A third says it is the same idea as Tempest for Eliza twenty-five years ago, which is simply filing it back into the already-construct. A fourth points at Bellard. Four names, none of them a fit. The disclaimer at the end of the article is another symptom of the same gap: the hardware left the factory certified as a thing that does not transmit, the act is transmission, and no class of licence covers "a monitor."

Seeing it now matters more than seeing it later, and the reason is not the art world — it is engineering. In that same thread someone is actively trying to kill this signal: he has clipped a string of ferrites onto his video cables, got barely any reduction, and wants a better-shielded cable. Another replies that the cable was never the problem, the traces on the board are, and that a better cable buys you 3 to 6 dB where a clean PCB design buys 15 to 20. A third suggests just going to 4K, since changing the clock moves the emission out of the band. Someone else notes that the third harmonic of 148.5 MHz lands at 445.5 MHz, right on top of the 70 cm band — this remainder has a remainder of its own, and that one is what annoys people. Read those replies together and they are a schedule. Every generation of cleaner stackup, better shielding and higher pixel clock erases a little more of the channel. This is the rare case where the window is closing not because the art world has arrived but because engineering is doing its job properly. The material of this work is a defect, and defects get fixed.

So it is worth opening the page now and holding a radio up to the screen once. Nothing to buy, nothing to install; the instrument is a web page and a screen you are already looking at. And the message it sends is made out of the part of the picture nobody ever intended you to see.

waiixd.github.io ↗ hackaday.com ↗