TAKESAKOさんのやつ
TAKESAKO @ Yet another Cybozu Labs: 記号でPolyglotプログラミング♪(RejectKaigi2009) のコードのJavaScriptの解読。
もとのコード
"#{",$/*"}";%#=();$^_^='?``;">)~${`&&@`{;:+`[[',$^_^='/?")-=^{(=!".=.!,!)&&>',$^_^ ='`-+|{!?``*.((-+({:^(_^',$^_=''^'+@$@&'^'^.@%@'.'$^_^"";'.$^_^"",'!~'!~('('.('`_@ ^!@'^'_$%(@,'.'$^_})'))#;_=[*'`'..%.~.]*%%%;$_=%+%++(??%?===???_[(_=~/\{/).-@+(_=~ /~/)]:%%%<<(?!*(?+-?()));_=([*%/!/..%!/!]+[*%]:]..%)@)]+[*%.[...%.`.]+[*%.{...%.}. ])*%(=~_~='_');$><<$_%(/\)=~_~='_'\*=/=~_)+$_%(/~_~='_'\-/=~_)+$_%(/\-=~_~='_'\./= ~_)+$_%(/\-=~_~='_'\./=~_)+$_%(/_~='_'\./=~_)+$_%(/'&/=~_)+$_%(/='_'%/=~_)+$_%(/=~ _~='_'\+/=~_)+$_%(/\.=~_~='_'\//=~_)+$_%(/',/=~_)+$_%(/~='_'\//=~_)+$_%(/~='_''/=~ _)+$_%(/=~_~='_''/=~_)+$_%(??%?)==???(/_~='_'\(/=~_):/~_~='_'\(/=~_)+$_%(/'_'%/=~_ )+$_%(/=~_~='_'#/=~_)+%))#*/=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"") [$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$ :++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($ ._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=( !""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[ $._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+"\\"+$.__$+$.$$ _+$.$__+"\\"+$.__$+$.$$$+$.__$+"\\"+$.__$+$.$$_+$.___+"\\"+$.__$+$.$__+$.$_$+"\\"+ $.__$+$.$_$+$.$$$+"\\"+$.__$+$.$__+$.$$_+"("+"\\"+$.__$+$.$$_+$.$$$+"\\"+$.__$+$.$ _$+$.__$+"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$__+$.$__+"\\"+$.__$+$.$_$+$.$$$+"\\" +$.__$+$.$$_+$.$$$+")==\\\""+"\\"+$.__$+$.$_$+$.$$$+"\\"+$.__$+$.$__+$._$_+"\\"+$. __$+$.$_$+$._$_+"\\"+$.__$+$.$__+$.$_$+"\\"+$.__$+$.$__+$._$$+"\\"+$.__$+$.$$_+$.$ __+"\\\"?"+"\\"+$.__$+$.$__+$.__$+"\\"+$.__$+$.$_$+$.$__+"\\"+$.__$+$.$__+$.$_$+"\ \"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$$_+$.$__+"(\\\""+"\\"+$.__$+$.__$+$.___+"\\"+$. __$+$.$__+$.$_$+"\\"+$.__$+$.$_$+$.$__+"\\"+$.__$+$.$_$+$.$__+"\\"+$.__$+$.$_$+$.$ $$+","+"\\"+$.$__+$.___+"\\\"+("+"\\"+$.__$+$.$$_+$.$__+"\\"+$.__$+$.$$$+$.__$+"\\ "+$.__$+$.$$_+$.___+"\\"+$.__$+$.$__+$.$_$+"\\"+$.__$+$.$_$+$.$$$+"\\"+$.__$+$.$__ +$.$$_+"("+"\\"+$.__$+$.$__+$._$$+"\\"+$.__$+$.$_$+$.___+"\\"+$.__$+$.$$_+$._$_+"\ \"+$.__$+$.$_$+$.$$$+"\\"+$.__$+$.$_$+$.$_$+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$ _+$.$_$+"\\"+$.__$+$.$_$+$.$_$+")==\\\""+"\\"+$.__$+$.$_$+$.$$$+"\\"+$.__$+$.$__+$ ._$_+"\\"+$.__$+$.$_$+$._$_+"\\"+$.__$+$.$__+$.$_$+"\\"+$.__$+$.$__+$._$$+"\\"+$._ _$+$.$$_+$.$__+"\\\"?\\\""+"\\"+$.__$+$.$$_+$.$$_+"\\"+$.$$$+$.___+"\\\":\\\""+"\\ "+$.__$+$.___+$.$$_+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$__ +$.$_$+"\\"+$.__$+$.$__+$.$$_+"\\"+$.__$+$.$_$+$.$$$+"\\"+$.__$+$.$$$+$.___+"\\\") +\\\"!\\\"):"+"\\"+$.__$+$.$$_+$.___+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$ +"\\"+$.__$+$.$_$+$.$$_+"\\"+$.__$+$.$$_+$.$__+"(\\\""+"\\"+$.__$+$.__$+$.___+"\\" +$.__$+$.$__+$.$_$+"\\"+$.__$+$.$_$+$.$__+"\\"+$.__$+$.$_$+$.$__+"\\"+$.__$+$.$_$+ $.$$$+","+"\\"+$.$__+$.___+"\\"+$.__$+$.__$+$._$_+"\\"+$.__$+$.$__+$.__$+"\\"+$.__ $+$.$$_+$.$$_+"\\"+$.__$+$.$__+$.__$+"\\"+$.__$+$._$_+$._$$+"\\"+$.__$+$.$__+$._$$ +"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$.___+"\\"+$.__$+$ .$$_+$.$__+"!\\\")"+"\"")())();
↓ よみやすく改行とかスペースを調整。
"#{", $ /*"}";%#=();$^_^='?``;">)~${`&&@`{;:+`[[',$^_^='/?")-=^{(=!".=.!,!)&&>',$^_^='`- +|{!?``*.((-+({:^(_^',$^_=''^'+@$@&'^'^.@%@'.'$^_^"";'.$^_^"",'!~'!~('('.('`_@ ^!@'^'_$%(@,'.'$^_})'))#;_=[*'`'..%.~.]*%%%;$_=%+%++(??%?===???_[(_=~/\{/).-@+ (_=~/~/)]:%%%<<(?!*(?+-?()));_=([*%/!/..%!/!]+[*%]:]..%)@)]+[*%.[...%.`.]+[*%. {...%.}.])*%(=~_~='_');$><<$_%(/\)=~_~='_'\*=/=~_)+$_%(/~_~='_'\-/=~_)+$_%(/\- =~_~='_'\./=~_)+$_%(/\-=~_~='_'\./=~_)+$_%(/_~='_'\./=~_)+$_%(/'&/=~_)+$_%(/=' _'%/=~_)+$_%(/=~_~='_'\+/=~_)+$_%(/\.=~_~='_'\//=~_)+$_%(/',/=~_)+$_%(/~='_'\/ /=~_)+$_%(/~='_''/=~_)+$_%(/=~_~='_''/=~_)+$_%(??%?)==???(/_~='_'\(/=~_):/~_~= '_'\(/=~_)+$_%(/'_'%/=~_)+$_%(/=~_~='_'#/=~_)+%))#*/ = ~[]; $ = { ___ : ++$, $$$$ : (![]+"")[$], __$ : ++$, $_$_ : (![]+"")[$], _$_ : ++$, $_$$ : ({}+"")[$], $$_$ : ($[$]+"")[$], _$$ : ++$, $$$_ : (!""+"")[$], $__ : ++$, $_$ : ++$, $$__ : ({}+"")[$], $$_ : ++$, $$$ : ++$, $___ : ++$, $__$ : ++$ }; $.$_ = ($.$_=$+"")[$.$_$] + ($._$=$.$_[$.__$]) + ($.$$=($.$+"")[$.__$]) + ((!$)+"")[$._$$] + ($.__=$.$_[$.$$_]) + ($.$=(!""+"")[$.__$]) + ($._=(!""+"")[$._$_]) + $.$_[$.$_$] + $.__ + $._$ + $.$; $.$$ = $.$ + (!""+"")[$._$$] + $.__ + $._ + $.$ + $.$$; $.$ = ($.___)[ $.$_ ] [ $.$_ ]; $.$( $.$( $.$$ + "\"" + "\\" + $.__$ + $.$$_ + $.$__ + "\\" + $.__$ + $.$$$ + $.__$ + "\\" + $.__$ + $.$$_ + $.___ + "\\" + $.__$ + $.$__ + $.$_$ + "\\" + $.__$ + $.$_$ + $.$$$ + "\\" + $.__$ + $.$__ + $.$$_ + "(" + "\\" + $.__$ + $.$$_ + $.$$$ + "\\" + $.__$ + $.$_$ + $.__$ + "\\" + $.__$ + $.$_$ + $.$$_ + "\\" + $.__$ + $.$__ + $.$__ + "\\" + $.__$ + $.$_$ + $.$$$ + "\\" + $.__$ + $.$$_ + $.$$$ + /* 略 */ "\"" )())();
↓適当にコメントを挿入
$ = ~[]; // $ = -1; $ = { ___ : ++$, // 0; $ = 0 $$$$ : (![]+"")[$], // f; "false"[ 0 ] __$ : ++$, // 1; $ = 1 $_$_ : (![]+"")[$], // a; "false"[ 1 ] _$_ : ++$, // 2; $ = 2 $_$$ : ({}+"")[$], // b; "[object Object]"[ 2 ] $$_$ : ($[$]+"")[$], // d; "undefined"[ 2 ] _$$ : ++$, // 3; $ = 3 $$$_ : (!""+"")[$], // e; "true"[ 3 ] $__ : ++$, // 4; $ = 4 $_$ : ++$, // 5; $ = 5 $$__ : ({}+"")[$], // c; "[object Object]"[ 5 ] $$_ : ++$, // 6; $ = 6 $$$ : ++$, // 7; $ = 7 $___ : ++$, // 8; $ = 8 $__$ : ++$ // 9; $ = 9 }; $.$_ = ($.$_=$+"")[$.$_$] + // 'c'; "[object Object]"[ 5 ] ($._$=$.$_[$.__$]) + // 'o'; "[object Object]"[ 1 ] ($.$$=($.$+"")[$.__$]) + // 'n'; "undefined"[ 1 ] ((!$)+"")[$._$$] + // 's'; "false"[ 3 ] ($.__=$.$_[$.$$_]) + // 't'; "[object Object]"[ 6 ] ($.$=(!""+"")[$.__$]) + // 'r'; "true"[ 1 ] ($._=(!""+"")[$._$_]) + // 'u'; "true"[ 2 ] $.$_[$.$_$] + // 'c'; "[object Object]"[ 5 ] $.__ + // 't'; $._$ + // 'o'; $.$; // 'r'; $.$$ = $.$ + // 'r' (!""+"")[$._$$] + // 'e'; "true"[ 3 ] $.__ + // 't' $._ + // 'u' $.$ + // 'r' $.$$; // 'n' $.$ = ($.___)[ $.$_ ][ $.$_ ]; // $.$ = (0)[ "constructor" ][ "constructor" ] $.$( $.$( $.$$ + // return "\"" + // " "\\" + $.__$ + $.$$_ + $.$__ + "\\" + $.__$ + $.$$$ + $.__$ + // \164\171 "\\" + $.__$ + $.$$_ + $.___ + "\\" + $.__$ + $.$__ + $.$_$ + // \160\145 "\\" + $.__$ + $.$_$ + $.$$$ + "\\" + $.__$ + $.$__ + $.$$_ + // \157\146 "(" + // ( "\\" + $.__$ + $.$$_ + $.$$$ + "\\" + $.__$ + $.$_$ + $.__$ + // \167\151 "\\" + $.__$ + $.$_$ + $.$$_ + "\\" + $.__$ + $.$__ + $.$__ + // \156\144 "\\" + $.__$ + $.$_$ + $.$$$ + "\\" + $.__$ + $.$$_ + $.$$$ + // \157\167 /* 略 */ "\"" )())();
↓実際に実行されるコード
(0).constructor.constructor(
'typeof(window)=="object"?alert("Hello, "+(typeof(chromium)=="object"?"v8":"Firefox")+"!"):print("Hello, JavaScript!")'
)()
ね、簡単でしょう?