回答編集履歴

1

追記

2019/10/13 06:39

投稿

kyoya0819
kyoya0819

スコア10429

test CHANGED
@@ -9,3 +9,141 @@
9
9
  - 3, 1文字ずつハッシュ化
10
10
 
11
11
  - 4, ファイルを保存
12
+
13
+
14
+
15
+ 質問者さんが内容を抹消してしまうので以下に質問者がどんなことを質問したかを書いておきます。
16
+
17
+
18
+
19
+ # 以下は質問者により意図的に内容が抹消される前の質問です。
20
+
21
+
22
+
23
+ PHPのファイルtest.phpを難読化するphpを書いています。
24
+
25
+ 以下のスクリプトだと難読化が弱いので、より複雑に難読化させる方法を教えてください。
26
+
27
+ 今回はencrypt.phpという以下のファイルを作ります。
28
+
29
+ ```PHP
30
+
31
+ <?php
32
+
33
+ $infile = "./test.php";
34
+
35
+ $outfile = "./test_encrypted.php";
36
+
37
+ $data="ob_end_clean();?>";
38
+
39
+ $data.=php_strip_whitespace($infile);
40
+
41
+ $data=gzcompress($data,9);
42
+
43
+ $data=base64_encode($data);
44
+
45
+ $out='<?ob_start();$a=\''.$data.'\';eval(gzuncompress(base64_decode($a)));$v=ob_get_contents();ob_end_clean();?>';
46
+
47
+ file_put_contents($outfile,$out);
48
+
49
+ ?>
50
+
51
+ ```
52
+
53
+ test.phpをより複雑に難読化させられるのでしたら、encrypt.phpの手法はどのような方法でもかまいません。
54
+
55
+ test.phpという通常のphpファイルをtest_encrypted.phpという難読化されたファイルを生成させられるよう
56
+
57
+ encrypt.phpを改良してください。
58
+
59
+ 追記:
60
+
61
+ openssl_encryptというものがあると知り、導入してみましたが実行後のtest_encrypted.phpが動作しません。
62
+
63
+ どこが問題でしょうか。
64
+
65
+ ```PHP
66
+
67
+ <?php
68
+
69
+ $infile = "./test.php";
70
+
71
+ $outfile = "./test_encrypted.php";
72
+
73
+ $data="ob_end_clean();?>";
74
+
75
+ $data.=php_strip_whitespace($infile);
76
+
77
+ // compress data
78
+
79
+ $data=gzcompress($data,9);
80
+
81
+ // encode in base64
82
+
83
+ $data=base64_encode($data);
84
+
85
+ // generate output text
86
+
87
+ //与えられた文字を16進数に変換
88
+
89
+ function strtohex($x)
90
+
91
+ {
92
+
93
+ $s='';
94
+
95
+ foreach (str_split($x) as $c) $s.=sprintf("%02X",ord($c));
96
+
97
+ return($s);
98
+
99
+ }
100
+
101
+ //生成条件
102
+
103
+ //passとなっているところはopensslコマンド的にはkeyとなる
104
+
105
+ $iv = "1234567890123456";
106
+
107
+ $pass = '1234567890123456';
108
+
109
+ $method = 'aes-256-cbc';
110
+
111
+ $endata = openssl_encrypt ($data, $method, $pass, true, $iv);
112
+
113
+ $out='<?
114
+
115
+ ob_start();
116
+
117
+ $a = \'
118
+
119
+ '.$endata.'
120
+
121
+ \';
122
+
123
+ $b = openssl_decrypt($data, $method, $pass, true, $iv);
124
+
125
+ eval(gzuncompress(base64_decode($b)));
126
+
127
+ $v=ob_get_contents();
128
+
129
+ ob_end_clean();
130
+
131
+ ?>
132
+
133
+ ';
134
+
135
+ // write output text
136
+
137
+ var_dump(file_put_contents($outfile,$out));
138
+
139
+ ?>
140
+
141
+ ```
142
+
143
+ ※PHPのファイルは直接見られることはないといった回答やセキュリティがどうのこうの
144
+
145
+ といった回答がありました。そのような回答は必要ありません。ただ難読化させるということにのみ焦点を当てた回答をお願い致します。
146
+
147
+ 趣味でやっているため、なんのためにこのようなことをするのかといった回答もご遠慮お願い致します。
148
+
149
+ 難読化に関する回答のみお願い致します