質問編集履歴

3

2019/10/12 17:12

投稿

d__..___
d__..___

スコア18

test CHANGED
File without changes
test CHANGED
@@ -1 +1 @@
1
- sss
1
+ ????

2

2019/10/12 17:12

投稿

d__..___
d__..___

スコア18

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

1

openssl_encryptを使ってみましたが、動作しません。

2019/10/12 17:12

投稿

d__..___
d__..___

スコア18

test CHANGED
File without changes
test CHANGED
@@ -40,6 +40,108 @@
40
40
 
41
41
 
42
42
 
43
+ 追記:
44
+
45
+ openssl_encryptというものがあると知り、導入してみましたが実行後のtest_encrypted.phpが動作しません。
46
+
47
+ どこが問題でしょうか。
48
+
49
+
50
+
51
+ ```PHP
52
+
53
+ <?php
54
+
55
+ $infile = "./test.php";
56
+
57
+ $outfile = "./test_encrypted.php";
58
+
59
+ $data="ob_end_clean();?>";
60
+
61
+ $data.=php_strip_whitespace($infile);
62
+
63
+ // compress data
64
+
65
+ $data=gzcompress($data,9);
66
+
67
+ // encode in base64
68
+
69
+ $data=base64_encode($data);
70
+
71
+ // generate output text
72
+
73
+
74
+
75
+ //与えられた文字を16進数に変換
76
+
77
+ function strtohex($x)
78
+
79
+ {
80
+
81
+ $s='';
82
+
83
+ foreach (str_split($x) as $c) $s.=sprintf("%02X",ord($c));
84
+
85
+ return($s);
86
+
87
+ }
88
+
89
+
90
+
91
+ //生成条件
92
+
93
+ //passとなっているところはopensslコマンド的にはkeyとなる
94
+
95
+ $iv = "1234567890123456";
96
+
97
+ $pass = '1234567890123456';
98
+
99
+ $method = 'aes-256-cbc';
100
+
101
+
102
+
103
+ $endata = openssl_encrypt ($data, $method, $pass, true, $iv);
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
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
+
144
+
43
145
  ※PHPのファイルは直接見られることはないといった回答やセキュリティがどうのこうの
44
146
 
45
147
  といった回答がありました。そのような回答は必要ありません。ただ難読化させるということにのみ焦点を当てた回答をお願い致します。