原文概要

Akamai 与 Uniqlo 联名的 “Peace for All” 系列中有一件 T 恤,背面印着一大段看似乱码的字母数字块。仔细看,居然以 #!/bin/bash 开头——这是一段完整可运行的 bash 脚本,经过 base64 编码后印在了衣服上。

博主 Tris Sherliker 从妻子那里看到这件 T 恤后,决定把脚本解码出来。他先后用了 Android 圈选搜索的 OCR、Tesseract(带各种参数调整)、以及 Claude 三种方式,比对输出差异后手动修正,最终拼出了完整的 base64 字符串。解码后的脚本是一个彩色循环动画:♥PEACE♥FOR♥ALL 字符在终端中以正弦波轨迹逐字下落,颜色从青色 (12) 渐变到橙色 (208)。

衬衫的设计出自 Akamai,米色参考了 80-90 年代电脑机箱的 “beige box” 配色。这已经是 Akamai 与 Uniqlo 合作的至少第二款技术主题 T 恤——前一款印的是 Go 代码。

讨论焦点

OCR 体验:有人踩坑,有人秒解

作者坦言 OCR 过程痛苦,base64 没有纠错能力,转录必须完美。但评论区里不少人有完全不同的体验。

“I gave the photo to Opus 4.8 and it reconstructed the same script in one shot.” — underyx (我把照片扔给 Opus 4.8,一次性就还原了完整脚本。)

“I ran it through paddle paddle OCR and it flawlessly did it.” — acters (用 PaddleOCR 完美识别,毫无问题。)

“Is it? Android tap and hold/image text select one-shotted it in 2 seconds.” — fennecfoxy (Android 图片文字选择功能两秒就搞定了。)

作者本人也出现在评论区,解释了自己用的工具链:

“Author here - that’s a good idea actually, it shouldn’t be too hard to compare the various attempts. The tools I used were whatever my Android built-in is (likely Google Gemini, but I can’t tell whether this is something Samsung has replaced in OneUI); tesseract; tesseract with various tweaks and charset restrictions; Claude; and finally, manual fixes based on disagreements between all the previous.” — speerer (作者本人回应:工具包括 Android 自带 OCR、Tesseract、Claude,以及基于三者差异的手动修正。)

也有读者指出,作者费力 OCR 的做法本身就是一个行为艺术般的讽刺:

“‘just typing it’ would be more error prone for the average human” — mayas_ (手动输入对普通人来说更容易出错。)

“Not really. Transcribing long sequences of nonsense is annoying but quite easy to do without error as long you’re patient enough to follow a simple process of reading, typing, and double-checking character-by-character.” — t-3 (其实不难,耐心逐字符阅读、输入、复核就行了。)

匿名 LLM 代写的?

评论区最大的争论之一是:这段脚本到底是人写的,还是 LLM 生成的?

“Definitely LLM. No humans write that many comments.” — IshKebab (绝对是 LLM 写的,正常人不会写那么多注释。)

“I don’t think it was written by an LLM, some things stand out: The congratulations text is both in English and Japanese. Contains a single heart emoji. There was an intention to have a cyan to orange gradient, but the range starts in an ANSI block, ends halfway through the 256 color block and 256 terminal colors are not arranged like a gradient at all. There’s no sleep at the end of the loop where I feel like an LLM would add that defensively.” — lemagedurage (不像是 LLM 写的。祝贺语有日英双语,只包含一个心形 emoji。颜色渐变意图从青色到橙色,但 256 色终端颜色排列根本不是渐变的。循环末尾没有 sleep——LLM 通常会防御性加上。)

另一位用户做了更细致的逐行分析:

“What made me start to wonder, personally, was that the output seems identical if you use ‘♥PEACE♥FOR♥ALL’ instead of the version with internal repeats. IF there is any point to that ‘manual expansion of the cycles’, IMO that deserves a comment much more so than ‘# Calculate length of text; text_length=’. Also, that echo -n ... followed by echo \"\" instead of just plain echo in the first place seems like the kind of copy-pasta code LLMs generate.” — cb321 (反复展开的 “PEACE” 序列实际上没什么效果变化,真正值得注释的地方没人注释。echo -necho "" 而不直接写 echo,像是 LLM 生成的复制粘贴代码。)

反对者则认为这只是开发者换语言时的生疏表现:

“All the smells you pointed out, just look like a Python dev approaching bash without fully understanding it.” — shakna (你说的那些可疑迹象,看起来只是 Python 开发者写 bash 时的生疏表现。)

