Ejemplo n.º 1
0
function jsCodeConfusion($content)
{
    $splStr = '';
    $i = '';
    $YesJs = '';
    $YesWord = '';
    $Sx = '';
    $s = '';
    $Wc = '';
    $Zc = '';
    $s1 = '';
    $AspCode = '';
    $SYHCount = '';
    $UpWord = '';
    $UpWordn = '';
    $tempS = '';
    $DimList = '';
    $YesFunction = '';
    //函数是否为真
    $StartFunction = '';
    //开始函数 目的是为了让function default 处理函数后面没有()   20150218
    $StartFunction = false;
    //默认开始函数为假
    //If nType="" Then  nType  = 0
    $yesJs = false;
    //是ASP 默认为假
    $YesFunction = false;
    //是函数 默认为假
    $YesWord = false;
    //是单词 默认为假
    $SYHCount = 0;
    //双引号默认为0
    $splStr = aspSplit($content, vbCrlf());
    //分割行
    $wcType = '';
    //输入文本类型,如 " 或 '
    $isAddToSYH = '';
    //是否累加双引号
    $beforeStr = '';
    $afterStr = '';
    $endCode = '';
    $nSYHCount = '';
    //循环分行
    foreach ($splStr as $key => $s) {
        //循环每个字符
        for ($i = 1; $i <= len($s); $i++) {
            $Sx = mid($s, $i, 1);
            //Asp开始
            if ($Sx == '<' && $Wc == '') {
                //输出文本必需为空 Wc为输出内容 如"<%" 排除 修改于20140412
                if (mid($s, $i + 1, 6) == 'script') {
                    $yesJs = true;
                    //ASP为真
                    $i = $i + 1;
                    //加1而不能加2,要不然<%function Test() 就截取不到
                    $Sx = mid($s, $i, 1);
                    $AspCode = $AspCode . '<';
                }
                //ASP结束
            } else {
                if ($Sx == '<' && mid($s, $i + 1, 8) == '/script>' && $Wc == '') {
                    //Wc为输出内容
                    $yesJs = false;
                    //ASP为假
                    $i = $i + 1;
                    //不能加2,只能加1,因为这里定义ASP为假,它会在下一次显示上面的 'ASP运行为假
                    $Sx = mid($s, $i, 8);
                    $AspCode = $AspCode . '/script>';
                }
            }
            if ($yesJs == true) {
                $beforeStr = right(replace(mid($s, 1, $i - 1), ' ', ''), 1);
                //上一个字符
                $afterStr = left(replace(mid($s, $i + 1, -1), ' ', ''), 1);
                //下一个字符
                $endCode = mid($s, $i + 1, -1);
                //当前字符往后面代码 一行
                //输入文本
                if ($sx == '"' || $sx == '\'' && $wcType == '' || $sx == $wcType || $wc != '') {
                    $isAddToSYH = true;
                    //这是一种简单的方法,等完善(20150914)
                    if ($isAddToSYH == true && $beforeStr == '\\') {
                        if (len($wc) >= 1) {
                            if (isStrTransferred($wc) == true) {
                                //为转义字符为真
                                //call echo(wc,isStrTransferred(wc))
                                $isAddToSYH = false;
                            }
                        } else {
                            $isAddToSYH = false;
                        }
                        //call echo(wc,isAddToSYH)
                    }
                    if ($wc == '') {
                        $wcType = $sx;
                    }
                    //双引号累加
                    if ($sx == $wcType && $isAddToSYH == true) {
                        $nSYHCount = $nSYHCount + 1;
                    }
                    //排除上一个字符为\这个转义字符(20150914)
                    //判断是否"在最后
                    if ($nSYHCount % 2 == 0 && $beforeStr != '\\') {
                        if (mid($s, $i + 1, 1) != $wcType) {
                            $wc = $wc . $sx;
                            $AspCode = $AspCode . $wc;
                            //行代码累加
                            //call echo("wc",wc)
                            $nSYHCount = 0;
                            $wc = '';
                            //清除
                            $wcType = '';
                        } else {
                            $wc = $wc . $sx;
                        }
                    } else {
                        $wc = $wc . $sx;
                    }
                } else {
                    if ($Sx == '\'') {
                        //注释则退出
                        $AspCode = $AspCode . mid($s, $i, -1);
                        break;
                        //字母
                    } else {
                        if (checkABC($Sx) == true || $Sx == '_' && $Zc != '' || $Zc != '') {
                            $Zc = $Zc . $Sx;
                            $s1 = lCase(mid($s . ' ', $i + 1, 1));
                            if (inStr('abcdefghijklmnopqrstuvwxyz0123456789', $s1) == 0 && ($s1 == '_' && $Zc != '')) {
                                //最简单判断
                                $tempS = mid($s, $i + 1, -1);
                                if (inStr('|function|sub|', '|' . lCase($Zc) . '|')) {
                                    //函数开始
                                    if ($YesFunction == false && lCase($UpWord) != 'end') {
                                        $YesFunction = true;
                                        $DimList = getFunDimName($tempS);
                                        $StartFunction = true;
                                    } else {
                                        if ($YesFunction == true && lCase($UpWord) == 'end') {
                                            //获得上一个单词
                                            $YesFunction = false;
                                        }
                                    }
                                } else {
                                    if ($YesFunction == true && lCase($Zc) == 'var') {
                                        $DimList = $DimList . ',' . getVarName($tempS);
                                    } else {
                                        if ($YesFunction == true) {
                                            //排除函数后面每一个名称
                                            if ($StartFunction == false) {
                                                $Zc = replaceDim2($DimList, $Zc);
                                            }
                                            $StartFunction = false;
                                        }
                                    }
                                }
                                $UpWord = $Zc;
                                //记住当前单词
                                $AspCode = $AspCode . $Zc;
                                $Zc = '';
                            }
                        } else {
                            $AspCode = $AspCode . $Sx;
                        }
                    }
                }
            } else {
                $AspCode = $AspCode . $Sx;
            }
            doEvents();
        }
        $AspCode = aspRTrim($AspCode);
        //去除右边空格
        $AspCode = $AspCode . vbCrlf();
        //Asp换行
        doEvents();
    }
    $jsCodeConfusion = $AspCode;
    return @$jsCodeConfusion;
}
Ejemplo n.º 2
0
function getScanFunctionNameList($content)
{
    $splStr = '';
    $i = '';
    $YesASP = '';
    $YesWord = '';
    $Sx = '';
    $s = '';
    $Wc = '';
    $Zc = '';
    $s1 = '';
    $AspCode = '';
    $SYHCount = '';
    $UpWord = '';
    $FunList = '';
    $s2 = '';
    $UpWordn = '';
    $tempS = '';
    $DimList = '';
    $YesFunction = '';
    //函数是否为真
    $YesASP = false;
    //是ASP 默认为假
    $YesFunction = false;
    //是函数 默认为假
    $YesWord = false;
    //是单词 默认为假
    $SYHCount = 0;
    //双引号默认为0
    $splStr = aspSplit($content, vbCrlf());
    //分割行
    //循环分行
    foreach ($splStr as $key => $s) {
        //循环每个字符
        for ($i = 1; $i <= len($s); $i++) {
            $Sx = mid($s, $i, 1);
            //Asp开始
            if ($Sx == '<' && $Wc == '') {
                //输出文本必需为空 Wc为输出内容 如"<%" 排除 修改于20140412
                if (mid($s, $i + 1, 1) == '%') {
                    $YesASP = true;
                    //ASP为真
                    $i = $i + 1;
                    //加1而不能加2,要不然<%function Test() 就截取不到
                }
                //ASP结束
            } else {
                if ($Sx == '%' && mid($s, $i + 1, 1) == '>' && $Wc == '') {
                    //Wc为输出内容
                    $YesASP = false;
                    //ASP为假
                    $i = $i + 1;
                    //不能加2,只能加1,因为这里定义ASP为假,它会在下一次显示上面的 'ASP运行为假
                }
            }
            if ($YesASP == true) {
                //输入文本
                if ($Sx == '"' || $Wc != '') {
                    //双引号累加
                    if ($Sx == '"') {
                        $SYHCount = $SYHCount + 1;
                    }
                    //判断是否"在最后
                    if ($SYHCount % 2 == 0) {
                        if (mid($s, $i + 1, 1) != '"') {
                            $Wc = $Wc . $Sx;
                            $s1 = right(replace(mid($s, 1, $i - len($Wc)), ' ', ''), 1);
                            //必需放在这里,要不会出错
                            if ($YesFunction == true) {
                                $AspCode = $AspCode . $Wc;
                            }
                            //函数代码累加
                            $SYHCount = 0;
                            $Wc = '';
                            //清除
                        } else {
                            $Wc = $Wc . $Sx;
                        }
                    } else {
                        $Wc = $Wc . $Sx;
                    }
                } else {
                    if ($Sx == '\'') {
                        //注释则退出
                        if ($YesFunction == true) {
                            $AspCode = $AspCode . mid($s, $i, -1);
                        }
                        break;
                        //字母
                    } else {
                        if (checkABC($Sx) == true || $Sx == '_' && $Zc != '' || $Zc != '') {
                            $Zc = $Zc . $Sx;
                            $s1 = lCase(mid($s . ' ', $i + 1, 1));
                            if (inStr('abcdefghijklmnopqrstuvwxyz0123456789', $s1) == 0 && ($s1 == '_' && $Zc != '')) {
                                //最简单判断
                                $tempS = mid($s, $i + 1, -1);
                                if (inStr('|function|sub|', '|' . lCase($Zc) . '|')) {
                                    //函数开始
                                    if ($YesFunction == false && lCase($UpWord) != 'end') {
                                        $YesFunction = true;
                                        $s2 = mid($s, $i + 2, -1);
                                        $s2 = mid($s2, 1, inStr($s2, '(') - 1);
                                        $FunList = $FunList . $s2 . vbCrlf();
                                    } else {
                                        if ($YesFunction == true && lCase($UpWord) == 'end') {
                                            //获得上一个单词
                                            $AspCode = $AspCode . $Zc . vbCrlf();
                                            $YesFunction = false;
                                        }
                                    }
                                }
                                $UpWord = $Zc;
                                //记住当前单词
                                if ($YesFunction == true) {
                                    $AspCode = $AspCode . $Zc;
                                }
                                $Zc = '';
                            }
                        }
                    }
                }
            }
            doEvents();
        }
    }
    $getScanFunctionNameList = $FunList;
    return @$getScanFunctionNameList;
}
function filterClient($clientVer, $ip, $iplong, $peerid)
{
    /*
     * Okay, check to see if we should allow person on the tracker
     */
    if (checkAzureus($clientVer)) {
        return true;
    }
    if (checkABC($clientVer)) {
        return true;
    }
    if (checkShadows($clientVer)) {
        return true;
    }
    if (checkBitTornado($clientVer)) {
        return true;
    }
    if (checkNewBitTornado($clientVer)) {
        return true;
    }
    if (checkBitSpirit($clientVer)) {
        return true;
    }
    if (checkTurboBT($clientVer)) {
        return true;
    }
    if (checkLibtorrent($clientVer)) {
        return true;
    }
    /*
     * This should always be checked LAST.
     */
    if (checkBitTorrent($clientVer)) {
        return true;
    }
    /*
     * Hm, let's see if they are even identifying themselves
     * This bans IPs if they don't!
     */
    checkforShyClients($clientVer, $ip, $iplong);
    showError("This tracker does not support your client version.");
    return false;
}