solusvm我没用过,我不知道程序层的验证是不是和网页层一样,不过应该是一样的。
solusvm的授权部分在system下面的clean.php里面。
这个文件包括两个函数,一个LicenseDecode,一个LicenseDecodePart。
那么自然,逆向他的算法即可。
因为怕dmca,我就不放解密了~
我放加密233333
<?php
$lgo = new LicenseSys();
class LicenseSys
{
private $_s_C_OOO_o01 = "ypO%_Y/y0#rY@KFi==@65%swYskCaCTk-52#*StP6HCsrwP!tB";
private $_s_C_OOO_o02 = "MM=co=_prb+;XyuHkHfNtyWy/y@/FzcofZ9HqjQ9?XxSb96a.d";
private $_s_C_OOO_o03 = "31m*R*Z!zmnDjdqovF8Wyq1-LZUAFohEKqn652kM.FGykJF7LT";
private $_s_C_OOO_o04 = "UF*zssdx8E9Q7+tzZ%*Y#j2=/FFZOekUr1BXB6OANpO1-ivAOm";
private $_s_C_OOO_o05 = 30;
private $_s_C_OOO_o06 = "+";
private $_s_C_OOO_o07 = 30;
private $_s_C_OOO_o08 = "(";
private $_s_C_OOO_o09 = "=============================== START KEY DATA =================================\n";
private $_s_C_OOO_o10 = "\n================================ END KEY DATA ==================================";
public function LicenseEncode($result)
{
$resulttraw = serialize($result);
$resulttraw = base64_encode($resulttraw);
$md5Hash = md5($resulttraw . $result['checkDate'] . $this->_s_C_OOO_o04);
$data = $md5Hash . $resulttraw;
$md5Hash = md5(strrev($data) . $this->_s_C_OOO_o03);
$data = $md5Hash . strrev($data);
$data = $this->LicenseEncodePart($data, $this->_s_C_OOO_o01);
$data = strrev($data);
$data = gzdeflate($data);
$data = convert_uuencode($data);
$data = strrev($data);
$data = $this->LicenseEncodePart($data, $this->_s_C_OOO_o02);
$data = strtoupper($data);
$data = wordwrap($data, 18, "+", true);
$data = wordwrap($data, 348, "(", true);
$data = wordwrap($data, 80, "\n", true);
$data = $this->_s_C_OOO_o09 . $data;
$data = $data . $this->_s_C_OOO_o10;
return $data;
}
private function LicenseEncodePart($string, $key)
{
$key = sha1($key);
$strLen = strlen($string);
$keyLen = strlen($key);
$i = 0;
while ($i < $strLen) {
$ordStr = ord(substr($string, $i, 1));
if ($j == $keyLen) {
$j = 0;
}
$ordKey = ord(substr($key, $j, 1));
$j++;
$hash .= strrev(base_convert(dechex($ordStr + $ordKey), 16, 36));
$i += 1;
}
return $hash;
}
}授权访问的位置是 /clients/modules/servers/licensing/slbs_verify_license.php
我给一个slbs_verify_license.php的范例:
<?php
require "cleaned.php";
if(isset($_POST["nodes"]) && isset($_POST["licensekey"]) && isset($_POST["domain"]) && isset($_POST["ip"]) && isset($_POST["dir"])){
$returnarray = array(
"hash" => '',
"hash2" => '',
"status" => 'Active',
"productid" => 20,
"checkDate" => date("Y-M-D"),
"companyname" => "NagakaTech",
"email" => "admin@loli.ren",
"configoptions" => "Slaves=100|Mini Slaves=100|Micro Slaves=100"
);
$data = $lgo->LicenseEncode($returnarray);
echo($data);
}else{
echo("No input");
}后记:
我使用的版本是1.20.03,我没有使用过solusvm。。。所以这也只是记录而已。。。
我只测试了前台网页的license正常~
测试LicenceKey:SVMSO-RKHHQ-NRH6G-WM1XH-7VYVH-49CXG-8MX1L-GFVRQ


原来的伪站, 套餐是 SolusVM Enterprise (NOC)
150.95.9.225 soluslabs.com
150.95.9.225 www.soluslabs.com
150.95.9.225 licensing1.soluslabs.net
150.95.9.225 licensing2.soluslabs.net
150.95.9.225 licensing3.soluslabs.net
150.95.9.225 licensing4.soluslabs.net
150.95.9.225 licensing5.soluslabs.net
150.95.9.225 licensing6.soluslabs.net
新的伪站, 套餐是 SolusVM Enterprise (RS)
150.95.9.221 soluslabs.com
150.95.9.221 www.soluslabs.com
150.95.9.221 licensing1.soluslabs.net
150.95.9.221 licensing2.soluslabs.net
150.95.9.221 licensing3.soluslabs.net
150.95.9.221 licensing4.soluslabs.net
150.95.9.221 licensing5.soluslabs.net
150.95.9.221 licensing6.soluslabs.netSolusVM:遇到锁后台该怎么办 Access Denied! Please Contact SolusVM Support
用非付费版本时,过段时间会出现Access Denied! Please Contact SolusVM Support的问题,解决方法如下:
SSH下设置定时任务,删除hosts:
crontab -e
输入
*/5 * * * * rm -f /usr/local/solusvm/data/.hosts