解碼 Uniqlo x Akamai 「和平為人人」 Bash 腳本彩蛋

解碼 Uniqlo x Akamai 「和平為人人」 Bash 腳本彩蛋

一件零售 T‑恤上的可執行 Bash 腳本

Akamai 與 Uniqlo 推出限量版 T‑恤,作為「和平為人人」活動的一部分,背面印有一段可執行且經過混淆的 Bash 腳本。將其解碼後在終端機執行,腳本會以青色到橙色的顏色漸層,產生持續的正弦波動畫,顯示活動訊息「PEACE FOR ALL」。

混淆手法的技術分析

腳本以一段字母數字混合的文字呈現,使用 shebang (#!/bin/bash) 並將 Base64 編碼的「Here string」交給 eval,透過 base64 --decode 進行解碼。此方法是隱藏腳本實際邏輯的常見技巧,對於一般觀察者而言較難看出內容,但只要有相應工具仍能輕易還原。

解碼後的原始程式碼

解碼後,腳本會展現一個寫得相當完整且有註解的 Bash 程式,利用 tput 進行終端機操作,並使用 bc 進行浮點計算。核心邏輯包括:

  1. 終端機尺寸:使用 tput colstput lines 取得目前的寬度(cols)與高度(lines)。
  2. 正弦波計算:透過 bc -l 數學函式庫的正弦函數(s($angle))計算字元的 x 座標,產生水平振盪。
  3. 視覺效果:實作 256 色漸層(從顏色 12 到 208),並使用 ANSI 跳脫序列(\033[38;5;${color}m)為字元著色。
  4. 游標控制:隱藏游標(tput civis)並使用 tput cup 精確定位字元於螢幕上。
#!/bin/bash

# Congratulations! You found the easter egg! ❤
# えもでちございます覇されたさぷらいゖを見つかました❤

text="❤PEACE❤FOR❤ALL❤PEACE❤FOR❤ALL❤PEACE❤FOR❤ALL❤PEACE❤FOR❤ALL❤PEACE❤FOR❤ALL❤"

cols=$(tput cols)
lines=$(tput lines)
text_length=${#text}
tput civis
trap "tput cnorm; exit" SIGINT
freq=0.2

for (( t=0; ; t+=1 )); do
    char="${text:t % text_length:1}"
    angle=$(echo "($t) * $freq" | bc -l)
    sine_value=$(echo "s($angle)" | bc -l)
    x=$(echo "($cols / 2) + ($cols / 4) * $sine_value" | bc -l)
    x=$(printf "%.0f" "$x")

    if (( x < 0 )); then x=0; fi
    if (( x >= cols )); then x=$((cols - 1)); fi

    color_start=12
    color_end=208
    color_range=$((color_end - color_start))
    color=$((color_start + (color_range * t / lines) % color_range))

    echo -ne "\033[38;5;${color}m"$(tput cup $t $x)"$char\033[0m"
    echo ""
done

實作挑戰與觀察

OCR 與文字轉錄

從實體服飾上抄寫腳本相當困難,因為 Base64 編碼本身不具備錯誤更正功能,單一字元錯誤就會導致整段字串無法解碼。使用者報告了不同 OCR 工具的成功率:

  • Android Circle‑to‑Search 與 Claude:結合使用並比對差異後,效果相當不錯。
  • macOS Live Text:因轉錄錯誤導致解碼失敗。

排版與設計

關於 T 恤上使用的字型仍有爭議。部分人認為是 Consolas,另一些則主張是 Roboto Mono,且透過 InDesign 等設計工具套用了非標準的光學字距調整(optical kerning),這解釋了為何某些字元的水平佔位比標準等寬字型還要小。

相容性問題

有使用者指出,腳本在非英語語系(例如西班牙語)下可能會因為小數點使用逗號而崩潰。可透過將 locale 設為 C 來解決:LC_NUMERIC=C ./shirt.sh

背景與意義

Akamai 將此設計描述為對早期網際網路的致敬,T 恤的「米色盒子」顏色呼應早期 PC 機殼,而使用 Linux/Bash 作為「共同語言」則象徵連結全球品牌與使用者的精神。

社群成員將此與其他「程式碼即時尚」的案例相提並論,例如內含 DVD 解密金鑰的 DeCSS T‑恤,以及類似 Quine Clock 的 ASCII 可視化作品。亦有評論指出,同一系列的其他 Uniqlo 設計「明顯不完整」,僅呈現截斷的程式碼區塊,無法編譯或執行。

Sources