Linux websever 5.15.0-153-generic #163-Ubuntu SMP Thu Aug 7 16:37:18 UTC 2025 x86_64
Apache/2.4.52 (Ubuntu)
: 192.168.3.70 | : 192.168.1.99
Cant Read [ /etc/named.conf ]
8.1.2-1ubuntu2.23
urlab
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
var /
www /
html /
events /
node_modules /
mysql2 /
lib /
[ HOME SHELL ]
Name
Size
Permission
Action
auth_plugins
[ DIR ]
drwxrwxr-x
commands
[ DIR ]
drwxrwxr-x
constants
[ DIR ]
drwxrwxr-x
packets
[ DIR ]
drwxrwxr-x
parsers
[ DIR ]
drwxrwxr-x
auth_41.js
2.27
KB
-rw-rw-r--
compressed_protocol.js
4.42
KB
-rw-rw-r--
connection.js
28.25
KB
-rw-rw-r--
connection_config.js
9.18
KB
-rw-rw-r--
helpers.js
1.68
KB
-rw-rw-r--
packet_parser.js
5.89
KB
-rw-rw-r--
pool.js
6.18
KB
-rw-rw-r--
pool_cluster.js
6.57
KB
-rw-rw-r--
pool_config.js
860
B
-rw-rw-r--
pool_connection.js
1.83
KB
-rw-rw-r--
results_stream.js
948
B
-rw-rw-r--
server.js
850
B
-rw-rw-r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : auth_41.js
'use strict'; /* 4.1 authentication: (http://bazaar.launchpad.net/~mysql/mysql-server/5.5/view/head:/sql/password.c) SERVER: public_seed=create_random_string() send(public_seed) CLIENT: recv(public_seed) hash_stage1=sha1("password") hash_stage2=sha1(hash_stage1) reply=xor(hash_stage1, sha1(public_seed,hash_stage2) // this three steps are done in scramble() send(reply) SERVER: recv(reply) hash_stage1=xor(reply, sha1(public_seed,hash_stage2)) candidate_hash2=sha1(hash_stage1) check(candidate_hash2==hash_stage2) server stores sha1(sha1(password)) ( hash_stag2) */ const crypto = require('crypto'); function sha1(msg, msg1, msg2) { const hash = crypto.createHash('sha1'); hash.update(msg); if (msg1) { hash.update(msg1); } if (msg2) { hash.update(msg2); } return hash.digest(); } function xor(a, b) { const result = Buffer.allocUnsafe(a.length); for (let i = 0; i < a.length; i++) { result[i] = a[i] ^ b[i]; } return result; } exports.xor = xor; function token(password, scramble1, scramble2) { if (!password) { return Buffer.alloc(0); } const stage1 = sha1(password); return exports.calculateTokenFromPasswordSha(stage1, scramble1, scramble2); } exports.calculateTokenFromPasswordSha = function( passwordSha, scramble1, scramble2 ) { // we use AUTH 41 here, and we need only the bytes we just need. const authPluginData1 = scramble1.slice(0, 8); const authPluginData2 = scramble2.slice(0, 12); const stage2 = sha1(passwordSha); const stage3 = sha1(authPluginData1, authPluginData2, stage2); return xor(stage3, passwordSha); }; exports.calculateToken = token; exports.verifyToken = function(publicSeed1, publicSeed2, token, doubleSha) { const hashStage1 = xor(token, sha1(publicSeed1, publicSeed2, doubleSha)); const candidateHash2 = sha1(hashStage1); return candidateHash2.compare(doubleSha) === 0; }; exports.doubleSha1 = function(password) { return sha1(sha1(password)); }; function xorRotating(a, seed) { const result = Buffer.allocUnsafe(a.length); const seedLen = seed.length; for (let i = 0; i < a.length; i++) { result[i] = a[i] ^ seed[i % seedLen]; } return result; } exports.xorRotating = xorRotating;
Close