run:R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
23.8 KB
2026-03-11 16:18:51
R W Run
7.8 KB
2026-03-11 16:18:52
R W Run
36.1 KB
2026-03-11 16:18:51
R W Run
11.9 KB
2026-03-11 16:18:52
R W Run
18.94 KB
2026-03-11 16:18:52
R W Run
7.35 KB
2026-03-11 16:18:52
R W Run
28.6 KB
2026-03-11 16:18:51
R W Run
316 By
2026-03-11 16:18:51
R W Run
12.9 KB
2026-03-11 16:18:51
R W Run
61.02 KB
2026-03-11 16:18:52
R W Run
15 KB
2026-03-11 16:18:51
R W Run
112.05 KB
2026-03-11 16:18:51
R W Run
12.47 KB
2026-03-11 16:18:51
R W Run
15.07 KB
2026-03-11 16:18:52
R W Run
9.84 KB
2026-03-11 16:18:52
R W Run
13.17 KB
2026-03-11 16:18:52
R W Run
33.83 KB
2026-03-11 16:18:51
R W Run
42.63 KB
2026-03-11 16:18:51
R W Run
55.71 KB
2026-03-11 16:18:52
R W Run
12.53 KB
2026-03-11 16:18:51
R W Run
2.55 KB
2026-03-11 16:18:52
R W Run
28.92 KB
2026-03-11 16:18:52
R W Run
539 By
2026-03-11 16:18:51
R W Run
367 By
2026-03-11 16:18:52
R W Run
42.65 KB
2026-03-11 16:18:51
R W Run
401 By
2026-03-11 16:18:51
R W Run
6.61 KB
2026-03-11 16:18:51
R W Run
664 By
2026-03-11 16:18:52
R W Run
20.63 KB
2026-03-11 16:18:51
R W Run
2.18 KB
2026-03-11 16:18:52
R W Run
453 By
2026-03-11 16:18:52
R W Run
457 By
2026-03-11 16:18:51
R W Run
36.83 KB
2026-03-11 16:18:52
R W Run
2.41 KB
2026-03-11 16:18:52
R W Run
8.28 KB
2026-03-11 16:18:51
R W Run
13.89 KB
2026-03-11 16:18:51
R W Run
11.76 KB
2026-03-11 16:18:51
R W Run
2.65 KB
2026-03-11 16:18:51
R W Run
7.43 KB
2026-03-11 16:18:51
R W Run
17.46 KB
2026-03-11 16:18:51
R W Run
5.14 KB
2026-03-11 16:18:52
R W Run
16.7 KB
2026-03-11 16:18:51
R W Run
8.28 KB
2026-03-11 16:18:52
R W Run
2.92 KB
2026-03-11 16:18:52
R W Run
1.32 KB
2026-03-11 16:18:51
R W Run
4.6 KB
2026-03-11 16:18:52
R W Run
11.62 KB
2026-03-11 16:18:52
R W Run
2.5 KB
2026-03-11 16:18:51
R W Run
1.97 KB
2026-03-11 16:18:51
R W Run
11.25 KB
2026-03-11 16:18:52
R W Run
5.32 KB
2026-03-11 16:18:51
R W Run
10.99 KB
2026-03-11 16:18:52
R W Run
68.32 KB
2026-03-11 16:18:51
R W Run
6.34 KB
2026-03-11 16:18:51
R W Run
5.49 KB
2026-03-11 16:18:51
R W Run
1.99 KB
2026-03-11 16:18:52
R W Run
7.02 KB
2026-03-11 16:18:51
R W Run
4.91 KB
2026-03-11 16:18:52
R W Run
16.86 KB
2026-03-11 16:18:51
R W Run
24.23 KB
2026-03-11 16:18:51
R W Run
3.97 KB
2026-03-11 16:18:51
R W Run
47.66 KB
2026-03-11 16:18:51
R W Run
9.22 KB
2026-03-11 16:18:51
R W Run
25.51 KB
2026-03-11 16:18:51
R W Run
198.38 KB
2026-03-11 16:18:52
R W Run
56.65 KB
2026-03-11 16:18:51
R W Run
10.46 KB
2026-03-11 16:18:51
R W Run
10.95 KB
2026-03-11 16:18:52
R W Run
29.26 KB
2026-03-11 16:18:51
R W Run
70.91 KB
2026-03-11 16:18:52
R W Run
35.3 KB
2026-03-11 16:18:52
R W Run
16.61 KB
2026-03-11 16:18:52
R W Run
2.57 KB
2026-03-11 16:18:52
R W Run
39.83 KB
2026-03-11 16:18:51
R W Run
70.64 KB
2026-03-11 16:18:51
R W Run
15.56 KB
2026-03-11 16:18:52
R W Run
7.33 KB
2026-03-11 16:18:52
R W Run
253 By
2026-03-11 16:18:51
R W Run
7.96 KB
2026-03-11 16:18:52
R W Run
3.23 KB
2026-03-11 16:18:52
R W Run
969 By
2026-03-11 16:18:52
R W Run
16.28 KB
2026-03-11 16:18:51
R W Run
7.22 KB
2026-03-11 16:18:51
R W Run
12.95 KB
2026-03-11 16:18:51
R W Run
6.53 KB
2026-03-11 16:18:51
R W Run
3.42 KB
2026-03-11 16:18:52
R W Run
5.84 KB
2026-03-11 16:18:51
R W Run
1.97 KB
2026-03-11 16:18:51
R W Run
4.3 KB
2026-03-11 16:18:52
R W Run
2.91 KB
2026-03-11 16:18:51
R W Run
16.46 KB
2026-03-11 16:18:52
R W Run
40.6 KB
2026-03-11 16:18:51
R W Run
20.22 KB
2026-03-11 16:18:51
R W Run
36.11 KB
2026-03-11 16:18:52
R W Run
17.01 KB
2026-03-11 16:18:51
R W Run
7.27 KB
2026-03-11 16:18:52
R W Run
6.62 KB
2026-03-11 16:18:52
R W Run
16.49 KB
2026-03-11 16:18:52
R W Run
1.79 KB
2026-03-11 16:18:52
R W Run
29.82 KB
2026-03-11 16:18:51
R W Run
6.67 KB
2026-03-11 16:18:52
R W Run
8.98 KB
2026-03-11 16:18:52
R W Run
19.42 KB
2026-03-11 16:18:51
R W Run
12.01 KB
2026-03-11 16:18:51
R W Run
17.11 KB
2026-03-11 16:18:51
R W Run
6.74 KB
2026-03-11 16:18:52
R W Run
30.93 KB
2026-03-11 16:18:51
R W Run
4.99 KB
2026-03-11 16:18:51
R W Run
4.25 KB
2026-03-11 16:18:51
R W Run
24.72 KB
2026-03-11 16:18:51
R W Run
29.96 KB
2026-03-11 16:18:52
R W Run
6.41 KB
2026-03-11 16:18:51
R W Run
160 KB
2026-03-11 16:18:51
R W Run
6.72 KB
2026-03-11 16:18:52
R W Run
10.92 KB
2026-03-11 16:18:51
R W Run
4.77 KB
2026-03-11 16:18:51
R W Run
3.38 KB
2026-03-11 16:18:51
R W Run
11.18 KB
2026-03-11 16:18:51
R W Run
62.19 KB
2026-03-11 16:18:51
R W Run
2.46 KB
2026-03-11 16:18:51
R W Run
9.17 KB
2026-03-11 16:18:51
R W Run
32.15 KB
2026-03-11 16:18:51
R W Run
34.05 KB
2026-03-11 16:18:52
R W Run
7.15 KB
2026-03-11 16:18:51
R W Run
3.47 KB
2026-03-11 16:18:52
R W Run
1.87 KB
2026-03-11 16:18:52
R W Run
30.91 KB
2026-03-11 16:18:51
R W Run
7.29 KB
2026-03-11 16:18:52
R W Run
7.35 KB
2026-03-11 16:18:51
R W Run
12.54 KB
2026-03-11 16:18:51
R W Run
19.12 KB
2026-03-11 16:18:51
R W Run
18.12 KB
2026-03-11 16:18:52
R W Run
39.99 KB
2026-03-11 16:18:52
R W Run
5.17 KB
2026-03-11 16:18:52
R W Run
979 By
2026-03-11 16:18:51
R W Run
18.44 KB
2026-03-11 16:18:52
R W Run
10.24 KB
2026-03-11 16:18:51
R W Run
1.77 KB
2026-03-11 16:18:52
R W Run
34.9 KB
2026-03-11 16:18:51
R W Run
7.19 KB
2026-03-11 16:18:52
R W Run
160.5 KB
2026-03-11 16:18:51
R W Run
64.27 KB
2026-03-11 16:18:51
R W Run
27.95 KB
2026-03-11 16:18:51
R W Run
4.69 KB
2026-03-11 16:18:51
R W Run
2.94 KB
2026-03-11 16:18:51
R W Run
43.13 KB
2026-03-11 16:18:52
R W Run
2.25 KB
2026-03-11 16:18:52
R W Run
22.5 KB
2026-03-11 16:18:51
R W Run
13.01 KB
2026-03-11 16:18:52
R W Run
3.27 KB
2026-03-11 16:18:51
R W Run
18 KB
2026-03-11 16:18:51
R W Run
210.4 KB
2026-03-11 16:18:52
R W Run
25.86 KB
2026-03-11 16:18:52
R W Run
115.85 KB
2026-03-11 16:18:51
R W Run
373 By
2026-03-11 16:18:52
R W Run
343 By
2026-03-11 16:18:52
R W Run
338 By
2026-03-11 16:18:51
R W Run
100.73 KB
2026-03-11 16:18:52
R W Run
130.93 KB
2026-03-11 16:18:51
R W Run
19.1 KB
2026-03-11 16:18:51
R W Run
17.41 KB
2026-03-11 16:18:52
R W Run
41.98 KB
2026-03-11 16:18:52
R W Run
400 By
2026-03-11 16:18:52
R W Run
11.1 KB
2026-03-11 16:18:52
R W Run
37.02 KB
2026-03-11 16:18:51
R W Run
2.24 KB
2026-03-11 16:18:51
R W Run
188.13 KB
2026-03-11 16:18:51
R W Run
338 By
2026-03-11 16:18:51
R W Run
38 KB
2026-03-11 16:18:51
R W Run
4.02 KB
2026-03-11 16:18:52
R W Run
5.38 KB
2026-03-11 16:18:51
R W Run
3.05 KB
2026-03-11 16:18:52
R W Run
2.61 KB
2026-03-11 16:18:51
R W Run
1.16 KB
2026-03-11 16:18:52
R W Run
4.04 KB
2026-03-11 16:18:51
R W Run
3.71 KB
2026-03-11 16:18:51
R W Run
24.6 KB
2026-03-11 16:18:51
R W Run
9.56 KB
2026-03-11 16:18:51
R W Run
346.43 KB
2026-03-11 16:18:52
R W Run
281.84 KB
2026-03-11 16:18:52
R W Run
14.95 KB
2026-03-11 16:18:51
R W Run
8.44 KB
2026-03-11 16:18:52
R W Run
168.95 KB
2026-03-11 16:18:52
R W Run
20.71 KB
2026-03-11 16:18:52
R W Run
25.27 KB
2026-03-11 16:18:51
R W Run
5.72 KB
2026-03-11 16:18:51
R W Run
4.63 KB
2026-03-11 16:18:52
R W Run
81.73 KB
2026-03-11 16:18:51
R W Run
67.18 KB
2026-03-11 16:18:51
R W Run
156.36 KB
2026-03-11 16:18:52
R W Run
55.19 KB
2026-03-11 16:18:51
R W Run
162 By
2026-03-11 16:18:51
R W Run
61.72 KB
2026-03-11 16:18:51
R W Run
216.06 KB
2026-03-11 16:18:52
R W Run
65.09 KB
2026-03-11 16:18:51
R W Run
25.24 KB
2026-03-11 16:18:52
R W Run
4.81 KB
2026-03-11 16:18:51
R W Run
6.48 KB
2026-03-11 16:18:52
R W Run
21.25 KB
2026-03-11 16:18:51
R W Run
2.79 KB
2026-03-11 16:18:52
R W Run
89.69 KB
2026-03-11 16:18:52
R W Run
19.42 KB
2026-03-11 16:18:52
R W Run
3.69 KB
2026-03-11 16:18:52
R W Run
4.11 KB
2026-03-11 16:18:51
R W Run
40.74 KB
2026-03-11 16:18:51
R W Run
25.38 KB
2026-03-11 16:18:51
R W Run
43.31 KB
2026-03-11 16:18:52
R W Run
102.57 KB
2026-03-11 16:18:52
R W Run
6.18 KB
2026-03-11 16:18:51
R W Run
124.47 KB
2026-03-11 16:18:52
R W Run
35.65 KB
2026-03-11 16:18:52
R W Run
6.94 KB
2026-03-11 16:18:52
R W Run
67.04 KB
2026-03-11 16:18:52
R W Run
10.62 KB
2026-03-11 16:18:51
R W Run
289.35 KB
2026-03-11 16:18:52
R W Run
36.23 KB
2026-03-11 16:18:51
R W Run
200 By
2026-03-11 16:18:52
R W Run
200 By
2026-03-11 16:18:52
R W Run
98.29 KB
2026-03-11 16:18:52
R W Run
30.02 KB
2026-03-11 16:18:52
R W Run
19.03 KB
2026-03-11 16:18:52
R W Run
5.06 KB
2026-03-11 16:18:52
R W Run
255 By
2026-03-11 16:18:51
R W Run
22.66 KB
2026-03-11 16:18:52
R W Run
154.63 KB
2026-03-11 16:18:51
R W Run
9.68 KB
2026-03-11 16:18:51
R W Run
258 By
2026-03-11 16:18:51
R W Run
23.49 KB
2026-03-11 16:18:51
R W Run
3.16 KB
2026-03-11 16:18:51
R W Run
8.4 KB
2026-03-11 16:18:52
R W Run
441 By
2026-03-11 16:18:51
R W Run
7.39 KB
2026-03-11 16:18:51
R W Run
173 KB
2026-03-11 16:18:52
R W Run
544 By
2026-03-11 16:18:52
R W Run
4.17 KB
2026-03-11 16:18:51
R W Run
35.97 KB
2026-03-11 16:18:52
R W Run
1.69 KB
2026-03-11 16:18:51
R W Run
2.84 KB
2026-03-11 16:18:52
R W Run
6.09 KB
2026-03-11 16:18:51
R W Run
8.71 KB
2026-03-11 16:18:51
R W Run
131.84 KB
2026-03-11 16:18:51
R W Run
37.45 KB
2026-03-11 16:18:51
R W Run
173.89 KB
2026-03-11 16:18:51
R W Run
7.09 KB
2026-03-11 16:18:51
R W Run
6.41 KB
2026-03-11 16:18:51
R W Run
1.08 KB
2026-03-11 16:18:51
R W Run
69.46 KB
2026-03-11 16:18:52
R W Run
445 By
2026-03-11 16:18:51
R W Run
799 By
2026-03-11 16:18:52
R W Run
error_log
📄class-phpass.php
1<?php
2/**
3 * Portable PHP password hashing framework.
4 * @package phpass
5 * @since 2.5.0
6 * @version 0.5 / WordPress
7 * @link https://www.openwall.com/phpass/
8 */
9
10#
11# Portable PHP password hashing framework.
12#
13# Version 0.5.4 / WordPress.
14#
15# Written by Solar Designer <solar at openwall.com> in 2004-2006 and placed in
16# the public domain. Revised in subsequent years, still public domain.
17#
18# There's absolutely no warranty.
19#
20# The homepage URL for this framework is:
21#
22# http://www.openwall.com/phpass/
23#
24# Please be sure to update the Version line if you edit this file in any way.
25# It is suggested that you leave the main version number intact, but indicate
26# your project name (after the slash) and add your own revision information.
27#
28# Please do not change the "private" password hashing method implemented in
29# here, thereby making your hashes incompatible. However, if you must, please
30# change the hash type identifier (the "$P$") to something different.
31#
32# Obviously, since this code is in the public domain, the above are not
33# requirements (there can be none), but merely suggestions.
34#
35
36/**
37 * Portable PHP password hashing framework.
38 *
39 * @package phpass
40 * @version 0.5 / WordPress
41 * @link https://www.openwall.com/phpass/
42 * @since 2.5.0
43 */
44class PasswordHash {
45 var $itoa64;
46 var $iteration_count_log2;
47 var $portable_hashes;
48 var $random_state;
49
50 function __construct($iteration_count_log2, $portable_hashes)
51 {
52 $this->itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
53
54 if ($iteration_count_log2 < 4 || $iteration_count_log2 > 31) {
55 $iteration_count_log2 = 8;
56 }
57 $this->iteration_count_log2 = $iteration_count_log2;
58
59 $this->portable_hashes = $portable_hashes;
60
61 $this->random_state = microtime();
62 if (function_exists('getmypid')) {
63 $this->random_state .= getmypid();
64 }
65 }
66
67 function PasswordHash($iteration_count_log2, $portable_hashes)
68 {
69 self::__construct($iteration_count_log2, $portable_hashes);
70 }
71
72 function get_random_bytes($count)
73 {
74 $output = '';
75 if (@is_readable('/dev/urandom') &&
76 ($fh = @fopen('/dev/urandom', 'rb'))) {
77 $output = fread($fh, $count);
78 fclose($fh);
79 }
80
81 if (strlen($output) < $count) {
82 $output = '';
83 for ($i = 0; $i < $count; $i += 16) {
84 $this->random_state =
85 md5(microtime() . $this->random_state);
86 $output .= md5($this->random_state, TRUE);
87 }
88 $output = substr($output, 0, $count);
89 }
90
91 return $output;
92 }
93
94 function encode64($input, $count)
95 {
96 $output = '';
97 $i = 0;
98 do {
99 $value = ord($input[$i++]);
100 $output .= $this->itoa64[$value & 0x3f];
101 if ($i < $count) {
102 $value |= ord($input[$i]) << 8;
103 }
104 $output .= $this->itoa64[($value >> 6) & 0x3f];
105 if ($i++ >= $count) {
106 break;
107 }
108 if ($i < $count) {
109 $value |= ord($input[$i]) << 16;
110 }
111 $output .= $this->itoa64[($value >> 12) & 0x3f];
112 if ($i++ >= $count) {
113 break;
114 }
115 $output .= $this->itoa64[($value >> 18) & 0x3f];
116 } while ($i < $count);
117
118 return $output;
119 }
120
121 function gensalt_private($input)
122 {
123 $output = '$P$';
124 $output .= $this->itoa64[min($this->iteration_count_log2 + 5,
125 30)];
126 $output .= $this->encode64($input, 6);
127
128 return $output;
129 }
130
131 function crypt_private($password, $setting)
132 {
133 $output = '*0';
134 if (substr($setting, 0, 2) === $output) {
135 $output = '*1';
136 }
137
138 $id = substr($setting, 0, 3);
139 # We use "$P$", phpBB3 uses "$H$" for the same thing
140 if ($id !== '$P$' && $id !== '$H$') {
141 return $output;
142 }
143
144 $count_log2 = strpos($this->itoa64, $setting[3]);
145 if ($count_log2 < 7 || $count_log2 > 30) {
146 return $output;
147 }
148
149 $count = 1 << $count_log2;
150
151 $salt = substr($setting, 4, 8);
152 if (strlen($salt) !== 8) {
153 return $output;
154 }
155
156 # We were kind of forced to use MD5 here since it's the only
157 # cryptographic primitive that was available in all versions
158 # of PHP in use. To implement our own low-level crypto in PHP
159 # would have resulted in much worse performance and
160 # consequently in lower iteration counts and hashes that are
161 # quicker to crack (by non-PHP code).
162 $hash = md5($salt . $password, TRUE);
163 do {
164 $hash = md5($hash . $password, TRUE);
165 } while (--$count);
166
167 $output = substr($setting, 0, 12);
168 $output .= $this->encode64($hash, 16);
169
170 return $output;
171 }
172
173 function gensalt_blowfish($input)
174 {
175 # This one needs to use a different order of characters and a
176 # different encoding scheme from the one in encode64() above.
177 # We care because the last character in our encoded string will
178 # only represent 2 bits. While two known implementations of
179 # bcrypt will happily accept and correct a salt string which
180 # has the 4 unused bits set to non-zero, we do not want to take
181 # chances and we also do not want to waste an additional byte
182 # of entropy.
183 $itoa64 = './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
184
185 $output = '$2a$';
186 $output .= chr((int)(ord('0') + $this->iteration_count_log2 / 10));
187 $output .= chr(ord('0') + $this->iteration_count_log2 % 10);
188 $output .= '$';
189
190 $i = 0;
191 do {
192 $c1 = ord($input[$i++]);
193 $output .= $itoa64[$c1 >> 2];
194 $c1 = ($c1 & 0x03) << 4;
195 if ($i >= 16) {
196 $output .= $itoa64[$c1];
197 break;
198 }
199
200 $c2 = ord($input[$i++]);
201 $c1 |= $c2 >> 4;
202 $output .= $itoa64[$c1];
203 $c1 = ($c2 & 0x0f) << 2;
204
205 $c2 = ord($input[$i++]);
206 $c1 |= $c2 >> 6;
207 $output .= $itoa64[$c1];
208 $output .= $itoa64[$c2 & 0x3f];
209 } while (1);
210
211 return $output;
212 }
213
214 function HashPassword($password)
215 {
216 if ( strlen( $password ) > 4096 ) {
217 return '*';
218 }
219
220 $random = '';
221
222 if (CRYPT_BLOWFISH === 1 && !$this->portable_hashes) {
223 $random = $this->get_random_bytes(16);
224 $hash =
225 crypt($password, $this->gensalt_blowfish($random));
226 if (strlen($hash) === 60) {
227 return $hash;
228 }
229 }
230
231 if (strlen($random) < 6) {
232 $random = $this->get_random_bytes(6);
233 }
234 $hash =
235 $this->crypt_private($password,
236 $this->gensalt_private($random));
237 if (strlen($hash) === 34) {
238 return $hash;
239 }
240
241 # Returning '*' on error is safe here, but would _not_ be safe
242 # in a crypt(3)-like function used _both_ for generating new
243 # hashes and for validating passwords against existing hashes.
244 return '*';
245 }
246
247 function CheckPassword($password, $stored_hash)
248 {
249 if ( strlen( $password ) > 4096 ) {
250 return false;
251 }
252
253 $hash = $this->crypt_private($password, $stored_hash);
254 if ($hash[0] === '*') {
255 $hash = crypt($password, $stored_hash);
256 }
257
258 # This is not constant-time. In order to keep the code simple,
259 # for timing safety we currently rely on the salts being
260 # unpredictable, which they are at least in the non-fallback
261 # cases (that is, when we use /dev/urandom and bcrypt).
262 return $hash === $stored_hash;
263 }
264}
265