LoginSignup
7
2

More than 5 years have passed since last update.

perlスクリプト難読化

Last updated at Posted at 2016-12-05

perlスクリプトを、ユーモアを交えて難読化してくれるモジュール

使い方や実行結果は、上記サイトを見ればわかると思いますが、、、。

以下簡単な使い方。

eyedrop.pl
#! /usr/bin/perl

use Acme::EyeDrops qw(sightly);

my $input_file = $ARGV[0];
my $output_file = $ARGV[1];
my $type = $ARGV[2];

my $fh;

open($fh, '>' . $output_file);

# 元のファイルにshebangを書いていても、難読化すると無くなるので、
# 追加しておく。実行権限を与えて使う、という予定が無ければいらない。
print($fh "#! /usr/bin/perl\n\n");

print($fh
    sightly({
        Shape      => $type,
        SourceFile => $input_file,
        Regex      => 1
    })
);

close($fh);

以下のファイルを読み込む想定

input.pl
#! /usr/bin/perl

for (my $i = 0; $i < 10; $i++) {
    print("Hello Hello Hello!\n");
}

sightlyの使い方は、ちゃんと調べていないけど、Shapeに渡す内容によって、
出力されるアスキーアートが変わる模様。
以下camelとしているが、これ以外にも色々ある。

[root@localhost ~]# ./eyedrop.pl input.pl output.pl camel
1 shapes completed.

出力されたoutput.plを見ると、、、


[root@localhost ~]# cat output.pl
#! /usr/bin/perl

                                      ''=~('('.'?'
           .'{'.(                   '`'|'%').("\["^
        '-').('`'|                '!').('`'|',').'"'
 .'#'.'!'.(  ('{')^              '[').'/'.('['^'.').(
'['^'(').('['^"\)").            '/'.('`'|'"').('`'|')'
).('`'|'.').'/'.('['^          '+').('`'|'%').('['^')'
  ).('`'|',').(('!')^        '+').('!'^'+').('`'|'&').(
       '`'|'/').('['^      ')').('{'^'[').'('.('`'|'-').
      ('['^'"').('{'     ^'[').'\\'.'$'.('`'|')').(('{')^
     '[').'='.("\{"^   '[').('^'^('`'|'.')).';'.('{'^'[').
    '\\'.'$'.("\`"|   ')').('{'^'[').'<'.('{'^'[').('^'^('`'
    |'/')).(('^')^(  '`'|'.')).';'.('{'^'[').'\\'.'$'.(('`')|
    ')').'+'."\+".  ')'.('{'^'[').'\\'.'{'.('!'^'+').('{'^'['
    ).('{'^"\[").(  '{'^'[').('{'^'[').('['^'+').('['^(')')).(
    '`'|')').('`'|'.').('['^'/').'('.'\\'.'"'.('`'^'(').("\`"|
    '%').('`'|',').('`'|',').('`'|'/').('{'^'[').('`'^'(').('`'
     |'%').('`'|',').('`'|',').('`'|'/').('{'^'[').('`'^"\(").(
     '`'|'%').('`'|',').('`'|',').('`'|'/').'!'.'\\'.'\\'.("\`"|
      '.').'\\'.'"'.')'.';'.('!'^'+').'\\'.'}'.('!'^'+').('!'^'+'
       ).('!'^'+').('!'^'+').'"'.'}'.')');$:='.'^'~';$~='@'|"\(";
        $^=')'^'[';$/='`'|'.';$,='('^'}';$\='`'|'!';$:=(')')^ '}'
         ;$~='*'|'`';$^='+'^'_';$/='&'|'@';$,='['&'~';$\=','  ^((
          '|'));$:='.'^'~';$~='@'|'(';$^=')'^'[';$/ ='`'|'.'  ;$,
            ='('^'}';$\='`'|'!';$:=')'^'}';$~='*'|  '`';$^=   '+'
             ^'_'; $/='&'|'@';$,='['&'~';$\="\,"^   '|';$:=   '.'
                   ^'~';$~='@'|'(';$^=')'^'[';$/    =('`')|   '.'
                   ;$,='('^    '}';$\='`' |"\!";     $:=')'   ^+
                   '}';$~=     '*'|'`';   $^='+'     ^"\_";  $/
                   =('&')|     "\@";$,=   "\["&       "\~";  (
                   ($\))=      ','^'|';   ($:)         ='.'
                   ^"\~";     $~=('@')|   '(';         ($^)
                    =')'^     "\[";$/=    '`'|         '.';
                    ($,)=     '('^'}'     ;$\=         '`'|
                    '!';     $:=')'       ^'}'         ;$~=
                    '*'|     '`'          ;$^=         '+'^
                    '_';      $/=         '&'          |((
                    '@'        ));       $,=           '['
                    &((         '~'     ));            $\=
                    ','          ^((   '|'              ))
                    ;(             ($:))=               ((
                    ((              '.'))               ))
                    ^+             "\~";$~=             ((
                   '@'            ))|+ "\(";            $^
                  =((           ')'))^  '[';           $/=
                 '`'|         "\.";$,=   '('          ^'}'
               ;($\)=                                ('`')|
             "\!";$:=                               ')'^'}'
[root@localhost ~]#

もはや原形がない。
けど、実行すると、ちゃんと動く。

[root@localhost ~]# chmod 755 output.pl
[root@localhost ~]# ./output.pl
Hello Hello Hello!
Hello Hello Hello!
Hello Hello Hello!
Hello Hello Hello!
Hello Hello Hello!
Hello Hello Hello!
Hello Hello Hello!
Hello Hello Hello!
Hello Hello Hello!
Hello Hello Hello!
[root@localhost ~]#

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2