(2011/12/29 ちょこっと追記した)
javascriptの難読化についてググってたら、たまたま検索結果にAcme::EyeDropsというPerlモジュールを見かけました。
cpan Acme::EyeDrops か、ActivePerlなら ppm install Acme-EyeDrops とかでインストール。
結構はまってしまいまして・・・eyeファイル作るの楽しいす。自己満ですけど(^^;
eyeファイルは、要は「#」だけでアスキーアートを作ればいいだけ。エディターだけで作るのは手間かかるけど、テキストペイントっていうアプリが一番使いやすい。かなり古いけど。この手のアプリって、なんか有名なものってあるんですかね?
たとえば・・・下記のようなeyeファイル(拡張子はeye)と、
## ## ####### ## ## ######## ######## ## ## ######## ###### ####### ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ### ## ## ## ## #### ## ## ## ## ## ## ## #### ## ## ## ## #### ## ## #### ## ## ## ## ## ######## ###### ## ###### ###### ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #### ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ### ## ## ## ####### ####### ## ## ######## ## ######## ###### ####### ## ## ######## ##
下記のように変換するサンプルスクリプトを用意して・・・
#!/usr/bin/perl # # hello world # use strict; use warnings; use IO::File; &{sub { IO::File->new_from_fd(fileno(STDERR),'>')->print('Hello,World\n'); }}(@ARGV);
下記変換スクリプトで上記ファイルを処理してやると・・・
#!/usr/bin/perl use strict; use warnings; use Acme::EyeDrops qw/sightly/; #Startup code &{sub{ my $command = { Regex => 0, EyeDir => eyeファイルが置かれているディレクトリパス Shape =>; 変換に使用するeyeファイルのベース名 SourceFile => 変換するPerlファイル }; print sightly($command); }}(@ARGV);
↓のような感じに変換される。。。これでちゃーーーーんとPerlスクリプトとして動くんだ!
用途は分からんけど・・・(笑) もう嫌がらせの域かと。 実際、忙しい時に、こんなファイルを見せられたら発狂するな(^^;;;
ドキュメントをよく読んでないので分かりませんが、変換後のソースを元に戻す方法あるのかな~?
遠くから見ると、文字に見えてきませんか?(^^;;;
eval eval '"'. (( (( '#')))) .+ (( ('!'))). '/'.('[' ^+ (( '.'))).( ('[')^ "(").( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '[' )) )) )) )) )))) )) )) )) )) )) )) )) )))) )) )) )) )) )))) ^+ (( ')') )) .+ (( (( (( '/'))))) ).('`' |+ '"').( ('`')| (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( ')') )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) )) ). (('`')| ('.')). (( (( '/')))). +( '['^'+') .('`'| "%").( (( (( '['))))^ (( (( (( ')')))) )) ). ('`'|',' ).("!"^ (( (( '+'))))) .('['^ ".").( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '[' )) )) )) )) )))) )) )) )) )) )) )) )) )))) )) )) )) )) )))) ^+ (( '(') )) .( (( (( (( '`'))))) )|'%') .( ('{')^ '[').( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '[') )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) )) ^+ "(").( '['^'/' ). +( '['^')') .( '`'|')') .('`'| "#").( (( (( '['))))^ (( (( (( '/')))) )) ). ';'.('!' ^"+").( (( (( '['))))^ '.').( '['^'(' ). +( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '`' )) )) )) )) )))) )) )) )) )) )) )) )) )))) )) )) )) )) |'%' ). +( '{'^ (( (( (( (( (( '['))))) )))))) .( ('[')^ ',').( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '`') )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) )) |+ "!").( '['^')' ). +( '`'|'.') .( '`'|')') .('`'| ".").( (( (( '`'))))| (( (( (( "'")))) )) ). ('['^'(' ).";".( (( (( '!'))))^ '+').( '['^'.' ). +( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '[' )) )) )) )) )))) )) )) )) )) )) )) )) )))) )) )) )) )) ^'(' ). +( '`'| (( (( (( (( (( '%'))))) )))))) .( ('{')^ '[').( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '`') )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) )) ^+ ")").( '`'^'/' ). (( (':'))). (( ":")).( ('`')^ "&").( (( (( '`'))))| (( (( (( ')')))) )) ). ('`'|',' ).("`"| (( (( '%'))))) .';'.( '!'^'+' ). +( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '!' )) )) )) )) )))) )) )) )) )) )) )) )) )))) )) )) )) )) ^'+' ). (( '&') ). (( (( (( (( '\')))) )))).+ (( '{')). ("["^ (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '(') )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) )) ). (('[')^ ".").( (( (( '`'))))| (( '"'))).( ('!')^ ('+')). (( (( '\')))) .+ (( (( '{')))) .( (( ('!')))^ ('+')).( (( (( '{'))))^ '[').( '{'^'[' ). +( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '`' )) )) )) )) )))) )) )) )) )) )) )) )) )))) )) )) )) )) ^')' ). +( '`'^ (( (( (( (( (( '/'))))) )))))) .+ (':'). ":".( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '`') )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) )) ^+ "&").( '`'|')' ). +( '`'|',') .( '`'|'%') ."-". ('>').( (( (( '`'))))| (( (( (( '.')))) )) ). ('`'|'%' ).("["^ (( (( ','))))) .'_'.( '`'|'&' ). +( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '[' )) )) )) )) )))) )) )) )) )) )) )) )) )))) )) )) )) )) ^')' ). +( '`'| (( (( (( (( (( '/'))))) )))))) .( ('`')| "-"). (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '_') )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) )) .( '`'|'&' ).('`'| (( (( '$'))))) .+ '('.('`' |'&'). (('`')| (( (( ')'))))) .( (( (( '`')))) |+ (( ','))).( '`'|'%') .( (( ('`')))| '.').( '`'|'/' ). (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '(' )) )) )) )) )))) )) )) )) )) )) )) )) )))) )) )) )) )) )).( (( (( '{') )) )^ (( (( (( '('))))) )).''. +( ('{')^ '/').( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '`') )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) )) ^+ "$").( '`'^'%' ). +( '{'^')') .( '{'^')') .")". ','."'" .+ (( ('>'))). (( (( (( "'")))) )) .+ ')'.'-'. '>'.('[' ^+ (( '+'))).( ('[')^ ")").( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '`' )) )) )) )) )))) )) )) )) )) )) )) )) )))) )) )) )) )) )))) |+ (( ')') )) .( (( (( (( '`'))))) )|'.') .( ('[')^ "/"). (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '(') )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) )) .+ ('\'). ('"').( (( (( '`'))))^ (( '('))).( ('`')| "%").( (( (( '`'))))| (( (( (( ',')))) )) ). ('`'|',' ).("`"| (( (( '/'))))) .','.( '{'^',' ). +( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '`' )) )) )) )) )))) )) )) )) )) )) )) )) )))) )) )) )) )) |'/' ). +( '['^ (( (( (( (( (( ')'))))) )))))) .( ('`')| ',').( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '`') )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) )) |+ ('$')). ('\'). (( (( '\')))) .( '`'|'.') .'\'. '"'.')' .+ (( ";")).( (( (( (( '!')))) )) ^+ ('+')).( '{'^'[') .( (( ('{')))^ '[').( '!'^'+' ). (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( ((( (( (( (( (( '\' )) )) )) )) )) )) )) )))) )) )) )) )) )))) )) )) )))) )) )) )) )) )) ))).'}'. '\'.+ (( '}')). ('('). (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '\' )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) )) ). ('@').( '`'^'!' ). +( '{'^')') .( '`'^"'") .('{'^ ('-')). (( (( ')')))). (( (( (( ';')))) )) .( '!'^'+') .(('!')^ (( (( '+'))))) ."""; $:='.'^ (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '~' )) )) )) )) )))) )) )) )) )) )) )) )) )))) )) )) )) )) )))) ;( $~ )=(( (( (( (( (( (( '@'))))) )))))) )| '(';$^ =")"^ (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '[') )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) )) ;( $/)='`' |'.';$, =( (( "(")))^ (( '}'));$ ="`"| '!';#;# ;# ;# ;#;#;#;# ;#