ZERO WIDTH SPACE を使って Unicode ステガノグラフィ

inspired by Yappo

id:T​​​​​​K​​​​​S​​​​​​K​​​ かっこいい

上のテキスト、一見 id:TKSK を褒めているいるようですが、実は別の人をほめています。下線のリンクが無いでしょ? ちなみに、以下の perl スクリプトを通すと、誰をほめているのかわかります。

perl -Mutf8 -MEncode -we 'undef $/; $s = decode_utf8(<STDIN>); $s =~ s!([\x{200b}|\x{feff}]+)!pack("B*", join("", map { $_ eq "\x{200b}" ? 0 : 1 } split("", $1)))!eg; print encode_utf8($s)'

この隠しデータを作るには、以下のようにします。

echo "you can see here (u:you cannot see here)" | perl -pe 's/\(u:(.*?)\)/join("", map { substr("\xe2\x80\x8b\xef\xbb\xbf",$_*3,3) } split("", unpack("B*",$1)))/eg'

ZERO WIDTH SPACE と NON-BREAKING ZERO WIDTH SPACE でバイナリエンコードしてるので、見た目は1ドットも取りません。Unicode って便利ですねー

ちなみにどうでもいいトリビアですが、Unicodeには他に14個、全部で計16個の空白文字があります。数え間違えてたらごめんなさい。