记一次solusvm的破解/(=-=)\

April 2, 2018 奇怪的代码

solusvm,好用不贵。但是,破解他似乎没多少人尝试。。。
那么,为什么不来玩一次呢?

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正常~

已有 11 条评论

  1. taoquan taoquan

    这个评论插件不错喔,叫什么

  2. 233 233

    /clients/modules/servers/licensing/

    这个路径好像不存在。。。。

    1. 这是伪站路径谢谢

      1. mjj mjj

        你好!请问直接打开伪站提示“No input”是哪里的问题

        1. 当然不能直接打开。。。

          1. mjj mjj

            前面回复了没显示评论(什么都没),以为没回复成功。。。多发了几条

          2. mjj mjj

            是因为面板添加许可证 状态无效,才直接访问伪站看看什么情况

            1. host做好没有 路径确认正确没有
              /clients/modules/servers/licensing/slbs_verify_license.php

              1. mjj mjj

                hosts 路径 都正确
                cleaned.php里应该是前面的代码吧,然后跟slbs_verify_license.php放同一路径的吗

                1. 如果实在搭建不了的话 买个伪授权吧。。

添加新评论