ユニクロのTシャツに隠された難読化Bashスクリプトを解析してみた
Decoding the obfuscated bash script on a Uniqlo t-shirt
Decoding the obfuscated bash script on a Uniqlo t-shirt
あるユニクロのTシャツに、難読化されたBashスクリプトがプリントされているのを発見しました。このスクリプトが一体何を意味しているのか、技術的な観点から紐解いていきます。
これをOCRにかけるのは悪夢だし、自称高性能なOCRやVisionモデルにとってはいいベンチマークになるね。でも、最近のClaudeやGPTみたいなVisionモデルを搭載したAgenticなツールに画像を渡して、「行ごとに分割して、それぞれOCRしてくれ」と指示すれば、簡単に読み取れる気がする。そもそも難読化される前に、スクリプト自体がLLMで書かれたのかな?コメントが結構含まれてるみたいだけど、今回のケースなら問題ないね :)
作者がいろいろなOCRツールを試してうまくいかず、結局一番マシだった出力結果を長時間かけて手作業で修正してたのが面白い。普通にタイピングした方が早かったんじゃないかっていう。
うわっ、そのTシャツ店で見かけたわ。彼女に「こんなの動くわけないし、ただの飾りでしょ」って言ったんだよね。粘り強くやるべきだったな。
このTシャツ最高!デザイナー本人がシャツを作るまでの過程(わざとOCRしにくくしたところとか)を解説してるいい動画があるよ: https://youtu.be/jocGLiecpjU?t=526
「Uniqlo x Akamaiの同じシリーズのシャツに、明らかに不完全なデザインのものがある」
バグのせいでTシャツを返品するとか想像してみてよ。
―「なぜ返品されるのですか?サイズが合わなかったのか、気に入らなかったのですか?」
―「いえ、37行目に構文エラーがあって実行できないんです。通りすがりの人に、僕が危険なBashスクリプトを推奨してる人だと思われたくなくて」
こういうのが好きなら、Martin Kleppeの作品も気に入るかも。Quine Clockとかね:
数年前にこれを難読化解除したバージョンをリバースエンジニアリングしたことがあるよ:
https://gist.github.com/olooney/a89db3932b089925b71b68d7e9f27bbb
他にも素晴らしいASCIIビジュアライゼーションをたくさん作ってるよ:
フォントはConsolasじゃなくてRoboto Monoだよ。
それに、もっと奇妙なことがあるんだ。これ自体はちゃんとした等幅フォントなんだけど、シャツ上の組版はそうじゃない。カーニングが適用されてる(特に'Iy'の並びで気づいた)。あと、'i'みたいな細い文字は水平方向のスペースが小さくなってるみたい。推測だけど、InDesignの「オプティカルカーニング」みたいなツールで組版したんじゃないかな。
いいね。唯一の改善点は、ループの中に
sleep 0.1
を入れることかな。これがあるとターミナルで表示されるときに読みやすくなるんだ。最近のターミナルだと速すぎて、メッセージが飛んでいくのが見えないからね。
10Hzくらいに落とすといい感じに見えるよ。
すべての人に平和を
akamai
はは!
base64エンコーディングを難読化と呼ぶなんて
もっと気の利いたJSの難読化解除テクニックを期待してたから、穏やかに言うと、失望は計り知れないし、今日はもう最悪だよ。