(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 '"'.
(( (( '#')))) .+ (( ('!'))). '/'.('[' ^+ (( '.'))).( ('[')^ "(").( (( (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '[' )) )) )) ))
)))) )) )) )) )) )) )) )) )))) )) )) )) )) )))) ^+ (( ')')
)) .+ (( (( (( '/'))))) ).('`' |+ '"').( ('`')| (( (( (( (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( ')') )) ))
)) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) ))
). (('`')| ('.')). (( (( '/')))). +( '['^'+') .('`'| "%").( (( (( '['))))^ ((
(( (( ')')))) )) ). ('`'|',' ).("!"^ (( (( '+'))))) .('['^ ".").( (( (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '[' )) )) )) ))
)))) )) )) )) )) )) )) )) )))) )) )) )) )) )))) ^+ (( '(')
)) .( (( (( (( '`'))))) )|'%') .( ('{')^ '[').( (( (( (( (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( '[') )) ))
)) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) ))
^+ "(").( '['^'/' ). +( '['^')') .( '`'|')') .('`'| "#").( (( (( '['))))^ ((
(( (( '/')))) )) ). ';'.('!' ^"+").( (( (( '['))))^ '.').( '['^'(' ). +( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '`' )) )) )) ))
)))) )) )) )) )) )) )) )) )))) )) )) )) )) |'%' ). +( '{'^
(( (( (( (( (( '['))))) )))))) .( ('[')^ ',').( (( (( (( (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( '`') )) ))
)) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) ))
|+ "!").( '['^')' ). +( '`'|'.') .( '`'|')') .('`'| ".").( (( (( '`'))))| ((
(( (( "'")))) )) ). ('['^'(' ).";".( (( (( '!'))))^ '+').( '['^'.' ). +( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '[' )) )) )) ))
)))) )) )) )) )) )) )) )) )))) )) )) )) )) ^'(' ). +( '`'|
(( (( (( (( (( '%'))))) )))))) .( ('{')^ '[').( (( (( (( (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( '`') )) ))
)) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) ))
^+ ")").( '`'^'/' ). (( (':'))). (( ":")).( ('`')^ "&").( (( (( '`'))))| ((
(( (( ')')))) )) ). ('`'|',' ).("`"| (( (( '%'))))) .';'.( '!'^'+' ). +( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '!' )) )) )) ))
)))) )) )) )) )) )) )) )) )))) )) )) )) )) ^'+' ). (( '&')
). (( (( (( (( '\')))) )))).+ (( '{')). ("["^ (( (( (( (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( '(') )) ))
)) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) ))
). (('[')^ ".").( (( (( '`'))))| (( '"'))).( ('!')^ ('+')). (( (( '\')))) .+
(( (( '{')))) .( (( ('!')))^ ('+')).( (( (( '{'))))^ '[').( '{'^'[' ). +( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '`' )) )) )) ))
)))) )) )) )) )) )) )) )) )))) )) )) )) )) ^')' ). +( '`'^
(( (( (( (( (( '/'))))) )))))) .+ (':'). ":".( (( (( (( (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( '`') )) ))
)) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) ))
^+ "&").( '`'|')' ). +( '`'|',') .( '`'|'%') ."-". ('>').( (( (( '`'))))| ((
(( (( '.')))) )) ). ('`'|'%' ).("["^ (( (( ','))))) .'_'.( '`'|'&' ). +( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '[' )) )) )) ))
)))) )) )) )) )) )) )) )) )))) )) )) )) )) ^')' ). +( '`'|
(( (( (( (( (( '/'))))) )))))) .( ('`')| "-"). (( (( (( (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( '_') )) ))
)) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) ))
.( '`'|'&' ).('`'| (( (( '$'))))) .+ '('.('`' |'&'). (('`')| (( (( ')'))))) .(
(( (( '`')))) |+ (( ','))).( '`'|'%') .( (( ('`')))| '.').( '`'|'/' ). (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '(' )) )) )) ))
)))) )) )) )) )) )) )) )) )))) )) )) )) )) )).( (( (( '{')
)) )^ (( (( (( '('))))) )).''. +( ('{')^ '/').( (( (( (( (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( '`') )) ))
)) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) ))
^+ "$").( '`'^'%' ). +( '{'^')') .( '{'^')') .")". ','."'" .+ (( ('>'))). ((
(( (( "'")))) )) .+ ')'.'-'. '>'.('[' ^+ (( '+'))).( ('[')^ ")").( (( (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '`' )) )) )) ))
)))) )) )) )) )) )) )) )) )))) )) )) )) )) )))) |+ (( ')')
)) .( (( (( (( '`'))))) )|'.') .( ('[')^ "/"). (( (( (( (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( '(') )) ))
)) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) ))
.+ ('\'). ('"').( (( (( '`'))))^ (( '('))).( ('`')| "%").( (( (( '`'))))| ((
(( (( ',')))) )) ). ('`'|',' ).("`"| (( (( '/'))))) .','.( '{'^',' ). +( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '`' )) )) )) ))
)))) )) )) )) )) )) )) )) )))) )) )) )) )) |'/' ). +( '['^
(( (( (( (( (( ')'))))) )))))) .( ('`')| ',').( (( (( (( (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( '`') )) ))
)) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) ))
|+ ('$')). ('\'). (( (( '\')))) .( '`'|'.') .'\'. '"'.')' .+ (( ";")).( ((
(( (( '!')))) )) ^+ ('+')).( '{'^'[') .( (( ('{')))^ '[').( '!'^'+' ). (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( ((( (( (( (( ((
'\' )) )) )) )) )) )) )) )))) )) )) )) )) )))) )) )) ))))
)) )) )) )) )) ))).'}'. '\'.+ (( '}')). ('('). (( (( (( (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( '\' )) ))
)) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) ))
). ('@').( '`'^'!' ). +( '{'^')') .( '`'^"'") .('{'^ ('-')). (( (( ')')))). ((
(( (( ';')))) )) .( '!'^'+') .(('!')^ (( (( '+'))))) ."""; $:='.'^ (( (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( (( (( '~' )) )) )) ))
)))) )) )) )) )) )) )) )) )))) )) )) )) )) )))) ;( $~ )=((
(( (( (( (( (( '@'))))) )))))) )| '(';$^ =")"^ (( (( (( (( (( (( ((
(( (( (( (( (( (( (( (( (( (( (( (( (( (( '[') )) ))
)) )) )) )) )) )) )) )) )) )) )) )) )) )) )) ))) )) ))
;( $/)='`' |'.';$, =( (( "(")))^ (( '}'));$ ="`"| '!';#;# ;# ;# ;#;#;#;# ;#