Odin HomeODIN logoODIN logo
TableJSON

Products

Cyble Vision
Cyber threat intelligence platform
Cyble Hawk
Threat detection and intelligence capabilities built for federal bodies
AmIBreached
Identify, Prioritize and Mitigate darkweb risks
The Cyber Express
Cyber Security News and Magazine

Search

HostsExposed BucketsExposed Files

Resources

API DocumentationPlatform GuideODIN CLIPostmanSDKs
GoPythonJavaScript

Contact Us

[email protected]

Legal

Terms of ServiceSecurity Disclosure PolicyPrivacy Policy
Leading Threat Intelligence Company
LinkedInTwitter XYoutube
ODIN logoODIN logo
LinkedInGithubMediumTwitter XYoutube
Launch YC: Odin - Attack surface monitoring and internet scanning for everyone

Made with ❤️ from Cupertino

© 2025 Cyble Inc. All Rights Reserved.

175.6.185.190

SummaryCVE DetailsRaw Data
20 Oct 2025, 06:32:54 UTC
{
  "scan_id": 1760802198,
  "ip": "175.6.185.190",
  "is_ipv4": true,
  "is_ipv6": false,
  "location": {
    "network": "175.6.184.0/21",
    "postal_code": "",
    "coordinates": {
      "latitude": "31.2222",
      "longitude": "121.4581"
    },
    "geo_point": "31.2222, 121.4581",
    "locale_code": "en",
    "continent": "Asia",
    "country_code": "CN",
    "country_name": "China",
    "city": "Shanghai"
  },
  "location_updated_at": "2025-10-20T00:42:54Z",
  "asn": {
    "number": "AS63835",
    "organization": "No.293,Wanbao Avenue",
    "country_code": ""
  },
  "asn_updated_at": "0001-01-01T00:00:00Z",
  "whois": {
    "network": "175.0.0.0/12",
    "organization": "CHINANET HUNAN PROVINCE NETWORK",
    "descr": "CHINANET HUNAN PROVINCE NETWORK,\nChina Telecom,\nNo.31,jingrong street,\nBeijing 100032",
    "_encoding": {
      "raw": "BASE64"
    }
  },
  "whois_updated_at": "2024-12-09T19:03:46Z",
  "tags": [
    {
      "name": "is_anonymous_proxy",
      "pretty_name": "Anonymous Proxy",
      "value": false,
      "last_updated_at": "2025-10-20T00:42:54Z"
    },
    {
      "name": "is_cdn",
      "pretty_name": "CDN",
      "value": false,
      "last_updated_at": "2025-10-20T04:19:16Z"
    },
    {
      "name": "is_satellite_provider",
      "pretty_name": "Satellite Provider",
      "value": false,
      "last_updated_at": "2025-10-20T00:42:54Z"
    }
  ],
  "services": [
    {
      "port": 80,
      "protocol": "tcp",
      "name": "http",
      "version": "",
      "product": "OpenResty web app server",
      "extra_info": "",
      "tunnel": "",
      "softwares": [
        {
          "uri": "cpe:/a:openresty:ngx_openresty",
          "part": "a",
          "vendor": "openresty",
          "product": "ngx_openresty",
          "version": "ANY",
          "language": "ANY",
          "edition": "ANY",
          "update": "ANY"
        }
      ],
      "modules": {
        "http": {
          "body": "\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<!-- id 变量需要和config.ini id -->\r\n\r\n\r\n\r\n\t\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<!doctype html>\r\n<html>\r\n<head>\r\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<meta name=\"renderer\" content=\"webkit\" />\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<script type=\"text/javascript\">\r\n    window._ResourceStringCache = window._ResourceStringCache || {};\r\n    \r\n    window._ResourceStringCache['date.format.time']='HH:mm';\r\n    window._ResourceStringCache['date.format.datetime.2y']='yy-MM-dd HH:mm';\r\n    window._ResourceStringCache['date.format.date.2y']='yy-MM-dd';\r\n    window._ResourceStringCache['date.format.date7y']='yy-mm';\r\n    window._ResourceStringCache['date.format.yearMonth']='yyyy-MM ';\r\n    window._ResourceStringCache['date.format.year']='null';\r\n</script>\r\n\r\n\r\n<script type=\"text/javascript\">\r\nvar Com_Parameter = {\r\n\tContextPath:\"/\",\r\n\tResPath:\"/resource/\",\r\n\tStyle:\"default\",\r\n\tJsFileList:new Array,\r\n\tStylePath:\"/resource/style/default/\",\r\n\tLang:\"zh-cn\",\r\n\tCurrentUserId:\"16d7bfaef7999a25bdb28d04f8caf2d3\",\r\n\tCache:1758655705339,\r\n\tFirstDayInWeek: parseInt('1') - 1,\r\n\tCalendarMinuteStep:parseInt('1'),\r\n\tSessionExpireTip:\"会话过期,请打开新页面重新登录后再提交本页面。\",\r\n\tServiceNotAvailTip:\"与服务器连接不通,请联系系统管理员或等会再试。\",\r\n\tDate_format:\"yyyy-MM-dd\",\r\n\tDateTime_format:\"yyyy-MM-dd HH:mm\",\r\n\tSoftDeleteEnableModules:\"\",\r\n\tComfirmDelete:\"一旦选择了删除,所选记录的相关数据都会被删除,无法恢复!您确认要执行此删除操作吗?\",\r\n\tComfirmSoftDelete:\"您确定要将所选记录放入回收站吗?<br>\",\r\n\tOptSuccessInfo:\"您的操作已成功!\",\r\n\tOptFailureInfo:\"操作失败!\",\r\n\tclientType:\"-1\",\r\n\tserverPrefix : \"http://oa.chasesun.cn\",\r\n\tsmallMaxSize : \"500\",\r\n\tisSysMouring : \"false\"\r\n};\r\n</script>\r\n<!-- 是否开启合并加载js模式  -->\r\n\r\n\t\r\n\t\r\n\t\t<script type=\"text/javascript\" src='/resource/js/domain.js?s_cache=1758655705339'></script>\r\n\t\t<script type=\"text/javascript\" src='/sys/ui/js/LUI.js?s_cache=1758655705339'></script>\r\n\t\t<script type=\"text/javascript\" src=\"/resource/js/common.js?s_cache=1758655705339\"></script>\r\n\t\t<script type=\"text/javascript\" src=\"/resource/js/sea.js?s_cache=1758655705339\"></script>\r\n\t\r\n\r\n<script type=\"text/javascript\">\r\nseajs.config({\r\n\tthemes : {\n    \"icon\": [\"sys/ui/extend/theme/default/style/icon.css\"],\n    \"iconfont\": [\"sys/ui/extend/theme/default/style/iconfont.css\"],\n    \"module\": [\"sys/ui/extend/theme/default/style/module.css\"],\n    \"form\": [\"sys/ui/extend/theme/default/style/form.css\"],\n    \"common\": [\"sys/ui/extend/theme/default/style/common.css\"],\n    \"portal\": [\"sys/ui/extend/theme/default/style/portal.css\"],\n    \"listview\": [\"sys/ui/extend/theme/default/style/listview.css\"],\n    \"sns\": [\"sys/ui/extend/theme/default/style/sns.css\"],\n    \"chart\": [\"sys/ui/extend/theme/default/style/chart.css\"],\n    \"treefont\": [\"sys/ui/extend/theme/default/style/treefont.css\"],\n    \"dialog\": [\"sys/ui/extend/theme/default/style/dialog.css\"],\n    \"widget\": [\"sys/ui/extend/theme/default/style/widget.css\"],\n    \"step\": [\"sys/ui/extend/theme/default/style/step.css\"],\n    \"zone\": [\"sys/ui/extend/theme/default/style/zone.css\"],\n    \"profile\": [\"sys/ui/extend/theme/default/style/profile.css\"],\n    \"calendar\": [\"sys/ui/extend/theme/default/style/calendar.css\"],\n    \"prompt\": [\"sys/ui/extend/theme/default/style/listview.css\"]\n},\r\n\tpaths: {\r\n\t\t'lui': 'sys/ui/js'\r\n\t},\r\n\talias: {\r\n\t\t'lui/jquery': 'resource/js/jquery',\r\n\t\t'lui/jquery-ui': 'resource/js/jquery-ui/jquery.ui'\r\n\t},\r\n\tpreload: ['/resource/js/plugin-theme.js','/resource/js/plugin-lang.js'],\r\n\tdebug: true,\r\n \tbase: '',\r\n \tenv : {\r\n \t \tcontextPath: '',\r\n \t\tnow : '2025-10-12 04:03',\r\n \t\tpageMaxWidth:'1200px',\r\n \t\tpattern : {\r\n \t\t\tdate : 'yyyy-MM-dd', \r\n \t\t\tdatetime : 'yyyy-MM-dd HH:mm',\r\n \t\t\ttime : 'HH:mm'\r\n \t\t},\r\n \t\tlocale : \"zh-cn\",\r\n \t\tconfig : {},\r\n \t\tcache : 1758655705339\r\n \t}\r\n});\r\n</script>\r\n\r\n<script type=\"text/javascript\">\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nNew_Com_RegisterFile(\"validation.jsp\", \"js/\");\r\n$KMSSValidation_Lang = {\r\n\t\"required\"  : \"{name} 不能为空\",\r\n\t\"number\"   : \"{name} 必须为有效数字类型.\",\r\n\t\"date\"      : \"{name} 不是日期类型.\",\r\n\t\"email\"     : \"{name} 必须为标准的邮件格式.\",\r\n\t\"url\"     : \"{name} 必须为有效的url地址.\",\r\n\t\"digits\"     : \"{name} 必须为整数.\",\r\n\t\"currency-dollar\"     : \"{name} 必须为有效的货币格式,例如:100.00.\",\r\n\t\"alphanum\"     : \"{name} 必须为英文或数字.\",\r\n\t\"alpha\"     : \"{name} 必须为英文.\",\r\n\t\"maxLength\" : \"{name} 超出 {maxLength} 个英文字符限制\",\r\n\t\"range\" : \"{name} 没有在区间 {min} 和 {max}之间.\",\r\n\t\"min\" : \"{name} 必须大于或等于 {num}.\",\r\n\t\"max\" : \"{name} 必须小于或等于 {num}.\",\r\n\t\"scaleLength\" : \"{name} 小数位必须小于等于 {num}.\",\r\n\t\"before\" : \"{name} 不能晚于当前时间.\",\r\n\t\"after\"  : \"{name} 不能早于当前时间.\",\r\n\t\"__datetime\"  : \"{name} 不是日期时间类型.\",\r\n\t\"__date\"      : \"{name} 不是日期类型.\",\r\n\t\"__time\"      : \"{name} 不是时间类型.\",\r\n\t\"senWordsValidator\" : \"{name}中含有敏感词{senWords},请检查\"\r\n}\r\n\t\r\n\r\nNew_Com_RegisterFile(\"validator.jsp\", \"js/\");\r\nfunction validateTwoFields(form) {\r\n                var bValid = true;\r\n                var focusField = null;\r\n                var i = 0;\r\n                var fields = new Array();\r\n                var formName = form.getAttributeNode(\"name\");\r\n                oTwoFields = eval('new ' + formName.value + '_twofields()');\r\n                \r\n                for (x in oTwoFields) {\r\n                    var field = form[oTwoFields[x][0]];\r\n                    var secondField = form[oTwoFields[x][2](\"secondProperty\")];\r\n                    \r\n                    if (field.type == 'text' ||\r\n                        field.type == 'textarea' ||\r\n                        field.type == 'select-one' ||\r\n                        field.type == 'radio' ||\r\n                        field.type == 'password') {\r\n                    \r\n                        var value;\r\n                        var secondValue;\r\n                        \r\n                        // get field's value\r\n                        if (field.type == \"select-one\") {\r\n                            var si = field.selectedIndex;\r\n                            value = field.options[si].value;\r\n                            secondValue = secondField.options[si].value;\r\n                        } else {\r\n                            value = field.value;\r\n                            secondValue = secondField.value;\r\n                        }\r\n                        \r\n                        if (value != secondValue) {\r\n                            if (i == 0) {\r\n                                focusField = field;\r\n                            }\r\n                            fields[i++] = oTwoFields[x][1];\r\n                            bValid = false;\r\n                        }\r\n                    }\r\n                }\r\n            \r\n                if (fields.length > 0) {\r\n                   focusField.focus();\r\n                   alert(fields.join('\\n'));\r\n                }\r\n            return bValid;\r\n        }\r\n\r\n    /*$RCSfile: validateMinLength.js,v $ $Revision: 1.11 $ $Date: 2004/03/28 16:53:21 $ */\r\n    /**\r\n    * A field is considered valid if greater than the specified minimum.\r\n    * Fields are not checked if they are disabled.\r\n    * <p>\r\n    * <strong>Caution:</strong> Using <code>validateMinLength</code> on a password field in a \r\n    *  login page gives unnecessary information away to hackers. While it only slightly\r\n    *  weakens security, we suggest using it only when modifying a password.</p>\r\n    * @param form The form validation is taking place on.\r\n    */\r\n    function validateMinLength(form) {\r\n        var isValid = true;\r\n        var focusField = null;\r\n        var i = 0;\r\n        var fields = new Array();\r\n        var formName = form.getAttributeNode(\"name\");\r\n\r\n\r\n        oMinLength = eval('new ' + formName.value + '_minlength()');\r\n\r\n        for (x in oMinLength) {\r\n            var field = form[oMinLength[x][0]];\r\n\r\n            if ((field.type == 'hidden' ||\r\n                field.type == 'text' ||\r\n                field.type == 'password' ||\r\n                field.type == 'textarea') &&\r\n                field.disabled == false) {\r\n\r\n                var iMin = parseInt(oMinLength[x][2](\"minlength\"));\r\n                if ((trim(field.value).length > 0) && (field.value.length < iMin)) {\r\n                    if (i == 0) {\r\n                        focusField = field;\r\n                    }\r\n                    fields[i++] = oMinLength[x][1];\r\n                    isValid = false;\r\n                }\r\n            }\r\n        }\r\n        if (fields.length > 0) {\r\n            try{\r\n                focusField.focus();\r\n            }catch(e){}\r\n           alert(fields.join('\\n'));\r\n        }\r\n        return isValid;\r\n    }\r\n\r\n    /*$RCSfile: validateUtilities.js,v $ $Revision: 1.2 $ $Date: 2004/03/28 16:53:21 $ */\r\n\r\n  /**\r\n  * This is a place holder for common utilities used across the javascript validation\r\n  *\r\n  **/\r\n\r\n\r\n   /*$RCSfile: validateFloatRange.js,v $ $Revision: 1.9 $ $Date: 2004/03/28 16:53:21 $ */\r\n    /**\r\n    * Check to see if fields are in a valid float range.\r\n    * Fields are not checked if they are disabled.\r\n    * <p>\r\n    * @param form The form validation is taking place on.\r\n    */\r\n    function validateFloatRange(form) {\r\n        var isValid = true;\r\n        var focusField = null;\r\n        var i = 0;\r\n        var fields = new Array();\r\n        var formName = form.getAttributeNode(\"name\"); \r\n\r\n        oRange = eval('new ' + formName.value + '_floatRange()');\r\n        for (x in oRange) {\r\n            var field = form[oRange[x][0]];\r\n            \r\n            if ((field.type == 'hidden' ||\r\n                field.type == 'text' || field.type == 'textarea') &&\r\n                (field.value.length > 0)  &&\r\n                 field.disabled == false) {\r\n        \r\n                var fMin = parseFloat(oRange[x][2](\"min\"));\r\n                var fMax = parseFloat(oRange[x][2](\"max\"));\r\n                var fValue = parseFloat(field.value);\r\n                if (!(fValue >= fMin && fValue <= fMax)) {\r\n                    if (i == 0) {\r\n                        focusField = field;\r\n                    }\r\n                    fields[i++] = oRange[x][1];\r\n                    isValid = false;\r\n                }\r\n            }\r\n        }\r\n        if (fields.length > 0) {\r\n             try{\r\n                focusField.focus();\r\n            }catch(e){}\r\n            alert(fields.join('\\n'));\r\n        }\r\n        return isValid;\r\n    }\r\n\r\n\r\n    /*$RCSfile: validateIntRange.js,v $ $Revision: 1.10 $ $Date: 2004/03/28 16:53:21 $ */\r\n    /**\r\n    * Check to see if fields is in a valid integer range.\r\n    * Fields are not checked if they are disabled.\r\n    * <p>\r\n    * @param form The form validation is taking place on.\r\n    */\r\n    function validateIntRange(form) {\r\n        var isValid = true;\r\n        var focusField = null;\r\n        var i = 0;\r\n        var fields = new Array();\r\n        var formName = form.getAttributeNode(\"name\"); \r\n\r\n        oRange = eval('new ' + formName.value + '_intRange()');        \r\n        for (x in oRange) {\r\n            var field = form[oRange[x][0]];\r\n            if (field.disabled == false)  {\r\n                var value = '';\r\n                if (field.type == 'hidden' ||\r\n                    field.type == 'text' || field.type == 'textarea' ||\r\n                    field.type == 'radio' ) {\r\n                    value = field.value;\r\n                }\r\n                if (field.type == 'select-one') {\r\n                    var si = field.selectedIndex;\r\n                    if (si >= 0) {\r\n                        value = field.options[si].value;\r\n                    }\r\n                }\r\n                if (value.length > 0) {\r\n                    var iMin = parseInt(oRange[x][2](\"min\"));\r\n                    var iMax = parseInt(oRange[x][2](\"max\"));\r\n                    var iValue = parseInt(value);\r\n                    if (!(iValue >= iMin && iValue <= iMax)) {\r\n                        if (i == 0) {\r\n                            focusField = field;\r\n                        }\r\n                        fields[i++] = oRange[x][1];\r\n                        isValid = false;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        if (fields.length > 0) {\r\n             try{\r\n                focusField.focus();\r\n            }catch(e){}\r\n            alert(fields.join('\\n'));\r\n        }\r\n        return isValid;\r\n    }\r\n\r\n\r\n    /*$RCSfile: validateInteger.js,v $ $Revision: 1.9 $ $Date: 2004/03/28 16:53:21 $ */\r\n    /**\r\n    * Check to see if fields are a valid integer.\r\n    * Fields are not checked if they are disabled.\r\n    * <p>\r\n    * @param form The form validation is taking place on.\r\n    * 功能:校验是否是整形的输入\r\n    */\r\n\r\nfunction validateInteger(field) {\r\n\tvar bValid = true;\r\n    if (field.type == 'text' ||\r\n    \tfield.type == 'textarea' ||\r\n\t\tfield.type == 'select-one' ||\r\n\t\tfield.type == 'radio') {\r\n\t\tvar value = '';\r\n\t\tif (field.type == \"select-one\") {\r\n\t\t\tvar si = field.selectedIndex;\r\n\t\t    if (si >= 0) {\r\n\t\t\t    value = field.options[si].value;\r\n\t\t    }\r\n\t\t} else {\r\n\t\t\tvalue = field.value;\r\n\t\t}\r\n\t\tif (value.length > 0) {\r\n\t\t\tif (!isAllDigits(value)) {\r\n\t\t\t\tbValid = false;\r\n\t\t\t\tfield.focus();\t\t\t\t\t        \r\n\t\t\t} else {\r\n\t\t\t\tvar iValue = parseInt(value);\r\n\t\t\t\tif (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) {\r\n\t\t\t\t\tif (i == 0) {\r\n\t\t\t\t\t\tfocusField = field;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbValid = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn bValid;\r\n}\r\n\r\n    function isAllDigits(argvalue) {\r\n        argvalue = argvalue.toString();\r\n        var validChars = \"0123456789\";\r\n        var startFrom = 0;\r\n        if (argvalue.substring(0, 2) == \"0x\") {\r\n           validChars = \"0123456789abcdefABCDEF\";\r\n           startFrom = 2;\r\n        } else if (argvalue.charAt(0) == \"0\") {\r\n           validChars = \"01234567\";\r\n           startFrom = 1;\r\n        } else if (argvalue.charAt(0) == \"-\") {\r\n            startFrom = 1;\r\n        }\r\n\r\n        for (var n = startFrom; n < argvalue.length; n++) {\r\n            if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false;\r\n        }\r\n        return true;\r\n    }\r\n\r\n\r\n    /*$RCSfile: validateMask.js,v $ $Revision: 1.10 $ $Date: 2004/03/28 16:53:21 $ */\r\n    /**\r\n    * Check to see if fields are a valid using a regular expression.\r\n    * Fields are not checked if they are disabled.\r\n    * <p>\r\n    * @param form The form validation is taking place on.\r\n    */\r\n    function validateMask(form) {\r\n        var isValid = true;\r\n        var focusField = null;\r\n        var i = 0;\r\n        var fields = new Array();\r\n        var formName = form.getAttributeNode(\"name\"); \r\n\r\n        oMasked = eval('new ' + formName.value + '_mask()');      \r\n        for (x in oMasked) {\r\n            var field = form[oMasked[x][0]];\r\n\r\n            if ((field.type == 'hidden' ||\r\n                field.type == 'text' ||\r\n                 field.type == 'textarea' ||\r\n                 field.type == 'file') &&\r\n                 (field.value.length > 0) &&\r\n                 field.disabled == false) {\r\n\r\n                if (!matchPattern(field.value, oMasked[x][2](\"mask\"))) {\r\n                    if (i == 0) {\r\n                        focusField = field;\r\n                    }\r\n                    fields[i++] = oMasked[x][1];\r\n                    isValid = false;\r\n                }\r\n            }\r\n        }\r\n\r\n        if (fields.length > 0) {\r\n            try{\r\n                focusField.focus();\r\n            }catch(e){}\r\n           alert(fields.join('\\n'));\r\n        }\r\n        return isValid;\r\n    }\r\n\r\n    function matchPattern(value, mask) {\r\n       return mask.exec(value);\r\n    }\r\n\r\n\r\n   /*$RCSfile: validateDate.js,v $ $Revision: 1.10 $ $Date: 2004/03/28 16:53:21 $ */\r\n    /**\r\n    * Check to see if fields are a valid date.\r\n    * Fields are not checked if they are disabled.\r\n    * <p>\r\n    * @param form The form validation is taking place on.\r\n    */\r\n    function validateDate(form) {\r\n       var bValid = true;\r\n       var focusField = null;\r\n       var i = 0;\r\n       var fields = new Array();\r\n       var formName = form.getAttributeNode(\"name\"); \r\n\r\n       oDate = eval('new ' + formName.value + '_DateValidations()');\r\n\r\n       for (x in oDate) {\r\n           var field = form[oDate[x][0]];\r\n           var value = field.value;\r\n           var datePattern = oDate[x][2](\"datePatternStrict\");\r\n           // try loose pattern\r\n           if (datePattern == null)\r\n               datePattern = oDate[x][2](\"datePattern\");\r\n           if ((field.type == 'hidden' ||\r\n                field.type == 'text' ||\r\n                field.type == 'textarea') &&\r\n               (value.length > 0) && (datePattern.length > 0) &&\r\n                field.disabled == false) {\r\n                 var MONTH = \"MM\";\r\n                 var DAY = \"dd\";\r\n                 var YEAR = \"yyyy\";\r\n                 var orderMonth = datePattern.indexOf(MONTH);\r\n                 var orderDay = datePattern.indexOf(DAY);\r\n                 var orderYear = datePattern.indexOf(YEAR);\r\n                 if ((orderDay < orderYear && orderDay > orderMonth)) {\r\n                     var iDelim1 = orderMonth + MONTH.length;\r\n                     var iDelim2 = orderDay + DAY.length;\r\n                     var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);\r\n                     var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);\r\n                     if (iDelim1 == orderDay && iDelim2 == orderYear) {\r\n                        dateRegexp = new RegExp(\"^(\\\\d{2})(\\\\d{2})(\\\\d{4})$\");\r\n                     } else if (iDelim1 == orderDay) {\r\n                        dateRegexp = new RegExp(\"^(\\\\d{2})(\\\\d{2})[\" + delim2 + \"](\\\\d{4})$\");\r\n                     } else if (iDelim2 == orderYear) {\r\n                        dateRegexp = new RegExp(\"^(\\\\d{2})[\" + delim1 + \"](\\\\d{2})(\\\\d{4})$\");\r\n                     } else {\r\n                        dateRegexp = new RegExp(\"^(\\\\d{2})[\" + delim1 + \"](\\\\d{2})[\" + delim2 + \"](\\\\d{4})$\");\r\n                     }\r\n                     var matched = dateRegexp.exec(value);\r\n                     if(matched != null) {\r\n                        if (!isValidDate(matched[2], matched[1], matched[3])) {\r\n                           if (i == 0) {\r\n                               focusField = field;\r\n                           }\r\n                           fields[i++] = oDate[x][1];\r\n                           bValid =  false;\r\n                        }\r\n                     } else {\r\n                        if (i == 0) {\r\n                            focusField = field;\r\n                        }\r\n                        fields[i++] = oDate[x][1];\r\n                        bValid =  false;\r\n                     }\r\n                 } else if ((orderMonth < orderYear && orderMonth > orderDay)) {\r\n                     var iDelim1 = orderDay + DAY.length;\r\n                     var iDelim2 = orderMonth + MONTH.length;\r\n                     var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);\r\n                     var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);\r\n                     if (iDelim1 == orderMonth && iDelim2 == orderYear) {\r\n                         dateRegexp = new RegExp(\"^(\\\\d{2})(\\\\d{2})(\\\\d{4})$\");\r\n                     } else if (iDelim1 == orderMonth) {\r\n                         dateRegexp = new RegExp(\"^(\\\\d{2})(\\\\d{2})[\" + delim2 + \"](\\\\d{4})$\");\r\n                     } else if (iDelim2 == orderYear) {\r\n                         dateRegexp = new RegExp(\"^(\\\\d{2})[\" + delim1 + \"](\\\\d{2})(\\\\d{4})$\");\r\n                     } else {\r\n                         dateRegexp = new RegExp(\"^(\\\\d{2})[\" + delim1 + \"](\\\\d{2})[\" + delim2 + \"](\\\\d{4})$\");\r\n                     }\r\n                     var matched = dateRegexp.exec(value);\r\n                     if(matched != null) {\r\n                         if (!isValidDate(matched[1], matched[2], matched[3])) {\r\n                             if (i == 0) {\r\n                         focusField = field;\r\n                             }\r\n                             fields[i++] = oDate[x][1];\r\n                             bValid =  false;\r\n                          }\r\n                     } else {\r\n                         if (i == 0) {\r\n                             focusField = field;\r\n                         }\r\n                         fields[i++] = oDate[x][1];\r\n                         bValid =  false;\r\n                     }\r\n                 } else if ((orderMonth > orderYear && orderMonth < orderDay)) {\r\n                     var iDelim1 = orderYear + YEAR.length;\r\n                     var iDelim2 = orderMonth + MONTH.length;\r\n                     var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);\r\n                     var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);\r\n                     if (iDelim1 == orderMonth && iDelim2 == orderDay) {\r\n                         dateRegexp = new RegExp(\"^(\\\\d{4})(\\\\d{2})(\\\\d{2})$\");\r\n                     } else if (iDelim1 == orderMonth) {\r\n                         dateRegexp = new RegExp(\"^(\\\\d{4})(\\\\d{2})[\" + delim2 + \"](\\\\d{2})$\");\r\n                     } else if (iDelim2 == orderDay) {\r\n                         dateRegexp = new RegExp(\"^(\\\\d{4})[\" + delim1 + \"](\\\\d{2})(\\\\d{2})$\");\r\n                     } else {\r\n                         dateRegexp = new RegExp(\"^(\\\\d{4})[\" + delim1 + \"](\\\\d{2})[\" + delim2 + \"](\\\\d{2})$\");\r\n                     }\r\n                     var matched = dateRegexp.exec(value);\r\n                     if(matched != null) {\r\n                         if (!isValidDate(matched[3], matched[2], matched[1])) {\r\n                             if (i == 0) {\r\n                                 focusField = field;\r\n                             }\r\n                             fields[i++] = oDate[x][1];\r\n                             bValid =  false;\r\n                         }\r\n                     } else {\r\n                          if (i == 0) {\r\n                              focusField = field;\r\n                          }\r\n                          fields[i++] = oDate[x][1];\r\n                          bValid =  false;\r\n                     }\r\n                 } else {\r\n                     if (i == 0) {\r\n                         focusField = field;\r\n                     }\r\n                     fields[i++] = oDate[x][1];\r\n                     bValid =  false;\r\n                 }\r\n          }\r\n       }\r\n       if (fields.length > 0) {\r\n           try{\r\n                focusField.focus();\r\n            }catch(e){}\r\n          alert(fields.join('\\n'));\r\n       }\r\n       return bValid;\r\n    }\r\n    \r\n    function isValidDate(day, month, year) {\r\n        if (month < 1 || month > 12) {\r\n            return false;\r\n        }\r\n        if (day < 1 || day > 31) {\r\n            return false;\r\n        }\r\n        if ((month == 4 || month == 6 || month == 9 || month == 11) &&\r\n            (day == 31)) {\r\n            return false;\r\n        }\r\n        if (month == 2) {\r\n            var leap = (year % 4 == 0 &&\r\n               (year % 100 != 0 || year % 400 == 0));\r\n            if (day>29 || (day == 29 && !leap)) {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n\r\n\r\n    /*$RCSfile: validateFloat.js,v $ $Revision: 1.11 $ $Date: 2004/03/28 16:53:21 $ */\r\n    /**\r\n    * Check to see if fields are a valid float.\r\n    * Fields are not checked if they are disabled.\r\n    * <p>\r\n    * @param form The form validation is taking place on.\r\n    */\r\n    function validateFloat(form) {\r\n        var bValid = true;\r\n        var focusField = null;\r\n        var i = 0;\r\n        var fields = new Array();\r\n         var formName = form.getAttributeNode(\"name\");\r\n\r\n        oFloat = eval('new ' + formName.value + '_FloatValidations()');\r\n        for (x in oFloat) {\r\n            var field = form[oFloat[x][0]];\r\n            \r\n            if ((field.type == 'hidden' ||\r\n                field.type == 'text' ||\r\n                field.type == 'textarea' ||\r\n                field.type == 'select-one' ||\r\n                field.type == 'radio') &&\r\n                field.disabled == false) {\r\n        \r\n                var value = '';\r\n                // get field's value\r\n                if (field.type == \"select-one\") {\r\n                    var si = field.selectedIndex;\r\n                    if (si >= 0) {\r\n                        value = field.options[si].value;\r\n                    }\r\n                } else {\r\n                    value = field.value;\r\n                }\r\n        \r\n                if (value.length > 0) {\r\n                    // remove '.' before checking digits\r\n                    var tempArray = value.split('.');\r\n                    //Strip off leading '0'\r\n                    var zeroIndex = 0;\r\n                    var joinedString= tempArray.join('');\r\n                    while (joinedString.charAt(zeroIndex) == '0') {\r\n                        zeroIndex++;\r\n                    }\r\n                    var noZeroString = joinedString.substring(zeroIndex,joinedString.length);\r\n\r\n                    if (!isAllDigits(noZeroString)) {\r\n                        bValid = false;\r\n                        if (i == 0) {\r\n                            focusField = field;\r\n                        }\r\n                        fields[i++] = oFloat[x][1];\r\n\r\n                    } else {\r\n                    var iValue = parseFloat(value);\r\n                    if (isNaN(iValue)) {\r\n                        if (i == 0) {\r\n                            focusField = field;\r\n                        }\r\n                        fields[i++] = oFloat[x][1];\r\n                        bValid = false;\r\n                    }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        if (fields.length > 0) {\r\n            try{\r\n                focusField.focus();\r\n            }catch(e){}\r\n           alert(fields.join('\\n'));\r\n        }\r\n        return bValid;\r\n    }\r\n\r\n\r\n    /*$RCSfile: validateCreditCard.js,v $ $Revision: 1.8 $ $Date: 2004/03/28 16:53:21 $ */\r\n    /**\r\n    * Check to see if fields are a valid creditcard number based on Luhn checksum.\r\n    * Fields are not checked if they are disabled.\r\n    * <p>\r\n    * @param form The form validation is taking place on.\r\n    */\r\n    function validateCreditCard(form) {\r\n        var bValid = true;\r\n        var focusField = null;\r\n        var i = 0;\r\n        var fields = new Array();\r\n        var formName = form.getAttributeNode(\"name\");\r\n\r\n        oCreditCard = eval('new ' + formName.value + '_creditCard()');\r\n\r\n        for (x in oCreditCard) {\r\n            if ((form[oCreditCard[x][0]].type == 'text' ||\r\n                 form[oCreditCard[x][0]].type == 'textarea') &&\r\n                (form[oCreditCard[x][0]].value.length > 0)  &&\r\n                 form[oCreditCard[x][0]].disabled == false) {\r\n                if (!luhnCheck(form[oCreditCard[x][0]].value)) {\r\n                    if (i == 0) {\r\n                        focusField = form[oCreditCard[x][0]];\r\n                    }\r\n                    fields[i++] = oCreditCard[x][1];\r\n                    bValid = false;\r\n                }\r\n            }\r\n        }\r\n        if (fields.length > 0) {\r\n             try{\r\n                focusField.focus();\r\n            }catch(e){}\r\n            alert(fields.join('\\n'));\r\n        }\r\n        return bValid;\r\n    }\r\n\r\n    /**\r\n     * Checks whether a given credit card number has a valid Luhn checksum.\r\n     * This allows you to spot most randomly made-up or garbled credit card numbers immediately.\r\n     * Reference: http://www.speech.cs.cmu.edu/~sburke/pub/luhn_lib.html\r\n     */\r\n    function luhnCheck(cardNumber) {\r\n        if (isLuhnNum(cardNumber)) {\r\n            var no_digit = cardNumber.length;\r\n            var oddoeven = no_digit & 1;\r\n            var sum = 0;\r\n            for (var count = 0; count < no_digit; count++) {\r\n                var digit = parseInt(cardNumber.charAt(count));\r\n                if (!((count & 1) ^ oddoeven)) {\r\n                    digit *= 2;\r\n                    if (digit > 9) digit -= 9;\r\n                };\r\n                sum += digit;\r\n            };\r\n            if (sum == 0) return false;\r\n            if (sum % 10 == 0) return true;\r\n        };\r\n        return false;\r\n    }\r\n\r\n    function isLuhnNum(argvalue) {\r\n        argvalue = argvalue.toString();\r\n        if (argvalue.length == 0) {\r\n            return false;\r\n        }\r\n        for (var n = 0; n < argvalue.length; n++) {\r\n            if ((argvalue.substring(n, n+1) < \"0\") ||\r\n                (argvalue.substring(n,n+1) > \"9\")) {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n\r\n\r\n    /*$RCSfile: validateShort.js,v $ $Revision: 1.9 $ $Date: 2004/03/28 16:53:21 $ */\r\n    /**\r\n    *  Check to see if fields are a valid short.\r\n    * Fields are not checked if they are disabled.\r\n    * <p>\r\n    * @param form The form validation is taking place on.\r\n    */\r\n    function validateShort(form) {\r\n        var bValid = true;\r\n        var focusField = null;\r\n        var i = 0;\r\n        var fields = new Array();\r\n        var formName = form.getAttributeNode(\"name\");\r\n\r\n        oShort = eval('new ' + formName.value + '_ShortValidations()');\r\n\r\n        for (x in oShort) {\r\n            var field = form[oShort[x][0]];\r\n\r\n            if ((field.type == 'hidden' ||\r\n                field.type == 'text' ||\r\n                field.type == 'textarea' ||\r\n                field.type == 'select-one' ||\r\n                field.type == 'radio')  &&\r\n                field.disabled == false) {\r\n\r\n                var value = '';\r\n                // get field's value\r\n                if (field.type == \"select-one\") {\r\n                    var si = field.selectedIndex;\r\n                    if (si >= 0) {\r\n                        value = field.options[si].value;\r\n                    }\r\n                } else {\r\n                    value = field.value;\r\n                }\r\n\r\n                if (value.length > 0) {\r\n                    if (!isAllDigits(value)) {\r\n                        bValid = false;\r\n                        if (i == 0) {\r\n                            focusField = field;\r\n                        }\r\n                        fields[i++] = oShort[x][1];\r\n\r\n                    } else {\r\n\r\n                        var iValue = parseInt(value);\r\n                        if (isNaN(iValue) || !(iValue >= -32768 && iValue <= 32767)) {\r\n                            if (i == 0) {\r\n                                focusField = field;\r\n                            }\r\n                            fields[i++] = oShort[x][1];\r\n                            bValid = false;\r\n                        }\r\n                   }\r\n               }\r\n            }\r\n        }\r\n        if (fields.length > 0) {\r\n            try{\r\n                focusField.focus();\r\n            }catch(e){}\r\n           alert(fields.join('\\n'));\r\n        }\r\n        return bValid;\r\n    }\r\n\r\n\r\n    /*$RCSfile: validateMaxLength.js,v $ $Revision: 1.10 $ $Date: 2004/03/28 16:53:21 $ */\r\n    /**\r\n    * A field is considered valid if less than the specified maximum.\r\n    * Fields are not checked if they are disabled.\r\n    * <p>\r\n    * <strong>Caution:</strong> Using <code>validateMaxLength</code> on a password field in a \r\n    *  login page gives unnecessary information away to hackers. While it only slightly\r\n    *  weakens security, we suggest using it only when modifying a password.</p>\r\n    * @param form The form validation is taking place on.\r\n    */\r\n    function validateMaxLength(form) {\r\n        var isValid = true;\r\n        var focusField = null;\r\n        var i = 0;\r\n        var fields = new Array();\r\n        var formName = form.getAttributeNode(\"name\"); \r\n\r\n        oMaxLength = eval('new ' + formName.value + '_maxlength()');        \r\n        for (x in oMaxLength) {\r\n            var field = form[oMaxLength[x][0]];\r\n\r\n            if ((field.type == 'hidden' ||\r\n                field.type == 'text' ||\r\n                field.type == 'password' ||\r\n                field.type == 'textarea') &&\r\n                field.disabled == false) {\r\n\r\n                var iMax = parseInt(oMaxLength[x][2](\"maxlength\"));\r\n                var fieldValue = encodeURIComponent(field.value);\r\n                fieldValue = fieldValue.replace(/%\\w\\w/gi, '1');\r\n                if (fieldValue.length > iMax) {\r\n                    if (i == 0) {\r\n                        focusField = field;\r\n                    }\r\n                    fields[i++] = oMaxLength[x][1];\r\n                    isValid = false;\r\n                }\r\n            }\r\n        }\r\n        if (fields.length > 0) {\r\n            try{\r\n                focusField.focus();\r\n            }catch(e){}\r\n           alert(fields.join('\\n'));\r\n        }\r\n        return isValid;\r\n    }\r\n\r\n\r\n   /*$RCSfile: validateEmail.js,v $ $Revision: 1.9 $ $Date: 2004/03/28 16:53:21 $ */\r\n    /**\r\n    * Check to see if fields are a valid email address.\r\n    * Fields are not checked if they are disabled.\r\n    * <p>\r\n    * @param form The form validation is taking place on.\r\n    */\r\n    function validateEmail(form) {\r\n        var bValid = true;\r\n        var focusField = null;\r\n        var i = 0;\r\n        var fields = new Array();\r\n        var formName = form.getAttributeNode(\"name\");\r\n\r\n\r\n        oEmail = eval('new ' + formName.value + '_email()');\r\n\r\n        for (x in oEmail) {\r\n            var field = form[oEmail[x][0]];\r\n            if ((field.type == 'hidden' || \r\n                 field.type == 'text' ||\r\n                 field.type == 'textarea') &&\r\n                (field.value.length > 0) &&\r\n                field.disabled == false) {\r\n                if (!checkEmail(field.value)) {\r\n                    if (i == 0) {\r\n                        focusField = field;\r\n                    }\r\n                    fields[i++] = oEmail[x][1];\r\n                    bValid = false;\r\n                }\r\n            }\r\n        }\r\n        if (fields.length > 0) {\r\n             try{\r\n                focusField.focus();\r\n            }catch(e){}\r\n            alert(fields.join('\\n'));\r\n        }\r\n        return bValid;\r\n    }\r\n\r\n    /**\r\n     * Reference: Sandeep V. Tamhankar ([email protected]),\r\n     * http://javascript.internet.com\r\n     */\r\n    function checkEmail(emailStr) {\r\n       if (emailStr.length == 0) {\r\n           return true;\r\n       }\r\n       var emailPat=/^(.+)@(.+)$/;\r\n       var specialChars=\"\\\\(\\\\)<>@,;:\\\\\\\\\\\\\\\"\\\\.\\\\[\\\\]\";\r\n       var validChars=\"\\[^\\\\s\" + specialChars + \"\\]\";\r\n       var quotedUser=\"(\\\"[^\\\"]*\\\")\";\r\n       var ipDomainPat=/^(\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})$/;\r\n       var atom=validChars + '+';\r\n       var word=\"(\" + atom + \"|\" + quotedUser + \")\";\r\n       var userPat=new RegExp(\"^\" + word + \"(\\\\.\" + word + \")*$\");\r\n       var domainPat=new RegExp(\"^\" + atom + \"(\\\\.\" + atom + \")*$\");\r\n       var matchArray=emailStr.match(emailPat);\r\n       if (matchArray == null) {\r\n           return false;\r\n       }\r\n       var user=matchArray[1];\r\n       var domain=matchArray[2];\r\n       if (user.match(userPat) == null) {\r\n           return false;\r\n       }\r\n       var IPArray = domain.match(ipDomainPat);\r\n       if (IPArray != null) {\r\n           for (var i = 1; i <= 4; i++) {\r\n              if (IPArray[i] > 255) {\r\n                 return false;\r\n              }\r\n           }\r\n           return true;\r\n       }\r\n       var domainArray=domain.match(domainPat);\r\n       if (domainArray == null) {\r\n           return false;\r\n       }\r\n       var atomPat=new RegExp(atom,\"g\");\r\n       var domArr=domain.match(atomPat);\r\n       var len=domArr.length;\r\n       if ((domArr[domArr.length-1].length < 2) ||\r\n           (domArr[domArr.length-1].length > 3)) {\r\n           return false;\r\n       }\r\n       if (len < 2) {\r\n           return false;\r\n       }\r\n       return true;\r\n    }\r\n\r\n  \r\n\r\n\r\n    /*$RCSfile: validateByte.js,v $ $Revision: 1.9 $ $Date: 2004/03/28 16:53:21 $ */\r\n    /**\r\n    * Check to see if fields are a valid byte.\r\n    * Fields are not checked if they are disabled.\r\n    * <p>\r\n    * @param form The form validation is taking place on.\r\n    */\r\n    function validateByte(form) {\r\n        var bValid = true;\r\n        var focusField = null;\r\n        var i = 0;\r\n        var fields = new Array();\r\n        var formName = form.getAttributeNode(\"name\"); \r\n        oByte = eval('new ' + formName.value + '_ByteValidations()');\r\n\r\n        for (x in oByte) {\r\n            var field = form[oByte[x][0]];\r\n\r\n            if ((field.type == 'hidden' ||\r\n                field.type == 'text' ||\r\n                field.type == 'textarea' ||\r\n                field.type == 'select-one' ||\r\n                field.type == 'radio')  &&\r\n                field.disabled == false) {\r\n\r\n                var value = '';\r\n                // get field's value\r\n                if (field.type == \"select-one\") {\r\n                    var si = field.selectedIndex;\r\n                    if (si >= 0) {\r\n                        value = field.options[si].value;\r\n                    }\r\n                } else {\r\n                    value = field.value;\r\n                }\r\n\r\n                if (value.length > 0) {\r\n                    if (!isAllDigits(value)) {\r\n                        bValid = false;\r\n                        if (i == 0) {\r\n                            focusField = field;\r\n                        }\r\n                        fields[i++] = oByte[x][1];\r\n\r\n                    } else {\r\n\r\n                        var iValue = parseInt(value);\r\n                        if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) {\r\n                            if (i == 0) {\r\n                                focusField = field;\r\n                            }\r\n                            fields[i++] = oByte[x][1];\r\n                            bValid = false;\r\n                        }\r\n                    }\r\n                }\r\n\r\n            }\r\n        }\r\n        if (fields.length > 0) {\r\n            try{\r\n                focusField.focus();\r\n            }catch(e){}\r\n           alert(fields.join('\\n'));\r\n        }\r\n        return bValid;\r\n    }\r\n\r\n\r\n    /*$RCSfile: validateRequired.js,v $ $Revision: 1.13 $ $Date: 2004/03/28 16:53:21 $ */\r\n    /**\r\n    *  Check to see if fields must contain a value.\r\n    * Fields are not checked if they are disabled.\r\n    * <p>\r\n    * @param form The form validation is taking place on.\r\n    */\r\n\r\n    function validateRequired(form) {\r\n        var isValid = true;\r\n        var focusField = null;\r\n        var i = 0;\r\n        var fields = new Array();\r\n        var formName = form.getAttributeNode(\"name\");\r\n\r\n        oRequired = eval('new ' + formName.value + '_required()');\r\n\r\n        for (x in oRequired) {\r\n            var field = form[oRequired[x][0]];\r\n\r\n            if ((field.type == 'hidden' ||\r\n                field.type == 'text' ||\r\n                field.type == 'textarea' ||\r\n                field.type == 'file' ||\r\n                field.type == 'checkbox' ||\r\n                field.type == 'select-one' ||\r\n                field.type == 'password') &&\r\n                field.disabled == false) {\r\n\r\n                var value = '';\r\n                // get field's value\r\n                if (field.type == \"select-one\") {\r\n                    var si = field.selectedIndex;\r\n                    if (si >= 0) {\r\n                        value = field.options[si].value;\r\n                    }\r\n                } else if (field.type == 'checkbox') {\r\n                    if (field.checked) {\r\n                        value = field.value;\r\n                    }\r\n                } else {\r\n                    value = field.value;\r\n                }\r\n\r\n                if (trim(value).length == 0) {\r\n\r\n                    if (i == 0) {\r\n                        focusField = field;\r\n                    }\r\n                    fields[i++] = oRequired[x][1];\r\n                    isValid = false;\r\n                }\r\n            } else if (field.type == \"select-multiple\") { \r\n                var numOptions = field.options.length;\r\n                lastSelected=-1;\r\n                for(loop=numOptions-1;loop>=0;loop--) {\r\n                    if(field.options[loop].selected) {\r\n                        lastSelected = loop;\r\n                        value = field.options[loop].value;\r\n                        break;\r\n                    }\r\n                }\r\n                if(lastSelected < 0 || trim(value).length == 0) {\r\n                    if(i == 0) {\r\n                        focusField = field;\r\n                    }\r\n                    fields[i++] = oRequired[x][1];\r\n                    isValid=false;\r\n                }\r\n            } else if ((field.length > 0) && (field[0].type == 'radio' || field[0].type == 'checkbox')) {\r\n                isChecked=-1;\r\n                for (loop=0;loop < field.length;loop++) {\r\n                    if (field[loop].checked) {\r\n                        isChecked=loop;\r\n                        break; // only one needs to be checked\r\n                    }\r\n                }\r\n                if (isChecked < 0) {\r\n                    if (i == 0) {\r\n                        focusField = field[0];\r\n                    }\r\n                    fields[i++] = oRequired[x][1];\r\n                    isValid=false;\r\n                }\r\n            }\r\n        }\r\n        if (fields.length > 0) {\r\n            try{\r\n                focusField.focus();\r\n            }catch(e){}\r\n           alert(fields.join('\\n'));\r\n        }\r\n        return isValid;\r\n    }\r\n    \r\n    // Trim whitespace from left and right sides of s.\r\n    function trim(s) {\r\n        return s.replace( /^\\s*/, \"\" ).replace( /\\s*$/, \"\" );\r\n    }\r\n\r\n\r\n\r\nfunction Validate_Number(value){\r\n    var re = /[^\\d\\.\\-]/;\r\n    if(re.test(value))\r\n        return false;\r\n    if(value.lastIndexOf(\"-\")>0)\r\n        return false;\r\n    if(value.split(\".\").length>2)\r\n        return false;\r\n    return true;\r\n}\r\nfunction Validate_Integer(value){\r\n    return isAllDigits(value) && !isNaN(parseInt(value));\r\n}\r\n\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nNew_Com_RegisterFile(\"ckresize_lang.jsp\", \"ckeditor/\");\r\nCom_RegisterFile(\"ckresize_lang.jsp\"); \r\n\tvar Ckresize_lang = { \r\n\t\tfirst:'已经是第一张图片' ,\r\n\t\ttip:'已是最后一张图片,自动为您跳转回第一张图片' ,\r\n\t\tclose:'关闭',\r\n\t\tsize:'实际大小'\r\n\t};\r\n\r\n</script>\r\n\r\n<!-- 是否开启合并加载js模式  -->\r\n\r\n\t\r\n\r\n\r\n\r\n\r\n\t\r\n\t\r\n\t\r\n\t\t<script type=\"text/javascript\">\r\n\t\t\tseajs.use([ 'lui/parser', 'lui/jquery', 'lui/dialog', 'theme!common', 'theme!icon','theme!iconfont' ],function(parser, $) {\r\n\t\t\t\t$(document).ready(function() {\r\n\t\t\t\t\tparser.parse();\r\n\t\t\t\t});\r\n\t\t\t}); \r\n\t\t</script>\r\n\t\r\n\r\n\r\n\r\n<link rel=\"shortcut icon\" href=\"/favicon.ico\">\r\n\r\n\r\n<script>\r\n    //传阅校验器:主文档提交时检查是否有传阅任务,有则阻止提交\r\n    Com_Parameter.event[\"submit\"].unshift(function () {\r\n        var url = \"http://oa.chasesun.cn/resource/login/login_chasesun/login.jsp\";\r\n        var modelId = \"\";\r\n        var requestModule = [\"/km/review/\", \"/km/imissive/\"];\r\n        var toCheck = false;\r\n        var toSubmit = true;\r\n        for (var i = 0; i < requestModule.length; i++) {\r\n            if (url.indexOf(requestModule[i]) != -1) {\r\n                toCheck = true;\r\n                break;\r\n            }\r\n        }\r\n        if (toCheck) {\r\n            $.ajax({\r\n                async: false, cache: false, contentType: 'json', data: {modelId: modelId}, url: '/sys/circulation/sys_circulation_main/sysCirculationMain.do?method=doingCirculation',\r\n                success: function (result, status, xhr) {\r\n                    if (result && result.doingCirculation) {\r\n                        toSubmit = false;\r\n                        alert('当前文档正在执行传阅,您的操作将会影响传阅过程,请稍后再提交!');\r\n                    }\r\n                },\r\n                error: function (xhr, status, error) {\r\n                    toSubmit = false;\r\n                    console.log(error);\r\n                    alert('当前文档查询是否有在执行传阅出错');\r\n                }\r\n            });\r\n        }\r\n        return toSubmit;\r\n    });\r\n</script>\r\n\r\n        <link href=\"/resource/login/login_chasesun//font/iconfont.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n        <link type=\"text/css\" rel=\"stylesheet\" href=\"/resource/login/login_chasesun/css/login.css?s_cache=1563012259522\" />\r\n        <link type=\"text/css\" rel=\"stylesheet\" href=\"/resource/login/login_chasesun/css/animate.css?s_cache=1758655705339\" />\r\n        <script src=\"/resource/login/login_chasesun/js/jquery.js\"></script>\r\n        <script src=\"/resource/login/login_chasesun/js/jquery.fullscreenr.js\"></script>\r\n        <script src=\"/resource/login/login_chasesun/js/custom.js\"></script>\r\n \t\r\n<script type=\"text/javascript\">\r\n\tfunction checkLocation(){\r\n\t\tif(top==window){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tdomain.call(window.top,\"login\");\r\n\t}\r\n\ttry{\r\n\t\tcheckLocation();\r\n\t}catch(e){window.console(e);}\r\n</script>\r\n<title>登录系统</title>\r\n</head>\r\n<body>\r\n  \r\n        <script>\r\n            var templatePath = '/resource/login/login_chasesun/';\r\n        </script>\r\n        <!-- 背景图片 Starts -->\r\n        <div class=\"login-background-img\"><img id=\"login-bgImg\" /></div>\r\n        <script type=\"text/javascript\">\r\n            // 您必须指定你的背景图片的大小\r\n            var FullscreenrOptions = { width: 1920, height: 1080, bgID: '#login-bgImg' };\r\n            // 此处将会激活全屏背景\r\n            jQuery.fn.fullscreenr(FullscreenrOptions);\r\n        </script>\r\n        <!-- 背景图片 Ends -->\r\n        <!-- 多语言 starts-->\r\n        <div class=\"login_header\">\r\n            <div class=\"login_top_bar\">\r\n                <ul>\r\n                    \r\n                </ul>\r\n            </div>\r\n        </div>\r\n        <!-- 多语言  ends-->\r\n        <div class=\"maincon\">\r\n            <table class=\"login_iframe_box\">\r\n                    <tr>\r\n                        <td>\r\n            <!-- 登录框 开始 -->\r\n                    <div class=\"login_iframe\">\r\n                        <!-- LOGO路径 starts-->\r\n                        <span class=\"logo\">\r\n                            <img src=\"/resource/login/login_chasesun/images/logo.png\" />\r\n                        </span>\r\n                        <!-- LOGO路径 ends-->\r\n                        <div class=\"login_content\">   \r\n                            \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<script>\r\nCom_IncludeFile(\"security.js\");\r\n</script>\r\n\r\n<script type=\"text/javascript\">\r\nfunction kmss_onsubmit(){\r\n\tvar loginInput = \"请输入用户名和密码\";\r\n\tcleanerErrorMsg();\r\n\tif(document.forms[0].j_username.value==\"\"){\r\n\t\tshowErrorMsg(loginInput);\r\n\t\tdocument.forms[0].j_username.focus();\r\n\t\treturn false;\r\n\t}\r\n\tif(document.forms[0].j_password.value==\"\"){\r\n\t\tshowErrorMsg(loginInput);\r\n\t\tdocument.forms[0].j_password.focus();\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tdocument.getElementsByName(\"btn_submit\")[0].disabled = true;\t \r\n\tencryptPassword();\r\n\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\treturn true;\r\n}\r\n//显示错误信息\r\nfunction showErrorMsg(msg) {\r\n\tvar info = \"系统提示:\";\r\n\t$(\".lui_login_message_div\").addClass(\"tip_message\").html(info + msg);\r\n}\r\n//清除错误信息\r\nfunction cleanerErrorMsg() {\r\n\t$(\".lui_login_message_div\").removeClass('tip_message').html(\"\");\r\n}\r\nseajs.use(['lui/jquery'], function($) {\r\n\twindow.onload = function(){\r\n\t\tvar j_username = document.getElementsByName('j_username')[0].value;\r\n\t\tif(j_username==\"\"){ \r\n\t\t\tdocument.getElementsByName('j_username')[0].focus();\r\n\t\t}\r\n\t\telse{\r\n\t\t\tdocument.getElementsByName('j_password')[0].focus();\r\n\t\t}\r\n\t\t\r\n\t\t$(document).keypress(function(e) {\r\n\t\t\t//if (e.which == 13)\r\n\t\t\t//\t$(\"form\").submit();\r\n\t\t});\r\n\t\t\r\n\t\t// ExceptionTranslationFilter对SPRING_SECURITY_TARGET_URL 进行未登录url保持 请求中的hash并不会传递到服务端,故只能前端处理\r\n\t\t\r\n\t\tvar urlObj = $('input[name=\"j_redirectto\"]');\r\n\t\tvar hash = location.hash;\r\n\t\tif(hash)\r\n\t\t\turlObj.val(urlObj.val() + hash);\r\n\t\t\r\n\t\t\r\n\t}\r\n});\r\nfunction encryptPassword(){ \r\n\tdocument.forms[0].j_password.value = desEncrypt(document.forms[0].j_password.value);\r\n\t\r\n\t\r\n}\r\n</script>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\t\t<div class=\"header_title\">\r\n\t\t\t登录系统\r\n\t\t\t<span class=\"title_right\">OA办公平台</span>\r\n\t\t</div>\r\n\t\r\n\t\r\n\r\n<div class=\"form_content\">\r\n\t<div class=\"form_content_item form_account\">\r\n\t\t<form action=\"j_acegi_security_check\" method=\"POST\" onsubmit=\"return kmss_onsubmit();\" autocomplete=\"off\">\r\n\t\t\t<table class=\"lui_login_form_table\">\r\n\t\t\t\t \r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td colspan=\"2\" class=\"lui_login_message_td\">\r\n\t\t\t\t\t\t<div class=\"lui_login_message_div\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td class=\"lui_login_input_title\">用户名:</td>\r\n\t\t\t\t\t<td class=\"lui_login_input_td\">\r\n\t\t\t\t\t\t<div class=\"lui_login_input_div\">\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<input type='text' name='j_username' class=\"lui_login_input_username\"  onfocus=\"this.select();\" value='' placeholder=\"用户名\" autocomplete=\"off\">\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td class=\"lui_login_input_title\">密 码:</td>\r\n\t\t\t\t\t<td class=\"lui_login_input_td\">\r\n\t\t\t\t\t\t<div class=\"lui_login_input_div\">\r\n\t\t\t\t\t\t\t<input type='password' name='j_password' class=\"lui_login_input_password\" placeholder=\"密码\" autocomplete=\"off\">\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t \t\r\n\t\t\t \t\r\n\t\t\t\t\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td class=\"lui_login_button_td\" colspan=\"2\"  v-bind:class=\"{choose_hover:isLoginButtonActive}\">\r\n\t\t\t\t\t\t<a href=\"javascript:document.getElementsByName('btn_submit')[0].click();\">\r\n\t\t\t\t\t<div class=\"lui_login_button_div_l\" data-color=\"loginBtn_bgColor\" @mouseenter=\"btnEnter\" @mouseleave=\"btnLeave\" v-bind:style=\"{color:loginBtn_font_color}\">\r\n\t                \t<div class=\"lui_login_button_div_r\">\r\n\t                         \t<div class=\"lui_login_button_div_c\">\r\n\t                         \t\t登录\r\n\t                         \t</div>\r\n\t                    </div>\r\n\t                </div>\r\n             \t </a>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td colspan=\"2\">\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\t\r\n\t\t\t<div class=\"lui_login_form_opt\">\r\n\t\t\t\t\t\r\n\t\t\t    \r\n\t\t\t</div>\t\r\n\t\t\t\r\n\t\t\t<input type=hidden name=\"j_redirectto\" value=\"\">\r\n\t\t\t<input type=submit style=\"border: 0px; width: 0px; height: 0px; background: none;\" name=\"btn_submit\">\r\n\t\t</form>\r\n\t</div>\r\n\t\r\n</div>\r\n<div class=\"form_bottom\">\r\n     \r\n     \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t<div id=\"third_login_form\" class=\"third_login_form\">\r\n\t\t<div class=\"third_login_header\">\r\n\t\t    <!-- 其他登录方式 -->\r\n\t\t\t<span>第三方登录</span>\r\n\t\t</div>\r\n\t\t<ul class='third_login_list'>\r\n\t\t\r\n\t\t\t<li class=\"third_login_item\">\r\n\t\t\t\t<a href=\"https://oapi.dingtalk.com/connect/qrconnect?appid=dingrw4dewyk7v0fa0cx&response_type=code&scope=snsapi_login&state=STATE&redirect_uri=http%3A%2F%2Foa.chasesun.cn%2Fthird%2Fding%2FpcScanLogin.do%3Fmethod%3Dservice\" title=\"钉钉扫码登录\">\r\n\t\t\t\t  <div class=\"third_login_item_icon third_login_icon_ding\"></div>\r\n\t\t\t      <div class=\"third_login_item_desc\">钉钉扫</div>\r\n\t\t\t\t</a>\r\n\t\t\t</li>\r\n\t\t\r\n\t\t</ul>\r\n\t</div>\r\n\r\n</div>\r\n                        </div>\r\n                    </div>\r\n            <!-- 登录框 结束 -->\r\n                </td>\r\n            </tr>\r\n        </table>\r\n        </div>\r\n        <div class=\"login_footer\">\r\n            \r\n            <p>Copyright © 2001-2018  版权所有</p>\r\n        </div>\r\n        \r\n        <script type=\"text/javascript\">\r\n        \r\n         LUI.ready(function(){\r\n             if(\"en-US\" == \"zh\") {\r\n                //英文环境\r\n                 $('body').addClass('muilti_eng');\r\n             }\r\n         });\r\n\r\n         // 获取随机登录图片信息,返回随机获取的图片名称\r\n         function get_random_bg() {\r\n            \r\n            return \"single_random_login_bg1.jpg?s_cache=1758655705339\";\r\n         }\r\n        //添加提示\r\n        $('body').append('<div class=\"tipsClass\">大写锁定已打开</div>');\r\n        </script>\r\n\t\r\n</body>\r\n</html>\r\n\r\n\r\n",
          "body_murmur": -986712297,
          "body_sha256": "7f8585ff7c2ff5365ceff6095712874711fa8a145e27aff341bb2b7c554ea569",
          "component": [
            "OpenResty",
            "Nginx"
          ],
          "content_length": -1,
          "favicon": {
            "md5_hash": "302464c3f6207d57240649926cfc7bd4",
            "murmur_hash": 831854882,
            "path": "http://175.6.185.190:80/favicon.ico",
            "size": 4286
          },
          "headers": {
            "access_control_allow_origin": [
              "*"
            ],
            "cache_control": [
              "no-cache"
            ],
            "connection": [
              "keep-alive"
            ],
            "content_type": [
              "text/html;charset=UTF-8"
            ],
            "date": [
              "Sat, 11 Oct 2025 19:55:25 GMT"
            ],
            "server": [
              "openresty"
            ],
            "set_cookie": [
              "route=b916bf4d3b39e6029fd403f21566f3f1; Path=/",
              "JSESSIONID=F08B14F8F431A9BAEAC9FB201F764E94; Path=/; HttpOnly",
              "isopen=close; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/"
            ],
            "vary": [
              "Accept-Encoding"
            ]
          },
          "protocol": "HTTP/1.1",
          "redirects": [
            {
              "headers": {
                "access_control_allow_origin": [
                  "*"
                ],
                "cache_control": [
                  "no-cache"
                ],
                "connection": [
                  "keep-alive"
                ],
                "content_length": [
                  "0"
                ],
                "date": [
                  "Sat, 11 Oct 2025 19:55:24 GMT"
                ],
                "location": [
                  "http://175.6.185.190/resource/anonym.jsp"
                ],
                "server": [
                  "openresty"
                ],
                "set_cookie": [
                  "route=38a7a395734269c86ce4e83da462097d; Path=/",
                  "JSESSIONID=9C23BAF22FAECDA86237E253F011B960; Path=/; HttpOnly"
                ]
              },
              "location": "http://175.6.185.190/resource/anonym.jsp",
              "protocol": "HTTP/1.1",
              "status_code": 302,
              "status_line": "302 Found"
            },
            {
              "headers": {
                "access_control_allow_origin": [
                  "*"
                ],
                "cache_control": [
                  "no-cache"
                ],
                "connection": [
                  "keep-alive"
                ],
                "content_length": [
                  "0"
                ],
                "content_type": [
                  "text/html;charset=UTF-8"
                ],
                "date": [
                  "Sat, 11 Oct 2025 19:55:25 GMT"
                ],
                "location": [
                  "http://175.6.185.190/login.jsp"
                ],
                "server": [
                  "openresty"
                ],
                "set_cookie": [
                  "route=8addf3e232f07e762dc0b5af180d4bcb; Path=/",
                  "JSESSIONID=0A5C885186DF84A4360A049879BFFCF0; Path=/; HttpOnly"
                ]
              },
              "location": "http://175.6.185.190/login.jsp",
              "protocol": "HTTP/1.1",
              "status_code": 302,
              "status_line": "302 Found"
            }
          ],
          "request": {
            "headers": {
              "accept": [
                "*/*"
              ],
              "referer": [
                "http://175.6.185.190/resource/anonym.jsp"
              ],
              "user_agent": [
                "Mozilla/5.0 (compatible; Odin; https://docs.getodin.com/)"
              ]
            },
            "method": "GET",
            "url": {
              "host": "175.6.185.190",
              "path": "/login.jsp",
              "scheme": "http"
            }
          },
          "status_code": 200,
          "title": "登录系统",
          "transfer_encoding": [
            "chunked"
          ]
        }
      },
      "url": "http://175.6.185.190/",
      "_meta": {
        "name": "",
        "desc": "",
        "category": ""
      },
      "last_updated_at": "2025-10-15T13:38:02.757Z"
    },
    {
      "port": 443,
      "protocol": "tcp",
      "name": "https",
      "version": "",
      "product": "openresty",
      "extra_info": "",
      "tunnel": "ssl",
      "url": "https://175.6.185.190/",
      "_meta": {
        "name": "",
        "desc": "",
        "category": ""
      },
      "last_updated_at": "2025-10-15T13:01:57.036Z"
    },
    {
      "port": 3306,
      "protocol": "tcp",
      "name": "mysql",
      "version": "8.0.33",
      "product": "MySQL",
      "extra_info": "",
      "tunnel": "",
      "softwares": [
        {
          "uri": "cpe:/a:mysql:mysql:8.0.33",
          "part": "a",
          "vendor": "mysql",
          "product": "mysql",
          "version": "8\\.0\\.33",
          "language": "ANY",
          "edition": "ANY",
          "update": "ANY"
        }
      ],
      "modules": {
        "mysql": {
          "capability_flags": {
            "CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS": true,
            "CLIENT_COMPRESS": true,
            "CLIENT_CONNECT_ATTRS": true,
            "CLIENT_CONNECT_WITH_DB": true,
            "CLIENT_DEPRECATED_EOF": true,
            "CLIENT_FOUND_ROWS": true,
            "CLIENT_IGNORE_SIGPIPE": true,
            "CLIENT_IGNORE_SPACE": true,
            "CLIENT_INTERACTIVE": true,
            "CLIENT_LOCAL_FILES": true,
            "CLIENT_LONG_FLAG": true,
            "CLIENT_LONG_PASSWORD": true,
            "CLIENT_MULTI_RESULTS": true,
            "CLIENT_MULTI_STATEMENTS": true,
            "CLIENT_NO_SCHEMA": true,
            "CLIENT_ODBC": true,
            "CLIENT_PLUGIN_AUTH": true,
            "CLIENT_PLUGIN_AUTH_LEN_ENC_CLIENT_DATA": true,
            "CLIENT_PROTOCOL_41": true,
            "CLIENT_PS_MULTI_RESULTS": true,
            "CLIENT_RESERVED": true,
            "CLIENT_SECURE_CONNECTION": true,
            "CLIENT_SESSION_TRACK": true,
            "CLIENT_SSL": true,
            "CLIENT_TRANSACTIONS": true
          },
          "protocol_version": 10,
          "version": "8.0.33"
        },
        "tls": {
          "certificate": {
            "extensions": {
              "basic_constraints": {
                "is_ca": true
              }
            },
            "fingerprint_md5": "F7372D2F55B1608733EB4635140F9C26",
            "fingerprint_sha1": "9711125F0351F3C83D49CDDAFB39048A5EC7D27E",
            "fingerprint_sha256": "D312151CDB8BCD495765CD06687CE25618714384CE3E29C97C363EE45A5A6AE1",
            "issuer": {
              "common_name": [
                "MySQL_Server_8.0.33_Auto_Generated_CA_Certificate"
              ]
            },
            "issuer_dn": "/CN=MySQL_Server_8.0.33_Auto_Generated_CA_Certificate",
            "jarm": "00000000000000000000000000000000000000000000000000000000000000",
            "redacted": false,
            "revocation": {
              "ocsp": {
                "reason": "UNKNOWN",
                "revoked": false
              }
            },
            "serial_number": "2",
            "signature": {
              "algorithm": {
                "name": "SHA256-RSA",
                "oid": "1.2.840.113549.1.1.11"
              },
              "self_signed": false,
              "value": "ODkzZTg1MjExZTA2MTAzYTJlMWU0ZTQyNGQ1MjQxMTcwZTQ0NzI0NzI5NjFiOWM1ZTljZWVhMWZiZDBhZGJmYzlhOGY4MjIwZjY4YjI0MzU0NDFiYmRiN2Y5NmQxOTBjZjU1OWIxYTJmZjkwMzIxYWE2NTM2NmI4ZTA5NTQzOTMzNDIyYzE4ZDA5YmVjZjM2YzNkZGNjMThjMmI4MDE2NTYxNjQ1MmMxNTA4MDliZWZhYjE5MDNiMzAxNjE2ZGE5Njk0YzNiODU5Y2Q3ZTNjOGMyNWMxYzUwZTM0MGNlYmEwMWI0M2UxNWI3OTQwOWQxYWFjN2IxYTY4ZjY0OTAwMWIxZjAyOTQwNzJhYTAyYmY3OTY2MzRiZTZjNDhjMmVkYWIwNjhkMWZhMmU4ZjM4OGFjOGJkMzFiYWNkN2Q2NWU5YmMzNTdlODVmODBkZGRjZjExYTBkMDg0MGJjNmUyZjNhN2FkOWRlZjE0YmE1OGQ2N2Y0NWNlMWQ5YTJhNDY3ZGMwODNhMTBmYjczODViY2M1Mzk4YTZmMjBiMThiYmY2MzQ0YjE4M2YwZWZlYWFhMzE4NDZjODFhZmVmNDYxZTAyMmU5MTI4Mjc4N2I2NGU3Y2ZjNDhiYzE2ZmU3MjZiMTIxOTBiYzEzMDE1YjgzZjg5OWZlZWMwY2E0NDkzYjk="
            },
            "subject": {
              "common_name": [
                "MySQL_Server_8.0.33_Auto_Generated_Server_Certificate"
              ]
            },
            "subject_alt_name": {
              "dns_names": [
                "MySQL_Server_8.0.33_Auto_Generated_Server_Certificate"
              ],
              "extended_dns_names": []
            },
            "subject_dn": "/CN=MySQL_Server_8.0.33_Auto_Generated_Server_Certificate",
            "subject_key_info": {
              "_key": "rsa",
              "dh": [],
              "dsa": [],
              "ecdsa": [],
              "fingerprint_sha256": "64709a8effa17aee008632795256cca418765023e49f15e7b3669d3efd50f955",
              "key_algorithm": "RSA",
              "rsa": {
                "exponent": 65537,
                "length": 2048,
                "modulus": "MHhkNDA4MDExMTdmZTAwNmQyOTVlYjk2NmQwNDJiOWUxMjY2NTg1MzAxNzE0NTA3MDdhMjFhYzkyZDE3NGNlYTAwYTZhZGU1MmFhMGYzMjkyN2RkM2QyN2VlMmVmZWIzZGZmMTM3YmNjNThiZjEzNmYwZjUyZTAzOGFiYmEzN2Y0ZmM5NTg5MTU5NzAxYTBhMDM5YTU5MDk1ZmM0NDgzNGQyZTA5Y2UyODFiZjkxMWI0ZjA5YmMwMDE3MmFkY2RjOWJiMzE4MTk1ZDBjMjAyZmE1ZjkyNzZiOTM0NTBmOTg1MmIwZDI5NjkwOGU5OWU4N2VhYjhjZGMwZDliNmExZmJlMzJjNDdlMWM3NzBmMjJlZGExZmMwYmM4MjBkNmU3OTI3MmZlZjgzMjA0OTkzMGVlMjdkNmIzMmM1OTg3MGUyOWY5NzhkYzZkMzQ1NDBlY2UzOWQ3Njc3NTJlNWYyYzE4MWU3MThlNzFlZGIzNzA1NjQzZGYzNTY5Yzk2Mjc0MDcwZWZkZTg3YzE5YzcwNzFmMTVlOGYwYWQ2ZTRiMmUwYTg1ZGQwNmM3NzU3YWM5ZTQ0ZjI3NzdmOGQ4ZDU2MzNkNTQ2ODFiNWQwYzUzY2M4ZDliMjRhMWUzZjAwMTIwODJiY2IwN2VkYjQ3YTllMTAwN2Y1YmZiMDk3ZWQ5YzA5ZA=="
              }
            },
            "tbs_fingerprint": "89dbc461b7cdb9b0b526fdfdde902182fd9ab60e96e0cbe0698252825d5d4a46",
            "validation_level": "DV",
            "validity": {
              "length_seconds": 315360000,
              "not_after": "2033-07-18T07:46:44",
              "not_before": "2023-07-21T07:46:44"
            },
            "version": 2
          },
          "fingerprint_sha256": "D312151CDB8BCD495765CD06687CE25618714384CE3E29C97C363EE45A5A6AE1",
          "precert": false,
          "raw": "MIIDBzCCAe+gAwIBAgIBAjANBgkqhkiG9w0BAQsFADA8MTowOAYDVQQDDDFNeVNRTF9TZXJ2ZXJfOC4wLjMzX0F1dG9fR2VuZXJhdGVkX0NBX0NlcnRpZmljYXRlMB4XDTIzMDcyMTA3NDY0NFoXDTMzMDcxODA3NDY0NFowQDE+MDwGA1UEAww1TXlTUUxfU2VydmVyXzguMC4zM19BdXRvX0dlbmVyYXRlZF9TZXJ2ZXJfQ2VydGlmaWNhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDUCAERf+AG0pXrlm0EK54SZlhTAXFFBweiGsktF0zqAKat5Sqg8ykn3T0n7i7+s9/xN7zFi/E28PUuA4q7o39PyViRWXAaCgOaWQlfxEg00uCc4oG/kRtPCbwAFyrc3JuzGBldDCAvpfkna5NFD5hSsNKWkI6Z6H6rjNwNm2ofvjLEfhx3DyLtofwLyCDW55Jy/vgyBJkw7ifWsyxZhw4p+XjcbTRUDs4512d1Ll8sGB5xjnHts3BWQ981aclidAcO/eh8GccHHxXo8K1uSy4Khd0Gx3V6yeRPJ3f42NVjPVRoG10MU8yNmySh4/ABIIK8sH7bR6nhAH9b+wl+2cCdAgMBAAGjEDAOMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggEBAIk+hSEeBhA6Lh5OQk1SQRcORHJHKWG5xenO6h+9Ctv8mo+CIPaLJDVEG723+W0ZDPVZsaL/kDIaplNmuOCVQ5M0IsGNCb7PNsPdzBjCuAFlYWRSwVCAm++rGQOzAWFtqWlMO4Wc1+PIwlwcUONAzroBtD4Vt5QJ0arHsaaPZJABsfApQHKqAr95ZjS+bEjC7asGjR+i6POIrIvTG6zX1l6bw1foX4Dd3PEaDQhAvG4vOnrZ3vFLpY1n9Fzh2aKkZ9wIOhD7c4W8xTmKbyCxi79jRLGD8O/qqjGEbIGv70YeAi6RKCeHtk58/Ei8Fv5yaxIZC8EwFbg/iZ/uwMpEk7k=",
          "tags": [
            "dv",
            "trusted"
          ]
        }
      },
      "_meta": {
        "name": "",
        "desc": "",
        "category": ""
      },
      "last_updated_at": "2025-10-16T11:10:10.197Z"
    },
    {
      "port": 6379,
      "protocol": "tcp",
      "name": "redis",
      "version": "",
      "product": "Redis key-value store",
      "extra_info": "",
      "tunnel": "",
      "softwares": [
        {
          "uri": "cpe:/a:redislabs:redis",
          "part": "a",
          "vendor": "redislabs",
          "product": "redis",
          "version": "ANY",
          "language": "ANY",
          "edition": "ANY",
          "update": "ANY"
        }
      ],
      "modules": {
        "redis": {
          "arch_bits": "",
          "build_id": "",
          "gcc_version": "",
          "git_sha1": "",
          "info_response": "(Error: NOAUTH Authentication required.)",
          "major": 0,
          "mem_allocator": "",
          "minor": 0,
          "mode": "",
          "nonexistent_response": "(Error: ERR unknown command 'NONEXISTENT', with args beginning with: )",
          "os": "",
          "patchlevel": 0,
          "ping_response": "(Error: NOAUTH Authentication required.)",
          "quit_response": "OK",
          "total_commands_processed": 0,
          "total_connections_received": 0,
          "uptime_in_seconds": 0,
          "used_memory": 0,
          "version": ""
        }
      },
      "_meta": {
        "name": "",
        "desc": "",
        "category": ""
      },
      "last_updated_at": "2025-10-06T11:39:55.671Z"
    },
    {
      "port": 8000,
      "protocol": "tcp",
      "name": "rtsp",
      "version": "",
      "product": "",
      "extra_info": "",
      "tunnel": "",
      "_meta": {
        "name": "",
        "desc": "",
        "category": ""
      },
      "last_updated_at": "2025-10-16T16:46:10.12Z"
    },
    {
      "port": 15672,
      "protocol": "tcp",
      "name": "http",
      "version": "",
      "product": "Cowboy httpd",
      "extra_info": "",
      "tunnel": "",
      "softwares": [
        {
          "uri": "cpe:/a:ninenines:cowboy",
          "part": "a",
          "vendor": "ninenines",
          "product": "cowboy",
          "version": "ANY",
          "language": "ANY",
          "edition": "ANY",
          "update": "ANY"
        }
      ],
      "modules": {
        "http": {
          "body": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n    <title>RabbitMQ Management</title>\n    <script src=\"js/ejs-1.0.min.js\" type=\"text/javascript\"></script>\n    <script src=\"js/jquery-3.5.1.min.js\"></script>\n    <script src=\"js/jquery.flot-0.8.1.min.js\" type=\"text/javascript\"></script>\n    <script src=\"js/jquery.flot-0.8.1.time.min.js\" type=\"text/javascript\"></script>\n    <script src=\"js/sammy-0.7.6.min.js\" type=\"text/javascript\"></script>\n    <script src=\"js/json2-2016.10.28.js\" type=\"text/javascript\"></script>\n    <script src=\"js/base64.js\" type=\"text/javascript\"></script>\n    <script src=\"js/global.js\" type=\"text/javascript\"></script>\n    <script src=\"js/main.js\" type=\"text/javascript\"></script>\n    <script src=\"js/prefs.js\" type=\"text/javascript\"></script>\n    <script src=\"js/formatters.js\" type=\"text/javascript\"></script>\n    <script src=\"js/charts.js\" type=\"text/javascript\"></script>\n    <script src=\"js/oidc-oauth/helper.js\"></script>\n    <script src=\"js/oidc-oauth/oidc-client-ts.js\" type=\"text/javascript\"></script>\n    <script src=\"js/oidc-oauth/bootstrap.js\"></script>\n\n    <link href=\"css/main.css\" rel=\"stylesheet\" type=\"text/css\"/>\n    <link href=\"favicon.ico\" rel=\"shortcut icon\" type=\"image/x-icon\"/>\n\n    <script type=\"application/javascript\">\n      var oauth = oauth_initialize_if_required();\n\n      if (oauth.enabled) {\n        if (!oauth.sp_initiated) {\n            oauth.logged_in = has_auth_credentials();\n            oauth.access_token = get_auth_credentials(); // DEPRECATED\n        } else {\n          oauth_is_logged_in().then( status => {\n            if (status.loggedIn && !has_auth_credentials()) {\n              oauth.logged_in = false;\n              oauth_initiateLogout();\n            } else {\n              if (!status.loggedIn) {\n                replace_content('outer', format('login_oauth', {}));\n                clear_auth();\n              } else {\n                oauth.logged_in = true;\n                oauth.access_token = status.user.access_token;  // DEPRECATED\n                oauth.expiryDate = new Date(status.user.expires_at * 1000);  // it is epoch in seconds\n                let current = new Date();\n                _management_logger.debug('token expires in ', (oauth.expiryDate-current)/1000,\n                  'secs at : ', oauth.expiryDate );\n                oauth.user_name = status.user.profile['user_name'];\n                if (!oauth.user_name || oauth.user_name == '') {\n                  oauth.user_name = status.user.profile['sub'];\n                }\n                oauth.scopes = status.user.scope;\n              }\n            }\n          });\n        }\n      }\n\n    </script>\n\n<!--[if lte IE 8]>\n    <script src=\"js/excanvas.min.js\" type=\"text/javascript\"></script>\n    <link href=\"css/evil.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<![endif]-->\n  </head>\n\n  <body>\n    <div id=\"outer\"></div>\n    <div id=\"debug\"></div>\n    <div id=\"scratch\"></div>\n  </body>\n</html>\n",
          "body_murmur": -10116794,
          "body_sha256": "92bc7f94a4dfd3b5a384954c0084258c4a21017d69064731125a9f36bd62cfdd",
          "component": [
            "Cowboy",
            "Erlang"
          ],
          "content_length": 3056,
          "favicon": {
            "md5_hash": "4aef220ab05308e3a3e8e4bec5984b2b",
            "murmur_hash": -1015107330,
            "path": "http://175.6.185.190:15672/favicon.ico",
            "size": 102856
          },
          "headers": {
            "content_length": [
              "3056"
            ],
            "content_security_policy": [
              "script-src 'self' 'unsafe-eval' 'unsafe-inline'; object-src 'self'"
            ],
            "content_type": [
              "text/html"
            ],
            "date": [
              "Mon, 20 Oct 2025 06:24:18 GMT"
            ],
            "etag": [
              "\"1272738641\""
            ],
            "last_modified": [
              "Mon, 26 Jun 2023 08:44:03 GMT"
            ],
            "server": [
              "Cowboy"
            ],
            "vary": [
              "origin"
            ]
          },
          "protocol": "HTTP/1.1",
          "request": {
            "headers": {
              "accept": [
                "*/*"
              ],
              "user_agent": [
                "Mozilla/5.0 (compatible; Odin; https://docs.getodin.com/)"
              ]
            },
            "method": "GET",
            "url": {
              "host": "175.6.185.190:15672",
              "path": "",
              "scheme": "http"
            }
          },
          "status_code": 200,
          "title": "RabbitMQ Management"
        }
      },
      "url": "http://175.6.185.190:15672/",
      "_meta": {
        "name": "",
        "desc": "",
        "category": ""
      },
      "last_updated_at": "2025-10-20T06:32:54.584Z"
    }
  ],
  "services_hash": "1fbdd464189ec8077a0081931e0da4695918404f62f94ffa6f7ea948ace30f5a",
  "last_updated_at": "2025-10-20T06:32:54.584Z",
  "banner": [
    "http",
    "mysql",
    "tls",
    "redis"
  ],
  "is_vuln": false
}