手动输入的情怀

多位年长读者回忆起八九十年代从杂志上敲代码的经历:

“That was also my thought… but I grew up mashing rubber keys for hours copying ‘games’ out of magazines and books! Then hours after fixing all the typos!” — christoph (我也是这么想的……但我小时候是从杂志上抄游戏代码长大的,敲完还要花几个小时修错字。)

“Those of us who grew up in the 8-bit era would have just typed it in, carefully, in silence, with no-one allowed to enter or leave the room until we were done ;-)” — ErroneousBosh (我们 8 位机时代长大的人,会安安静静地逐字敲进去,不准任何人进出房间直到敲完。)

依赖与兼容性问题

脚本依赖 bc 做数学计算,但很多系统默认没有安装:

”./cool.sh: line 31: bc: command not found… Very wow. Shame they assumed everyone has ‘bc’.” — lloydatkinson (脚本假设人人都有 bc,但很多系统默认不带。)

“Why would that be a shame? ‘bc’ is a mandatory POSIX command, while /bin/bash isn’t (/bin/sh is the standard).” — em500 (bc 是 POSIX 强制命令,bash 反而不是。)

另有用户发现 UTF-8 环境问题:

“I noted from the video that the ♥s (hearts) worked on whatever version of bash he tested with though it failed for me… LC_ALL=en_US.UTF-8 bash .. fixed it.” — cb321 (视频里心形符号正常显示,我自己跑却不行……设置 LC_ALL=en_US.UTF-8 后解决。)

设计师的幕后故事

有用户分享了设计师制作过程的视频:

“I love this shirt! Here’s a nice video from the actual designer about the process of making this shirt (including intentionally making it hard to OCR).” — wbh1 (设计师视频链接,包括故意让 OCR 困难的细节。)

作者看到后很高兴:

“Author here. Thank you so much for the link which I hadn’t seen! I’m very happy to see this and I’m gratified that it was deliberately difficult to OCR, not just me.” — speerer (作者感谢视频链接,得知是故意为难 OCR 后感到欣慰。)

字体误认

作者最初认为衬衫上使用的是 Consolas 字体,但被 HN 用户纠正为 Roboto Mono。这个误认还引发了一段有趣的误解:

“I guess Uniqlo is run through Windows though: one thing that struck me was the font, which I’m almost certain is Consolas.” — 原文 (作者由此猜测 Uniqlo 用的是 Windows 环境。)

“Thank you for spelling it out for me because I thought I was looking at a completely hallucinated AI article.” — tym0 (谢谢你解释清楚,我差点以为这是一篇 AI 幻觉生成的文章——从终端讨论突然跳到 Windows 字体,太跳跃了。)

典型观点一览

立场 用户 一句话
OCR 很痛苦 speerer(作者) 用了三套工具再加手工比对才搞定。
OCR 很简单 underyx / fennecfoxy 现代视觉模型/手机自带功能一次成功。
脚本是 LLM 写的 IshKebab / cb321 注释太多、写法怪诞,典型的 LLM 风格。
脚本是人写的 lemagedurage / shakna 细节(双语祝贺、颜色偏差)更接近人类,或 Python 开发者转 bash。
手动输入才是正道 christoph / ErroneousBosh 8 位机时代的人会直接敲,不折腾 OCR。
自动化过度 conductr 花 40 小时自动化一个 10 分钟就能手动完成的任务。
bc 依赖不合理 lloydatkinson 脚本假设 bc 人人都有,但很多系统默认不装。

总体情绪

整个讨论的氛围轻松而怀旧。一件 T 恤上的彩蛋勾起了多重维度的对话:OCR 工具的能力现状、LLM 生成代码的特征辨认、八九十年代手工敲代码的集体记忆。

有用户直言 “花 40 小时自动化 10 分钟的手工活” 是当代工程师文化的缩影;也有用户觉得这正是乐趣所在——”优化的是自己的不耐烦,而不是时间。” 一件 T 恤,剪影了技术圈的多重面孔。

引用帖子

# 标题 URL
1 Obfuscated, self-evaluating bash script by CDN Akamai being supplied to consumers via retail stores https://tris.sherliker.net/blog/obfuscated-self-evaluating-bash-script-by-cdn-akamai-being-supplied-to-consumers-via-retail-stores/

免责声明

本文基于 HN 讨论和原文撰写,旨在提供信息整理与观点摘要,不构成任何专业建议。文中引用内容版权归原作者所有。



本摘要由 AI 模型辅助生成:deepseek/deepseek-v4-flash