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

© 2026 Cyble Inc. All Rights Reserved.

182.52.58.75

SummaryCVE DetailsRaw Data
29 Jan 2026, 23:51:14 UTC
{
  "scan_id": 1769233337,
  "ip": "182.52.58.75",
  "is_ipv4": true,
  "is_ipv6": false,
  "location": {
    "network": "182.52.58.0/23",
    "postal_code": "16000",
    "coordinates": {
      "latitude": "14.8682",
      "longitude": "100.3776"
    },
    "geo_point": "14.8682, 100.3776",
    "locale_code": "en",
    "continent": "Asia",
    "country_code": "TH",
    "country_name": "Thailand",
    "city": "Sing Buri"
  },
  "location_updated_at": "2026-01-27T00:41:12Z",
  "asn": {
    "number": "AS23969",
    "organization": "TOT Public Company Limited",
    "country_code": ""
  },
  "asn_updated_at": "0001-01-01T00:00:00Z",
  "whois": {
    "network": "182.52.32.0/19",
    "organization": "TOT Public Company Limited",
    "descr": "TOT Public Company Limited",
    "_encoding": {
      "raw": "BASE64"
    }
  },
  "whois_updated_at": "2024-12-09T11:26:54Z",
  "tags": [
    {
      "name": "is_anonymous_proxy",
      "pretty_name": "Anonymous Proxy",
      "value": false,
      "last_updated_at": "2026-01-27T00:41:12Z"
    },
    {
      "name": "is_cdn",
      "pretty_name": "CDN",
      "value": false,
      "last_updated_at": "2026-01-27T04:05:09Z"
    },
    {
      "name": "is_satellite_provider",
      "pretty_name": "Satellite Provider",
      "value": false,
      "last_updated_at": "2026-01-27T00:41:12Z"
    }
  ],
  "hostnames": [
    {
      "name": "node-bij.pool-182-52.dynamic.nt-isp.net",
      "last_updated_at": "2026-01-27T04:05:09Z"
    }
  ],
  "services": [
    {
      "port": 443,
      "protocol": "tcp",
      "name": "https",
      "version": "",
      "product": "",
      "extra_info": "",
      "tunnel": "ssl",
      "modules": {
        "http": {
          "body": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<META HTTP-EQUIV=\"pragma\" CONTENT=\"no-cache\">\n<META HTTP-EQUIV=\"Cache-Control\" CONTENT=\"no-cache, must-revalidate\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>F680</title>\n<LINK REL=\"stylesheet\" HREF='skin/priorgreen/css/login.css' TYPE=\"text/css\" />\n<LINK REL=\"stylesheet\" HREF=\"css/styleen.css\" TYPE=\"text/css\" />\n<script src=\"js/common.js\"></script>\n<script src=\"js/sha256.min.js\" type=\"text/javascript\"></script>\n\n<script>\n\nfunction getObj(id)\n{\nreturn(document.getElementById(id));\n}\nfunction jslSetValue(dst, src, action)\n{\nvar src_o = getObj(src);\nvar dst_o = getObj(dst);\nif(src_o == null || dst_o == null )\nreturn;\ndst_o.value= String(src_o.value);\nswitch (action)\n{\ncase \"GET\":\nif (dst_o.setAttribute)\n{\ndst_o.setAttribute(\"_initValue\", dst_o.value)\n}\nbreak;\ncase \"SET\":\nif (src_o.getAttribute)\n{\nvar initValue = src_o.getAttribute(\"_initValue\");\nif (initValue == src_o.value)\n{\ndst_o.value = \"NULL\";\n}\n}\nbreak;\ndefault:\nbreak;\n}\n}\nfunction setValue(id,value)\n{\nif(getObj(id) != null)\n{\ngetObj(id).value = value;\n}\n}\nfunction Transfer_meaning(id,value)\n{\ngetObj(id).value = value;\n}\nfunction getValue(id)\n{\nreturn(getObj(id).value);\n}\nfunction setHTML(id, html)\n{\ngetObj(id).innerHTML = html;\n}\nfunction getHTML(id)\n{\nreturn (getObj(id).innerHTML);\n}\nfunction getDisabled(id)\n{\nreturn(getObj(id).disabled);\n}\nfunction getDisplay(id)\n{\nif(getObj(id) != null)\n{\nif(getObj(id).style.display == \"none\")\nreturn false;\nelse\nreturn true;\n}\nelse\nreturn false;\n}\nfunction getChecked(id)\n{\nreturn(getObj(id).checked);\n}\nfunction setChecked(id,value)\n{\nif(getObj(id) != null)\n{\ngetObj(id).checked = value;\n}\n}\nfunction jslDiDisplay(id)\n{\nvar i = 0;\nvar num = arguments.length;\nfor(;i < num; i++)\n{\nif(getObj(arguments[i]) != null)\ngetObj(arguments[i]).style.display = \"none\";\n}\n}\nfunction jslEnDisplay(id)\n{\nvar i = 0;\nvar num=arguments.length;\nfor(;i < num; i++)\n{\nif(getObj(arguments[i]) != null)\ngetObj(arguments[i]).style.display = \"\";\n}\n}\nfunction jslDisable(id)\n{\nvar i = 0;\nvar num = arguments.length;\nfor(;i < num; i++)\n{\nif(getObj(arguments[i]) != null)\n{\ngetObj(arguments[i]).disabled = true;\n}\n}\n}\nfunction jslEnable(id)\n{\nvar i = 0;\nvar num=arguments.length;\nfor(;i < num; i++)\n{\nif(getObj(arguments[i]) != null)\n{\ngetObj(arguments[i]).disabled=false;\n}\n}\n}\nfunction HiddenParaInit(arr)\n{\nvar num = arguments.length;\nfor(var i=0; i<num; i++)\n{\nvar leng = arguments[i].length;\nfor(var j=0; j<leng; j++)\n{\nsetValue(arguments[i][j], \"NULL\");\n}\n}\n}\nfunction HiddenMultiInstParaInit(arr, index)\n{\nvar leng = arr.length;\nfor(var i=0; i<leng; i++)\n{\nsetValue(arr[i]+index, \"NULL\");\n}\n}\nfunction ChangeTagStatus(names)\n{\nvar leng = arguments.length;\nvar arrs, leng1, result;\nfor(var i = 0; i < leng-1; i++)\n{\nvar arrs = document.getElementsByTagName(arguments[i]);\nleng1 = arrs.length;\nfor (var j = 0; j < leng1; j++)\n{\nif (\"hidden\" != arrs[j].type && \"file\" != arrs[j].type )\n{\narrs[j].disabled = arguments[leng-1];\n}\n}\n}\n}\nfunction DisableALL()\n{\nChangeTagStatus('input', 'select', true);\n}\nfunction EnableALL()\n{\nChangeTagStatus('input', 'select', false);\n}\nfunction jslViewToPostCheckBox(PostId, ViewId)\n{\nvar value = 0;\nif(getObj(PostId) != null && getObj(ViewId) != null )\n{\nif (getChecked(ViewId))\n{\nvalue = \"1\";\n}\nsetValue(PostId,value);\n}\n}\nfunction jslPostToViewCheckBox(ViewId, PostId)\n{\nvar value = false;\nif(getObj(PostId) != null && getObj(ViewId) != null )\n{\nif (getValue(PostId) == \"1\")\n{\nvalue = true;\n}\nsetChecked(ViewId, value);\n}\n}\nfunction jslGetRadioValue(radioObject)\n{\nif (radioObject)\n{\nif (radioObject.length)\n{\nfor (var i = 0; i < radioObject.length; i++)\n{\nif (radioObject[i].checked)\n{\nreturn radioObject[i].value;\n}\n}\n}\nelse if (radioObject.checked)\n{\nreturn radioObject.value;\n}\n}\nreturn -1;\n}\nfunction jslSetRadioValue(radioObject, value)\n{\nif(radioObject)\n{\nif(radioObject.length)\n{\nfor(var i=0;i<radioObject.length; i++)\n{\nif(radioObject[i].value == value)\n{\nradioObject[i].checked = true;\nreturn true;\n}\n}\n}\nelse if (radioObject.value == value)\n{\nradioObject.checked = true;\n}\n}\nreturn false;\n}\nfunction jslDoShowComboBox(viewid,postid)\n{\nvar i = 0;\nvar selector = getObj(viewid);\nvar value=getObj(postid).value;\nif(selector==null) return;\nfor(; i < selector.length; i++)\n{\nif(selector.options[i].value == value)\n{\nselector.selectedIndex = i;\nreturn;\n}\n}\nselector.selectedIndex = -1;\n}\nfunction addSelectOption(id, val, txt)\n{\nvar o = getObj(id);\nif (isValInSelect(val, id)==0)\n{\nvar op = document.createElement('option');\nop.text = txt;\nop.value = val;\ntry\n{\no.add(op,null);\n}\ncatch(ex)\n{\no.add(op);\n}\n}\n}\nfunction getOptionIndexByValue(sid, val)\n{\nvar sObj = getObj(sid);\nfor ( var i=0; i<sObj.length; i++ )\n{\nif ( val == sObj.options[i].value )\n{\nreturn i;\n}\n}\nreturn -1;\n}\nfunction deleteSelectOption(id, val)\n{\nvar o = getObj(id);\nvar i = getOptionIndexByValue(id, val);\nif(i > -1)\n{\no.remove(i);\n}\n}\nfunction deleteSelectOptions(selectID, keyWord)\n{\nvar obj = getObj(selectID);\nfor ( var i=0; i<obj.options.length; )\n{\nif ( obj.options[i].value.match(keyWord) != null )\n{\nobj.remove(i);\n}\nelse\n{\ni++;\n}\n}\n}\nfunction clearSelect(id)\n{\nvar o = getObj(id);\nwhile(o.options.length > 0)\n{\no.remove(0);\n}\n}\nfunction isValInSelect(val, sid)\n{\nif(getOptionIndexByValue(sid, val) > -1)\n{\nreturn 1;\n}\nreturn 0;\n}\nfunction setSelOtherValue(obj, value, id)\n{\nvar flag = 0;\nvar mm = \"\";\nif(id == null)\n{\nmm = \"\";\n}\nelse\n{\nmm = getValue(id);\n}\nif ((\"\" == mm) || (\"N/A\" == mm) || (null == mm))\n{\nvar num = obj.length;\nfor (var i = num ;i > 0 ;i-- )\n{\nvar name = obj.options[i-1].value;\nvar text = obj.options[i-1].text;\nobj.options[i] = new Option(text, text);\nobj.options[i].value = name;\n}\nobj.options[0] = new Option(value,value);\nobj.options[0].value = value;\nobj.options[0].text = value;\nflag = 1;\n}\nreturn flag;\n}\nfunction colorizeInfoTbl(id)\n{\nvar objTable = document.getElementById(id);\nvar clasName;\nvar colorFlg = true;\nif(objTable)\n{\nfor(var i = 0; i < objTable.rows.length; i++)\n{\nif(objTable.rows[i].style.display != \"none\")\n{\nif(colorFlg)\n{\nclasName = \"white_1\";\ncolorFlg = false;\n}\nelse\n{\nclasName = \"blue_1\";\ncolorFlg = true;\n}\n}\nobjTable.rows[i].setAttribute(\"class\", clasName);\nobjTable.rows[i].setAttribute(\"className\", clasName);\n}\n}\n}\nfunction RmZero(str)\n{\nwhile(str.indexOf(\"0\") == 0 && str.length > 1)\n{\nstr = str.substr(1);\n}\nreturn str;\n}\nfunction IpRmZero(IpAddrValue)\n{\nvar addrParts = IpAddrValue.split('.');\nvar leng = addrParts.length;\nfor (var i = 0; i < leng; i++)\n{\naddrParts[i]=RmZero(addrParts[i]);\n}\nreturn addrParts.join(\".\");\n}\nfunction ReSetIpRmZero(ID)\n{\nvar num = arguments.length;\nvar re  = /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/;\nvar obj;\nif(num == 0) return;\nfor(i = 0;i < num; i++)\n{\nobj = getObj(arguments[i]);\nif((obj != null && obj.value != \"\" && obj.value != null )&&(re.test(obj.value) == true))\n{\nobj.value = IpRmZero(obj.value);\n}\n}\n}\nfunction ReSetValueRmZero(ID)\n{\nvar num = arguments.length;\nvar obj;\nfor(i = 0;i < num; i++)\n{\nobj = getObj(arguments[i]);\nif(obj != null && obj.value != null && obj.value != \"\")\n{\nobj.value = RmZero(obj.value);\n}\n}\n}\nString.prototype.ReplaceAll = function(value)\n{\nreturn this.replace(/\\s/g,value);\n}\nString.prototype.TrimLR = function()\n{\nreturn this.replace(/(^\\s*)|(\\s*$)/g, \"\");\n}\nString.prototype.LTrim = function()\n{\nreturn this.replace(/(^\\s*)/g, \"\");\n}\nString.prototype.RTrim = function()\n{\nreturn this.replace(/(\\s*$)/g, \"\");\n}\nfunction HtmlShowSpace(value,id)\n{\ngetObj(id).innerHTML = value.ReplaceAll(\"&nbsp;\");\n}\nfunction HtmlInputShowSpace(value,id)\n{\ngetObj(id).value = value.ReplaceAll(\"&nbsp;\");\n}\nfunction trimLSpaces(str){\nreturn str.LTrim();\n}\nfunction trimRSpaces(str){\nreturn str.RTrim();\n}\nfunction trimAllSpaces(str)\n{\nreturn str.ReplaceAll(\"\");\n}\nfunction trimLRSpaces(str)\n{\nreturn str.TrimLR();\n}\nfunction setNULLToSepPort(Port, Val)\n{\nvar portvalue=Port;\nif(portvalue==\"\")\n{\nportvalue = Val;\n}\nreturn portvalue;\n}\nfunction getSepPortToNULL(Port, Val)\n{\nvar portvalue=Port;\nif(portvalue==Val)\n{\nportvalue=\"\";\n}\nreturn portvalue;\n}\nfunction setNULLToPort(Port)\n{\nvar portvalue=Port;\nif(portvalue==\"\")\n{\nportvalue = \"-1\";\n}\nreturn portvalue;\n}\nfunction getPortToNULL(Port)\n{\nvar portvalue=Port;\nif(portvalue==\"-1\")\n{\nportvalue=\"\";\n}\nreturn portvalue;\n}\nfunction setNULLToMAC(MAC)\n{\nvar macaddr=MAC;\nif(macaddr==\"\")\n{\nmacaddr=\"00:00:00:00:00:00\";\n}\nreturn macaddr;\n}\nfunction getMACToNULL(MAC)\n{\nvar macaddr=MAC;\nif(macaddr==\"00:00:00:00:00:00\")\n{\nmacaddr=\"\";\n}\nreturn macaddr;\n}\nfunction setNULLToIP(IP)\n{\nvar ipvalue=IP;\nif(ipvalue==\"\")\n{\nipvalue=\"0.0.0.0\";\n}\nreturn ipvalue;\n}\nfunction getIPToNULL(IP)\n{\nvar ipvalue=IP;\nif(ipvalue==\"0.0.0.0\")\n{\nipvalue=\"\";\n}\nreturn ipvalue;\n}\nfunction setNULLToID(id)\n{\nvar i = 0;\nvar num = arguments.length;\nfor(;i < num; i++)\n{\ngetObj(arguments[i]).value = \"\";\n}\n}\nfunction encode64(input)\n{\nvar keyStr = \"ABCDEFGHIJKLMNOP\" + \"QRSTUVWXYZabcdef\" + \"ghijklmnopqrstuv\" + \"wxyz0123456789+/\" + \"=\";\ninput = escape(input);\nvar outputstr = \"\";\nvar char1, char2, char3 = \"\";\nvar enc1 = \"\";\nvar enc2 = \"\";\nvar enc3 = \"\";\nvar enc4 = \"\";\nvar i = 0;\ndo {\nchar1 = input.charCodeAt(i++);\nchar2 = input.charCodeAt(i++);\nchar3 = input.charCodeAt(i++);\nenc1 = char1 >> 2;\nenc2 = ((char1 & 3) << 4) | (char2 >> 4);\nenc3 = ((char2 & 15) << 2) | (char3 >> 6);\nenc4 = char3 & 63;\nif (isNaN(char2))\n{\nenc3 = enc4 = 64;\n}\nelse if (isNaN(char3))\n{\nenc4 = 64;\n}\noutputstr = outputstr + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);\nchar1 = char2 = char3 = \"\";\nenc1 = enc2 = enc3 = enc4 = \"\";\n} while (i < input.length);\nreturn outputstr;\n}\nfunction encode64_noescape(input){\nvar tmpStr = \"ABCDEFGHIJKLMNOP\" + \"QRSTUVWXYZabcdef\" + \"ghijklmnopqrstuv\" + \"wxyz0123456789+/\" + \"=\";\nvar output = \"\";\nvar tmpChrs = new Array();\nvar tmpEncs = new Array();\nvar i = 0, len = input.length;\ndo {\ntmpChrs[0] = input.charCodeAt(i++);\ntmpChrs[1] = input.charCodeAt(i++);\ntmpChrs[2] = input.charCodeAt(i++);\ntmpEncs[0] = tmpChrs[0] >> 2;\ntmpEncs[1] = ((tmpChrs[0] & 3) << 4) | (tmpChrs[1] >> 4);\ntmpEncs[2] = ((tmpChrs[1] & 15) << 2) | (tmpChrs[2] >> 6);\ntmpEncs[3] = tmpChrs[2] & 63;\nif(isNaN(tmpChrs[1])){\ntmpEncs[2] = tmpEncs[3] = 64;\n}else if(isNaN(tmpChrs[2])){\ntmpEncs[3] = 64;\n}\noutput = output +\ntmpStr.charAt(tmpEncs[0]) +\ntmpStr.charAt(tmpEncs[1]) +\ntmpStr.charAt(tmpEncs[2]) +\ntmpStr.charAt(tmpEncs[3]);\n} while (i < len);\nreturn output;\n}\nfunction decode64(inputstr)\n{\nvar outputstr = \"\";\nvar tmpChr = new Array();\nvar tmpEnc = new Array();\nvar i = 0;\nvar base64teststr = /[^A-Za-z0-9\\+\\/\\=]/g;\nvar keyString = \"ABCDEFGHIJKLMNOP\" + \"QRSTUVWXYZabcdef\" + \"ghijklmnopqrstuv\" + \"wxyz0123456789+/\" + \"=\";\nvar len = inputstr.length;\nif (base64teststr.exec(input))\n{\nalert(\"There were invalid base64 characters in the input text.\\n\" + \"Valid base64 characters are A-Z, a-z, 0-9, '+', '/', and '='\\n\" + \"Expect errors in decoding.\");\n}\ninputstr = inputstr.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\ndo {\ntmpEnc[0] = keyString.indexOf(inputstr.charAt(i++));\ntmpEnc[1] = keyString.indexOf(inputstr.charAt(i++));\ntmpEnc[2] = keyString.indexOf(inputstr.charAt(i++));\ntmpEnc[3] = keyString.indexOf(inputstr.charAt(i++));\ntmpChr[0] = (tmpEnc[0] << 2) | (tmpEnc[1] >> 4);\ntmpChr[1] = ((tmpEnc[1] & 15) << 4) | (tmpEnc[2] >> 2);\ntmpChr[2] = ((tmpEnc[2] & 3) << 6) | tmpEnc[3];\noutputstr = outputstr + String.fromCharCode(tmpChr[0]);\nif (tmpEnc[2] != 64)\n{\noutputstr = outputstr + String.fromCharCode(tmpChr[1]);\n}\nif (tmpEnc[3] != 64)\n{\noutputstr = outputstr + String.fromCharCode(tmpChr[2]);\n}\n} while (i < len);\nreturn unescape(outputstr);\n}\nfunction fnBreakWordAll(obj)\n{\nvar obj = obj ? obj : {},\niWord = obj.word ? obj.word : 13,\niRe = obj.re ? obj.re : '[a-zA-Z0-9]',\nbAll = obj.all ? obj.all : false,\nsClassName = obj.className ? obj.className : 'word-break-all',\naEls = obj.els || ( function()\n{\nvar aEls = [],\naAllEls = document.getElementsByTagName( '*' ),\nregStr = '(?:^|\\\\s+)' + sClassName + '(?:\\\\s+|$)',\nre = new RegExp( regStr );\nfor ( var i = 0, iLen = aAllEls.length; i < iLen; ++i )\n{\nif ( re.test( aAllEls[i].className ) )\n{\naEls.push(aAllEls[i]);\n}\n}\nreturn aEls;\n} )() || [],\nfnBreakWord = function( oEl )\n{\n\nif( !oEl || oEl.nodeType !== 1 )\n{\nreturn false;\n}\nelse if( oEl.currentStyle && typeof(oEl.currentStyle.wordWrap) === 'string' )\n{\nbreakWord = function( oEl )\n{\nif (oEl.runtimeStyle)\n{\noEl.runtimeStyle.wordWrap = 'break-word';\n}\nreturn true;\n};\nreturn breakWord( oEl );\n}\nelse if ( document.createTreeWalker )\n{\nvar trim = function  ( str )\n{\nstr = str.replace( /^\\s\\s*/, '' );\nvar ws = /\\s/,\ni = str.length;\nwhile ( ws.test( str.charAt( --i ) ) );\nreturn str.slice(0, i + 1);\n};\nbreakWord = function( oEl )\n{\nvar dWalker = document.createTreeWalker( oEl, NodeFilter.SHOW_TEXT, null, false ),\nnode,\nc = String.fromCharCode( '8203' ),\nregStr = '(' + iRe + '{0,' + iWord + '})',\nre = new RegExp( regStr );\nwhile ( dWalker.nextNode() )\n{\nnode = dWalker.currentNode;\nnode.nodeValue = trim( node.nodeValue ).split( re ).join( c );\n}\nreturn true;\n};\nreturn breakWord( oEl );\n}\n};\nvar len = aEls.length;\nfor( var i = 0; i < len; i++ )\n{\nvar sUa = navigator.userAgent,\nsTn = aEls[i].tagName.toLowerCase();\nif ( ( /Firefox/ ).test( sUa ) || ( ( /KHTML/ ).test( sUa ) && ( /Opera/ ).test( sUa ) || ( sTn === 'td' || sTn === 'th') ) || bAll )\n{\nfnBreakWord(aEls[i]);\n}\n}\n}\nfunction getInputtoHtml(id, value)\n{\nreturn (\"<input type=\\\"text\\\" class=\\\"uiNoBorder\\\" value=\\\"\"\n+ HTMLEnCode(value) + \"\\\"  id=\\\"\" + id + \"\\\"  readonly>\");\n}\nfunction getNameValue(id, value)\n{\nreturn (\"<input type=\\\"text\\\" class=\\\"uiNoBorder\\\" value=\\\"\"\n+ value + \"\\\"  id=\\\"\" + id + \"\\\"  readonly>\");\n}\nfunction getImage(src, strmethod, id)\n{\nvar imageHTML = \"<input type=\\\"button\\\" id=\\\"\"\n+ id\n+ \"\\\" onclick=\\\"\"\n+ strmethod\n+ \"\\\" class =\\\"multiImg\\\" \"\n+ \"style=\\\"background:url(\" + src + \");\\\">\";\nreturn (imageHTML);\n}\nfunction showIsEnableImage(isEnable, cellId)\n{\nvar strId = \"\";\nif(\"\" != cellId)\n{\nstrId = \"id=\" + cellId;\n}\nif(\"1\" == isEnable)\n{\nreturn (\"<input type=\\\"image\\\" src=\\\"img/enable.gif\\\" style=\\\"cursor:default\\\" \" + strId + \">\");\n}\nelse\n{\nreturn (\"<input type=\\\"image\\\" src=\\\"img/disable.gif\\\" style=\\\"cursor:default\\\" \" + strId + \">\");\n}\n}\nfunction getImagefrmClass(ImgClass, strmethod, id)\n{\nvar imageHTML = \"<input type=\\\"button\\\" id=\\\"\"\n+ id\n+ \"\\\" onclick=\\\"\"\n+ strmethod\n+ \"\\\" class =\\\"\"\n+ ImgClass\n+ \"\\\" >\";\nreturn (imageHTML);\n}\nfunction getXMLHTTPObj()\n{\nvar xmlHttp = null;\ntry\n{\n\nxmlHttp=new XMLHttpRequest();\n}\ncatch (e)\n{\ntry\n{\nxmlHttp=new ActiveXObject(\"Msxml2.XMLHTTP\");\n}\ncatch (e)\n{\ntry\n{\nxmlHttp=new ActiveXObject(\"Microsoft.XMLHTTP\");\n}\ncatch (e){}\n}\n}\nreturn xmlHttp;\n}\nvar xmlHTTPStatus = new Array();\nxmlHTTPStatus['Uninitialized']  = 0;\nxmlHTTPStatus['Open']           = 1;\nxmlHTTPStatus['Sent']           = 2;\nxmlHTTPStatus['Receiving']      = 3;\nxmlHTTPStatus['Loaded']         = 4;\nfunction AJAXObj()\n{\nthis.obj = getXMLHTTPObj();\nthis.postStr = \"\";\nthis.addPostItem = function(name, value)\n{\nthis.postStr += name + \"=\" + value + \"&\";\n};\nthis.post = function(requestURL, responseFunc)\n{\nthis.obj.open(\"POST\", requestURL, true);\nthis.obj.onreadystatechange = responseFunc;\nthis.obj.send(this.postStr);\nthis.postStr = \"\";\n};\nthis.getResponseText = function()\n{\nreturn this.obj.responseText;\n};\nthis.getReadyState = function()\n{\nreturn this.obj.readyState;\n};\nthis.getStatus = function()\n{\nreturn this.obj.status;\n};\n}\nfunction AJAXAsyncObj()\n{\nthis.obj = getXMLHTTPObj();\nthis.postStr = \"\";\nthis.addPostItem = function(name, value)\n{\nthis.postStr += name + \"=\" + value + \"&\";\n};\nthis.post = function(requestURL, responseFunc)\n{\nthis.obj.open(\"POST\", requestURL, false);\nthis.obj.onreadystatechange = responseFunc;\nthis.obj.send(this.postStr);\nthis.postStr = \"\";\n};\nthis.getResponseText = function()\n{\nreturn this.obj.responseText;\n};\nthis.getReadyState = function()\n{\nreturn this.obj.readyState;\n};\nthis.getStatus = function()\n{\nreturn this.obj.status;\n};\n}\nfunction getXMLDoc(xmlStr)\n{\nvar xmlDoc;\ntry\n{\nxmlDoc=new ActiveXObject(\"Microsoft.XMLDOM\");\nxmlDoc.async=\"false\";\nxmlDoc.loadXML(xmlStr);\nreturn(xmlDoc);\n}\ncatch(e)\n{\ntry\n{\nparser=new DOMParser();\nxmlDoc=parser.parseFromString(xmlStr,\"text/xml\");\nreturn(xmlDoc);\n}\ncatch(e)\n{\n}\n}\nreturn(null);\n}\nfunction getAJAXResponseXMLDoc(xmlStr)\n{\nif (xmlStr.match(/^\\s*<ajax_response_xml_root>/m) != null)\n{\nreturn getXMLDoc(xmlStr);\n}\nreturn null;\n}\nfunction XMLDocObj(xmlStr)\n{\nthis.xmlDoc = getAJAXResponseXMLDoc(xmlStr);\nthis.getXMLNodeValue = function(nodeName)\n{\nvar nodeValue = \"\";\ntry\n{\nnodeValue = this.xmlDoc.getElementsByTagName(nodeName)[0].childNodes[0].nodeValue;\n}\ncatch(e)\n{\n}\nreturn nodeValue;\n};\nthis.getXMLNode = function(nodeName)\n{\nreturn this.xmlDoc.getElementsByTagName(nodeName)[0];\n};\nthis.getCMAPIParaValue = function(OBJNAME, instID, paraName)\n{\nvar paraValue = \"\";\nvar instObj   = null;\nvar o = this.getXMLNode(OBJNAME);\nvar insts = o.childNodes;\nfor (var i=0; i<insts.length; i++)\n{\nvar attrs = insts[i].childNodes;\nfor (var j=0; j<attrs.length; j++)\n{\nif (attrs[j].nodeName==\"ID\" && instID==attrs[j].childNodes[0].nodeValue)\n{\ninstObj = insts[i];\nbreak;\n}\n}\n}\nif (null != instObj)\n{\nvar attrs = instObj.childNodes;\nfor (var j=0; j<attrs.length; j++)\n{\nif (attrs[j].nodeName == \"Parameters\")\n{\nvar paras = attrs[j].childNodes;\nfor (var k=0; k<paras.length; k++)\n{\nif (paras[k].nodeName == paraName)\n{\ntry\n{\nparaValue = paras[k].childNodes[0].nodeValue;\n}\ncatch(e)\n{\n}\nbreak;\n}\n}\n}\n}\n}\nreturn paraValue;\n};\nthis.getMIIDListArr = function(OBJNAME)\n{\nvar idListArr = new Array();\nvar arrIndex = 0;\nvar o = this.getXMLNode(OBJNAME);\nvar insts = o.childNodes;\nfor (var i=0; i<insts.length; i++)\n{\nvar attrs = insts[i].childNodes;\nfor (var j=0; j<attrs.length; j++)\n{\nif (attrs[j].nodeName==\"ID\")\n{\nidListArr[arrIndex++] = attrs[j].childNodes[0].nodeValue;\n}\n}\n}\nreturn idListArr;\n};\n}\nfunction appendHiddenInput(fid, id, value)\n{\nvar o = getObj(fid);\nif (o != null)\n{\nvar is = o.getElementsByTagName(\"input\"); \nvar il = is.length;\nfor (var i=0; i<il; i++)\n{\nvar sid = is[i].id;\nif ( id == sid )\n{\nis[i].value = value;\nbreak;\n}\n}\nif ( i == il )\n{\nvar i = document.createElement(\"input\");\ni.type = \"hidden\";\ni.id = id;\ni.name = id;\ni.value = value;\no.appendChild(i);\n}\n}\n}\nfunction deleteHiddenInput(fid, id)\n{\nvar o = getObj(fid);\nvar t = getObj(id);\no.removeChild(t);\n}\nfunction clearfSubmit(fid)\n{\nvar o = getObj(fid);\nvar clds = o.childNodes;\nwhile (clds.length > 0)\n{\no.removeChild(clds[0]);\n}\n}\nfunction checkSameInput(fid)\n{\nvar o = getObj(fid);\nif (o != null)\n{\nvar is = o.getElementByTagName(\"input\");\nvar il = is.length;\nfor (var i=0; i<il-1; i++)\n{\nvar sid = is[i].id;\nfor (var j=i+1; j<il; j++)\n{\nif (sid == is[j].id)\n{\nalert(fid+\" has Same Inputs, ID:\"+sid);\n}\n}\n}\n}\n}\nfunction getCookie(c_name)\n{\nif (document.cookie.length>0)\n{\nvar c_start=document.cookie.indexOf(c_name + \"=\");\nif ( -1 != c_start )\n{\nc_start = c_start + c_name.length + 1;\nvar c_end=document.cookie.indexOf(\";\", c_start);\nif ( c_end == -1 )\n{\nc_end=document.cookie.length;\n}\nreturn unescape( document.cookie.substring(c_start, c_end) );\n}\n}\nreturn null;\n}\nfunction setCookie(c_name,value,expiredays)\n{\nvar exdate = new Date();\nexdate.setDate( exdate.getDate() + expiredays );\nvar cookieContent = c_name + \"=\" + escape(value);\nif ( null != expiredays )\n{\ncookieContent += \"; expires=\" + exdate.toGMTString();\n}\ndocument.cookie = cookieContent;\n}\nfunction HTMLEnCode(str)\n{\nstr = str.replace(/&/g, \"&amp;\");\nstr = str.replace(/</g, \"&lt;\");\nstr = str.replace(/>/g, \"&gt;\");\nstr = str.replace(/ /g, \"&nbsp;\");\nstr = str.replace(/\\\"/g, \"&quot;\");\nreturn str;\n}\nfunction HTMLDeCode(str)\n{\nstr = str.replace(/&lt;/g, \"<\");\nstr = str.replace(/&gt;/g, \">\");\nstr = str.replace(/&nbsp;/g, \" \");\nstr = str.replace(/&quot;/g, \"\\\"\");\nstr = str.replace(/&amp;/g, \"&\");\nreturn str;\n}\nfunction HTMLAddBr(str, wdth)\n{\nvar str1 = \"\";\nfor (var i=0; i<Math.ceil(str.length/wdth); i++)\n{\nstr1 += HTMLEnCode( str.substr(i*wdth, wdth) );\nif ( Math.ceil(str.length/wdth) != i+1 )\n{\nstr1 += \"<br>\";\n}\n}\nreturn str1;\n}\nfunction CheckLen(obj,val)\n{\nif (val.length == obj.maxLength)\n{\nvar curIndex = obj.id.match(/\\d+$/);\nvar nextIndex = parseInt(curIndex, 10)+1;\nvar nextID = obj.id.replace(/\\d+$/,\"\")+nextIndex;\nif (getObj(nextID) == null)\n{\nreturn;\n}\ndocument.getElementById(nextID).focus();\ndocument.getElementById(nextID).select();\n}\nelse if (val.length == 0)\n{\nvar curIndex = obj.id.match(/\\d+$/);\nvar prevIndex = parseInt(curIndex, 10);\nif (prevIndex > 1)\n{\nprevIndex = prevIndex - 1;\n}\nvar prevID = obj.id.replace(/\\d+$/,\"\")+prevIndex;\nif (getObj(prevID) == null)\n{\nreturn;\n}\ndocument.getElementById(prevID).focus();\ndocument.getElementById(prevID).select();\n}\nelse\n{\nreturn;\n}\n}\nfunction jslSparkItem(id)\n{\nfor(var i = 0;i < arguments.length; i++)\n{\nvar para = document.createElement(\"font\");\npara.innerHTML = \"&nbsp;*\";\npara.color = \"red\";\npara.style.verticalAlign = \"middle\";\ngetObj(arguments[i]).parentNode.insertBefore(para, getObj(arguments[i]).nextSibling);\n}\n}\nfunction jslShowPassTip(id,tip)\n{\nif(getObj(\"passTip\") == null)\n{\nvar tipObj = document.createElement(\"div\");\ntipObj.innerHTML = \"<p>\"+tip+\"</p>\";\ntipObj.className = \"staticInfoHint\";\ntipObj.id = \"passTip\";\nvar Node = getObj(id).parentNode;\nvar NodeName;\nwhile(1)\n{\nNodeName = Node.nodeName;\nif(NodeName.toLowerCase() == \"table\")\nbreak;\nNode = Node.parentNode;\n}\nNode.parentNode.insertBefore(tipObj, Node);\n}\nelse\n{\nif(getDisplay(\"passTip\") == false)\njslEnDisplay(\"passTip\");\n}\n}\nfunction createHiddenInput(name,value)\n{\nvar hiddenInput = document.createElement(\"input\");\nhiddenInput.name=name;\nhiddenInput.value=value;\nhiddenInput.type=\"hidden\";\nreturn hiddenInput;\n}\nfunction moveErrLayer(left, top)\n{\ndocument.getElementById(\"myLayer\").style.left = left + \"px\";\ndocument.getElementById(\"myLayer\").style.top  = top  + \"px\";\n}\nfunction ShowNote(notetitle, msg)\n{\ndocument.getElementById(\"errnote\").innerHTML = notetitle;\ndocument.getElementById(\"errmsg\").innerHTML  = msg;\ndocument.getElementById(\"myLayer\").style.visibility = \"visible\" ;\n}\nfunction ShowNoteNew(ctl, notetitle, msg)\n{\ndocument.getElementById(\"errnote\").innerHTML = notetitle;\ndocument.getElementById(\"errmsg\").innerHTML  = msg;\ndocument.getElementById(\"myLayer\").style.visibility = \"visible\" ;\nif(ctl != null && ctl.disabled == false)\n{\ntry\n{\nctl.focus();\n}\ncatch(e)\n{\n}\n}\n}\nfunction ShowNoteForCom(frmid, fntid, msg)\n{\nvar fntmsg;\nvar strmsg;\nif(document.getElementById(fntid) == null)\n{\nif(fntid == null)\nfntmsg = \"\";\nelse\nfntmsg = fntid;\n}\nelse\n{\nfntmsg = document.getElementById(fntid).innerHTML;\n}\nstrmsg = fntmsg + msg;\nShowNoteNew(document.getElementById(frmid), \"Note\", strmsg);\n}\nfunction ShowError(ctl, msg)\n{\nvar tmpStr = g_errorInfo;\nif(tmpStr == \"undefined\")\n{\ntmpStr = \"Error\";\n}\ndocument.getElementById(\"errnote\").innerHTML = tmpStr;\ndocument.getElementById(\"errmsg\").innerHTML = msg;\ndocument.getElementById(\"myLayer\").style.visibility = \"visible\" ;\nif(ctl != null && ctl.disabled == false)\n{\ntry\n{\nctl.focus();\n}\ncatch(e)\n{\n}\n}\n}\nfunction ShowErrorForCom(frmid, fntid, msg)\n{\nvar fntmsg;\nvar strmsg;\nif(document.getElementById(fntid) == null)\n{\nif(fntid == null)\nfntmsg = \"\";\nelse\nfntmsg = fntid;\n}else\n{\nfntmsg = document.getElementById(fntid).innerHTML;\n}\nstrmsg = fntmsg + msg;\nShowError(document.getElementById(frmid),strmsg );\n}\nfunction getMsgFormArray(str, arg)\n{\nvar errid = 0;\nvar min   = 0;\nvar max   = 0;\nvar param = -1;\nvar msg   = \"\";\nvar num = arg.length;\nif(num == 1)\n{\nerrid = arg[0];\n}\nelse\nif(num == 3)\n{\nerrid = arg[0];\nmin   = arg[1];\nmax   = arg[2];\n}\nelse\nif(num == 2)\n{\nerrid = arg[0];\nparam = arg[1];\n}\nelse\nreturn null;\nfor(var i = 0; i < str.length; i ++)\n{\nif(typeof(str[i]) == \"undefined\")\n{\nalert(\"Initializing array error, please check your code��i = \"+ i);\nreturn null;\n}\nif(errid == str[i][0])\n{\nif(min == max && min == 0)\n{\nif(param == -1)\n{\nmsg = str[i][1];\n}\nelse\n{\nmsg = str[i][1] + param + str[i+1][1];\n}\n}\nelse\nmsg = str[i][1] + min + \"~\" + max + str[i+1][1];\nreturn msg;\n}\n}\nreturn null;\n}\nfunction getEvent(event) {\nvar ev = event || window.event;\nif (!ev)\n{\nvar c = this.getEvent.caller;\nwhile (c)\n{\nev = c.arguments[0];\nif (ev &&\n(Event == ev.constructor || MouseEvent == ev.constructor))\n{\nbreak;\n}\nc = c.caller;\n}\n}\nreturn ev;\n}\nfunction setTextFocusEnd()\n{\nvar evt = getEvent();\nif (evt.srcElement)\n{\nvar elm = evt.srcElement;\nvar textRange  = elm.createTextRange();\ntextRange.moveStart('character', elm.value.length);\ntextRange.collapse(true);\ntextRange.select();\n}\n}\nfunction getwidth(){\nreturn (document.body.clientWidth+document.body.scrollLeft);\n}\nfunction getheight(){\nreturn (document.body.scrollHeight);\n}\nfunction getleft(w){\nvar bw=document.body.clientWidth;\nw=parseFloat(w);\nreturn (bw/2-w/2+document.body.scrollLeft);\n}\nfunction gettop(h){\nvar bh=document.body.clientHeight;\nh=parseFloat(h);\nreturn 100;\n}\nfunction create_mask()\n{\nvar mask=document.createElement(\"div\");\nmask.id=\"mask\";\nmask.style.position=\"absolute\";\nmask.style.filter=\"progid:DXImageTransform.Microsoft.Alpha(style=4,opacity=25)\";\nmask.style.opacity=0.4;\nmask.style.zIndex=1000;\ndocument.body.appendChild(mask);\nre_mask();\n}\nfunction create_msgbox(w,h,t)\n{\nvar box=document.createElement(\"div\");\nbox.id=\"msgbox\";\nbox.style.position=\"absolute\";\n\nbox.style.width=w+\"px\";\nbox.style.height=h+\"px\";\n\nbox.style.overflow=\"visible\";\nbox.innerHTML=t;\nbox.style.zIndex=1001;\ndocument.body.appendChild(box);\nre_pos();\n}\nfunction re_mask()\n{\nvar mask=document.getElementById(\"mask\");\nif(null==mask)return;\nmask.style.background=\"black\";\nmask.style.top=\"0px\";\nmask.style.left=\"0px\";\nmask.style.width=getwidth()+\"px\";\nmask.style.height=getheight()+\"px\";\n}\nfunction re_pos()\n{\nwindow.document.onkeydown=showKeyDown;\nvar box=document.getElementById(\"msgbox\");\nif(null!=box)\n{\nvar w=box.style.width;\nvar h=box.style.height;\n\nbox.style.left=getleft(w)+\"px\";\n\nbox.style.top=gettop(h)+\"px\";\n}\n}\nfunction remove_msgbox()\n{\nvar mask=document.getElementById(\"mask\");\nvar msgbox=document.getElementById(\"msgbox\");\nif(null==mask&&null==msgbox)\n{\nreturn;\n}\ndocument.body.removeChild(mask);\ndocument.body.removeChild(msgbox);\n}\nfunction msgbox(msgJSONData)\n{\nwindow.parent.scrollTo(0,0);\ncreate_mask();\nvar temp=\"<table id=\\\"Tbl_msgbox\\\" cellpadding=\\\"0\\\" cellspacing=\\\"0\\\" class=\\\"msgtb\\\">\";\ntemp+=\"<tr><td width=\\\"355\\\" height=\\\"22\\\" class=\\\"msgtr1\\\" colspan=2>\"+msgJSONData.title+\"</td></tr>\";\ntemp+=\"<tr><td width=\\\"30\\\" height=\\\"75\\\" class=\\\"msgtr2\\\">&nbsp;<img src=\\\"img/infomsg.gif\\\">&nbsp;&nbsp;</td><td width=\\\"325\\\" class=\\\"msgtr2\\\"><font face=\\\"����\\\" size=\\\"2\\\">\"+msgJSONData.content+\"</font></td>\";\ntemp+=\"</tr><tr><td width=\\\"355\\\" height=\\\"22\\\" align=\\\"center\\\" class=\\\"msgtr3\\\" colspan=2><input name=\\\"msgconfirmb\\\" type=\\\"button\\\" class=\\\"msgbutton\\\" id=\\\"msgconfirmb\\\" value=\\\"\" + msgJSONData.confirmLabel + \"\\\" onclick=\\\"remove_msgbox();\"+msgJSONData.confirmCallback+\";\\\">\";\nif(\"yes\"==msgJSONData.cancelDisplay){temp+=\"&nbsp;&nbsp;<input name=\\\"msgcancelb\\\" type=\\\"button\\\" class=\\\"msgbutton\\\" id=\\\"msgcancelb\\\" value=\\\"\" + msgJSONData.cancelLabel + \"\\\" onclick=\\\"remove_msgbox();\\\"></td>\";}\ntemp+=\"</tr><tr><td class=\\\"msgtr4\\\" width=\\\"355\\\" height=\\\"8\\\" colspan=2></td></tr></table>\";\ncreate_msgbox(400,200,temp);\nif(msgJSONData.focusButtun==\"Confirm\")\n{\ndocument.getElementById(\"msgconfirmb\").focus();\n}\nelse\n{\ndocument.getElementById(\"msgcancelb\").focus();\n}\n}\nfunction showKeyDown(e)\n{\ne=(e)?e:window.event;\n\nvar box=document.getElementById(\"msgbox\");\nif(null!=box)\n{\nif(e.keyCode == 37)\n{\ndocument.getElementById(\"msgconfirmb\").focus();\n}\nif(e.keyCode == 39)\n{\ndocument.getElementById(\"msgcancelb\").focus();\n}\n}\n}\nfunction addEvent(element, type, handler)\n{\nif (element.addEventListener)\n{\nelement.addEventListener(type, handler, false);\n}\nelse\n{\nif (!handler.$$guid)\n{\nhandler.$$guid = addEvent.guid++;\n}\nif (!element.events) element.events = {};\nvar handlers = element.events[type];\nif (!handlers)\n{\nhandlers = element.events[type] = {};\nif (element[\"on\" + type]) {\nhandlers[0] = element[\"on\" + type];\n}\n}\nhandlers[handler.$$guid] = handler;\nelement[\"on\" + type] = handleEvent;\n}\n};\naddEvent.guid = 1;\nfunction removeEvent(element, type, handler)\n{\nif (element.removeEventListener) {\nelement.removeEventListener(type, handler, false);\n}\nelse\n{\nif (element.events && element.events[type])\n{\ndelete element.events[type][handler.$$guid];\n}\n}\n};\nfunction handleEvent(event) {\nvar retValue = true;\nevent = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);\nvar handlers = this.events[event.type];\nfor (var i in handlers) {\nthis.$$handleEvent = handlers[i];\nif (this.$$handleEvent(event) === false)\n{\nretValue = false;\n}\n}\nreturn retValue;\n};\nfunction fixEvent(event)\n{\nevent.preventDefault = fixEvent.preventDefault;\nevent.stopPropagation = fixEvent.stopPropagation;\nreturn event;\n};\nfixEvent.preventDefault = function() {\nthis.returnValue = false;\n};\nfixEvent.stopPropagation = function() {\nthis.cancelBubble = true;\n};\n\n\n\nif(top.location != self.location)\n{\ntop.location=self.location;\n}\nvar SetTFlag = 0;\nvar maxtime;\nvar interval;\nvar locktime = 60;\ndocument.onkeydown = keyDownSearch;\n\nlocktime = 60;\n\nfunction keyDownSearch(ev){\nvar ev = ev || window.event;\nvar code = ev.keyCode || ev.which || ev.charCode;\nif (code == 13) {\ndosubmit();\nreturn false;\n}\nreturn true;\n}\nfunction setTime()\n{\nif(window.name>=locktime || window.name<0 || window.name==\"\")\n{\nmaxtime = Math.min(locktime, 0 + locktime - 45317);\n}\nelse\n{\nmaxtime = window.name;\n}\nif(maxtime>=0)\n{\nseconds = maxtime;\ngetObj(\"time\").innerHTML=seconds+\" secs\";\nif (maxtime == 0)\n{\nsetDisable();\nSetTFlag =0;\nwindow.name=\"\";\nif(interval)\n{\nclearInterval(interval);\ninterval = 0;\n}\n}\nelse\n{\n--maxtime;\nSetTFlag = 1;\nwindow.name = maxtime;\n}\n}\n}\nfunction setinner(type)\n{\nif (SetTFlag ==0)\n{\ngetObj(\"myLayer\").style.visibility = type ;\n}\n}\nfunction ChangeLang()\n{\nvar lang = \"English\";\nvar submitForm = document.createElement(\"form\");\nsubmitForm.method = 'post';\nsubmitForm.action = \"\";\ndocument.body.appendChild(submitForm);\n\nvar actionElement = createHiddenInput(\"action\", \"setlang\"),\nlangElement = createHiddenInput(\"_lang\", \"\");\nsubmitForm.appendChild(actionElement);\nsubmitForm.appendChild(langElement);\nlangElement.disabled = false;\ngetObj(\"Frm_Username\").disabled = true;\ngetObj(\"Frm_Password\").disabled = true;\nif(true != getObj(\"TestLang01\").disabled)\n{\nif (\"English\" == lang)\n{\nlangElement.value = \"Chinese\";\n}\nelse if (\"Chinese\" == lang)\n{\nlangElement.value = \"English\";\n}\ngetObj(\"Frm_Username\").disabled = true;\ngetObj(\"Frm_Password\").disabled = true;\ngetObj(\"LoginId\").disabled = true;\nif(getObj(\"Frm_Validatecode\") != null)\n{\ngetObj(\"Frm_Validatecode\").disabled = true;\ngetObj(\"RefreshId\").disabled = true;\n}\nvar ObjAct = getObj(\"DevActive\");\nif(ObjAct != null)\n{\nObjAct.disabled = true;\n}\nsubmitForm.submit();\n}\n}\nfunction SetCookie(name,value)\n{\nvar Days = 30;\nvar exp = new Date();\nexp.setTime(exp.getTime() + Days*24*60*60*1000);\ndocument.cookie = name + \"=\"+ escape (value)\n+ \";expires=\" + exp.toGMTString();\n}\nfunction getCookie(name)\n{\nvar arr = document.cookie.match(new RegExp(\"(^| )\"+name+\"=([^;]*)(;|$)\"));\nif(arr != null)\n{\nreturn unescape(arr[2]);\n}\nreturn null;\n}\nfunction delCookie(name)\n{\nvar exp = new Date();\nexp.setTime(exp.getTime() - 1);\nvar cval = getCookie(name);\nif( cval!=null )\n{\ndocument.cookie= name + \"=\"+cval+\";expires=\"+exp.toGMTString();\n}\n}\nfunction IsBrowserSupportCookie()\n{\nvar support = false;\nSetCookie('cookie_test','1');\nvar cookie_test = getCookie('cookie_test');\nif( '1' == cookie_test)\n{\nsupport = true;\n}\ndelCookie('cookie_test');\nreturn support;\n}\nfunction focusUsername()\n{\nif (getObj(\"Frm_Username\").disabled == false)\n{\ngetObj(\"Frm_Username\").focus();\n}\nif(getObj(\"Frm_Validatecode\") != null)\n{\nvar randnum = MathRand();\ngetObj(\"ImgID\").src = \"/queryImg.gif?\"+randnum;\n}\n}\n</script>\n</head>\n\n<body onload = \"focusUsername();\">\n<div id=\"container\">\n<div id=\"myLayer\" onmousedown=\"setinner('hidden')\">\n<iframe id=\"myiframe\" style=\"position: absolute; width: 179px; height: 88px; border: 1px none #000000; z-index: -1; filter:alpha(opacity=0); -moz-opacity:0\">\n</iframe>\n<div id=\"layer_login_title\">\n<div style=\"position:relative; left:35px; top:8px;\" >\n<font  class=\"note\" id=\"errnote\">&nbsp;Error</font>\n</div>\n</div>\n<div id=\"layer_login_content\">\n<span>\n&nbsp;&nbsp;<font id=\"errmsg\" class=\"notecontent\" ></font><span id=\"time\" style=\"color:red;display:none;\"></span>\n</span>\n</div>\n</div>\n<!--head���ֿ�ʼ-->\n\n<div id=\"head\">\n\n<div class=\"type\"><font id=\"\">F680</font></div>\n<div id=\"banner_tot\"></div>\n</div>\n<!--head���ֽ���-->\n<!--content���ֿ�ʼ-->\n<div id=\"loginArea\">\n<!--���ݿ�ʼ-->\n<div class=\"login_frame\">\n<ul class=\"login_title\">\n<li class=\"login_title_left\"></li>\n<li class=\"login_title_center\">Please login to continue...</li>\n\n<a id=\"TestLang\" style=\"cursor:pointer\" href=\"#\" ><li id=\"TestLang01\" class=\"login_title_centercn\" style=\"\" onclick=\"ChangeLang();\"></li></a>\n\n<li class=\"login_title_right\"></li>\n</ul>\n\n<div class=\"content login_3bb_content\">\n<ul class=\"login_blank\"></ul>\n<ul class=\"login_ul_1\">\n<li class=\"login_li_1\"><span>Username</span></li>\n<li class=\"login_li_2\">\n<input type=\"text\" class=\"username\" name=\"Username\" id=\"Frm_Username\" autocomplete=\"new-password\" >\n</li>\n\n</ul>\n<ul class=\"login_blank\"></ul>\n<ul class=\"login_ul_1\">\n<li class=\"login_li_1\"><span>Password</span></li>\n<li class=\"login_li_2\">\n<input type=\"password\" class=\"password\" name=\"Password\"  id=\"Frm_Password\" autocomplete=\"new-password\">\n</li>\n</ul>\n<!-- 3bb������֤��  -->\n<ul class=\"login_blank\"></ul>\n<ul class=\"login_ul_1\">\n<li class=\"login_li_1\"><span>Validate Code</span></li>\n<li class=\"login_li_2\">\n<input type=\"text\" class=\"username\" name=\"Validatecode\" id=\"Frm_Validatecode\" autocomplete=\"new-password\" />\n</li>\n</ul>\n<ul class=\"login_3bb_blank\"></ul>\n<ul class=\"validate_ul_1\">\n<li class=\"validate_left\"></li>\n<li class=\"validate_img\"><img id=\"ImgID\" src=\"\" width=\"100px\" height=\"35px\" alt=\"please wait\" onload=\"imgLoad()\" /></li>\n<li class=\"login_li_3\">\n<input class=\"val_refresh\" type=\"button\" name=\"RefreshId\" id=\"RefreshId\" value=\"Refresh\" onclick=\"validatecodeRefresh();\" disabled=\"true\" />\n</li>\n</ul>\n<ul class=\"login_3bb_blank\"></ul>\n<ul class=\"login_ul_3bb_1\">\n<li class=\"login_li_3bb_1\"><span>Enter the characters(without spaces) shown in the image</span></li>\n</ul>\n<ul class=\"login_blank\"></ul>\n<ul class=\"login_ul_1\">\n<li class=\"login_li_3bb_left\"></li>\n<li class=\"login_li_3bb_3\">\n<input class=\"login\" type=\"submit\"  id=\"LoginId\"  value=\"Login\" onclick=\"dosubmit()\" />\n</li>\n</ul>\n<ul class=\"login_blank\"></ul>\n</div>\n</div>\n\n<!--���ݽ���-->\n</div>\n<!--bottom���ֿ�ʼ-->\n\n<div style=\"font-family: Arial;font-size: 12px;text-align:center;\">\n&copy;2008-2019 ZTE Corporation. All rights reserved.\n</div>\n\n<div class=\"bottom_line\"></div>\n<div id=\"bottomx\"></div>\n<!--bottom���ֽ���-->\n</div>\n</body>\n</html>\n<script>\n\nvar bBrowserCookieOn = IsBrowserSupportCookie();\nif ( bBrowserCookieOn == false )\n{\ngetObj(\"errmsg\").innerHTML = \"Your browser's cookie functionality is turned off, please turn it on before login.\";\ngetObj(\"myLayer\").style.visibility = \"visible\" ;\n}\nelse\n{\n\nwindow.name=\"\";\n\n}\nfunction getmsg(id)\n{\nvar str  = new Array();\nstr[0]  = new Array(110, \"Attention!\");\nstr[1]  = new Array(116, \"Confirm\");\nstr[2]  = new Array(117, \"Cancel\");\nstr[3]  = new Array(120, \"The system default password is not modified and it is recommended that you modify your login password for security reasons.\");\nreturn getMsgFormArray(str, arguments);\n}\nfunction SetDisabled()\n{\ngetObj(\"Frm_Username\").disabled = true;\ngetObj(\"Frm_Password\").disabled = true;\nif(getObj(\"Frm_Validatecode\") != null)\n{\ngetObj(\"Frm_Validatecode\").disabled = true;\ngetObj(\"RefreshId\").disabled = true;\n}\ngetObj(\"LoginId\").disabled = true;\nvar ObjAct = getObj(\"TestLang01\");\nif(ObjAct != null)\n{\nObjAct.disabled = true;\n}\ngetObj(\"myLayer\").style.visibility = \"visible\" ;\ngetObj(\"time\").style.display = \"\" ;\ninterval = setInterval(\"setTime()\",1000);\n}\nfunction setDisable()\n{\nif (SetTFlag == 1)\n{\ngetObj(\"Frm_Username\").disabled = false;\ngetObj(\"Frm_Password\").disabled = false;\nif(getObj(\"Frm_Validatecode\") != null)\n{\ngetObj(\"Frm_Validatecode\").disabled = false;\ngetObj(\"RefreshId\").disabled = false;\n}\ngetObj(\"LoginId\").disabled = false;\nvar ObjAct = getObj(\"TestLang01\");\nif(ObjAct != null)\n{\nObjAct.disabled = false;\n}\ngetObj(\"time\").style.display = \"none\";\ngetObj(\"myLayer\").style.visibility = \"hidden\";\n}\n}\nfunction submitPage1()\n{\nvar ajaxObjSuccPage = new AJAXObj();\nvar url = \"ajax_checkpass_gch.gch\";\nfunction setNextpage()\n{\nif ( ajaxObjSuccPage.getReadyState() == 4 && 200 == ajaxObjSuccPage.getStatus())\n{\nvar resultText = ajaxObjSuccPage.getResponseText();\nif(-1 != resultText.indexOf(\"setpage_OK\"))\n{\npageSubmitexpmd5();\n}\n}\n}\najaxObjSuccPage.addPostItem(\"opType\", \"setnextpage\");\najaxObjSuccPage.post(url, setNextpage);\n}\nfunction dosubmit()\n{\nif (getObj(\"Frm_Username\").value == \"\")\n{\ngetObj(\"errmsg\").innerHTML = \"Username cannot be empty.\";\ngetObj(\"myLayer\").style.visibility = \"visible\" ;\nreturn;\n}\nif(getObj(\"Frm_Validatecode\") != null)\n{\nvar vaCode = getObj(\"Frm_Validatecode\").value;\nif(vaCode == \"\")\n{\ngetObj(\"errmsg\").innerHTML = \"Please input the validate code.\";\ngetObj(\"myLayer\").style.visibility = \"visible\";\nreturn;\n}\n}\n\nsubpageSubmit();\n\n}\n\nfunction MathRand()\n{\nvar Num=\"\";\nfor(var i=0;i<6;i++)\n{\nNum+=Math.floor(Math.random()*10);\n}\nreturn Num;\n}\nfunction validatecodeRefresh()\n{\nvar randnum = MathRand();\ngetObj(\"ImgID\").src = \"/queryImg.gif?\"+randnum;\njslDisable(\"RefreshId\");\ngetObj(\"Frm_Validatecode\").value = \"\";\n}\nfunction subpageSubmit()\n{\ngetObj(\"LoginId\").disabled = true;\nvar ObjAct = getObj(\"DevActive\");\nif(ObjAct != null)\n{\nObjAct.disabled = true;\n}\npasswordSHA256();\n}\nfunction pageSubmitexpmd5()\n{\ngetObj(\"LoginId\").disabled = true;\nvar ObjAct = getObj(\"DevActive\");\nif(ObjAct != null)\n{\nObjAct.disabled = true;\n}\ngetObj(\"Frm_Logintoken\").value = \"0\";\ndocument.fLogin.submit();\n}\nfunction imgLoad()\n{\ngetObj(\"RefreshId\").disabled = false;\n}\nfunction passwordSHA256()\n{\nvar after_Password\t=  getObj(\"Frm_Password\").value;\nvar before_Password;\nvar pwd_random = Math.round(Math.random()*89999999)+10000000;\nbefore_Password = sha256(after_Password + pwd_random);\nvar submitForm = document.createElement(\"form\");\nsubmitForm.method = 'post';\nsubmitForm.action = \"\";\ndocument.body.appendChild(submitForm);\n\nvar actionElement = createHiddenInput(\"action\", \"login\"),\nnameElement = createHiddenInput(\"Username\", getObj(\"Frm_Username\").value),\npassElement = createHiddenInput(\"Password\", before_Password),\ntokenElement = createHiddenInput(\"Frm_Logintoken\", \"0\"),\nrandnumElement = createHiddenInput(\"UserRandomNum\", pwd_random);\ncheckTokenElement = createHiddenInput(\"Frm_Loginchecktoken\", \"07825311083531447474\");\nsubmitForm.appendChild(actionElement);\nsubmitForm.appendChild(nameElement);\nsubmitForm.appendChild(passElement);\nsubmitForm.appendChild(tokenElement);\nsubmitForm.appendChild(randnumElement);\nsubmitForm.appendChild(checkTokenElement);\nif(getObj(\"Frm_Validatecode\") != null)\n{\nvar validCodeElement = createHiddenInput(\"Validatecode\", getObj(\"Frm_Vali",
          "body_murmur": 739648022,
          "body_sha256": "e83e33dff6f9930a164a25fd4947f850f385ec9692fa9c8ae60ffcb41b132a1a",
          "content_length": 39377,
          "headers": {
            "accept_ranges": [
              "bytes"
            ],
            "cache_control": [
              "no-cache,no-store"
            ],
            "content_length": [
              "39377"
            ],
            "content_security_policy": [
              "default-src 'self' 'unsafe-inline' 'unsafe-eval' data:"
            ],
            "content_type": [
              "text/html; charset=utf-8"
            ],
            "pragma": [
              "no-cache"
            ],
            "server": [
              ""
            ],
            "set_cookie": [
              "_TESTCOOKIESUPPORT=1; PATH=/; HttpOnly; Secure"
            ],
            "x_content_type_options": [
              "nosniff"
            ],
            "x_frame_options": [
              "DENY"
            ],
            "x_xss_protection": [
              "1; mode=block"
            ]
          },
          "protocol": "HTTP/1.1",
          "request": {
            "headers": {
              "accept": [
                "*/*"
              ],
              "user_agent": [
                "Mozilla/5.0 (compatible; Odin; https://docs.getodin.com/)"
              ]
            },
            "method": "GET",
            "url": {
              "host": "182.52.58.75",
              "path": "",
              "scheme": "https"
            }
          },
          "status_code": 200,
          "title": "F680"
        },
        "tls": {
          "certificate": {
            "extensions": {
              "basic_constraints": {
                "is_ca": true
              },
              "key_usage": {
                "certificate_sign": false,
                "content_commitment": false,
                "crl_sign": false,
                "data_encipherment": false,
                "decipher_only": false,
                "digital_signature": true,
                "encipher_only": false,
                "key_agreement": false,
                "key_encipherment": true,
                "non_repudiation": true
              }
            },
            "fingerprint_md5": "A601C9F7D23FE6BFE93F884C1E1AE804",
            "fingerprint_sha1": "DB2CF636B2091612BDDF1E591706D472B6400CBD",
            "fingerprint_sha256": "4CAA880F5DB7A65CB4554B8A07D7D178F4BC8076FA18A83A980E805E18998532",
            "issuer": {
              "common_name": [
                "ZTE-ROOT-CA"
              ],
              "country": [
                "CN"
              ],
              "email_address": [
                "[email protected]"
              ],
              "locality": [
                "Shenzhen"
              ],
              "organization": [
                "ZTE"
              ],
              "organizational_unit": [
                "Wireline Product R&D Institute"
              ],
              "province": [
                "GuangDong"
              ]
            },
            "issuer_dn": "/C=CN/ST=GuangDong/L=Shenzhen/O=ZTE/OU=Wireline Product R&D Institute/CN=ZTE-ROOT-CA/[email protected]",
            "redacted": false,
            "revocation": {
              "ocsp": {
                "reason": "UNKNOWN",
                "revoked": false
              }
            },
            "serial_number": "10896366476775576542",
            "signature": {
              "algorithm": {
                "name": "SHA512-RSA",
                "oid": "1.2.840.113549.1.1.13"
              },
              "self_signed": false,
              "value": "NzYxNTUyYWEyNTk3MDA0NTZmOTE5ZTlhN2M0MzIwNWQxNjQyZGExOGE3OTI1Njg4YTk2MWYwYWEwZDk0OTU5MmRkODk0MmJlMDJhNDI1YWRmNWM3Mzk0YTBiNDU1ZDVmODRmN2EzZjczN2JkYWM1Yjc4YmQ3YjFlNzY5YTMyY2E1MzJlOTg0NTM1MTIwZmZlYjg3YjY4MmE3OGE4MDFhNmFlOGQzZWVmYjM5NTM4ODRiYjYyZmI1ZDRjMjFmZGQ1OThmMTAzNTAyZGYxYjA2YWUxYmU0ZGQ4NTMzNjk0YjBlZmUyOWJkNjY2YTRlNGZmYjBmNTYxNjYwMDY0MTY5ZThiOTIwZjkwNzUzMmFmMWFmMDhmZDM2ZmQzNWI0ZGNlNDZjYzhkZWRkODk0YjBjNzJhZjBhN2YwODM1ZDQ3NWFiMDc2MTQzNzQ5ZGIwZDU5MTI4MzRjNDNjMGMyYjU2NDg2NWJkMmEyODQ0MzhhZjI5MTgzYTY0OWRlOGE3OGE4ODkwMjY3NzJhM2U0OGE1OGMxZWVjNzBlODAzZjhjYzE0NDFkYjBkNDRjOGE5MzRkM2IwNzMwZTYzOTRhMDAzMGFjOGZkMzcxM2FjNmJlMTRiMWM4MTI1MDdhYWRmM2Y1MDE5NjFjZWNjNzQzYTViMzVjMjQ3ZWYyNzVlMTUyZjk="
            },
            "subject": {
              "common_name": [
                "192.168.1.1"
              ],
              "country": [
                "CN"
              ],
              "email_address": [
                "[email protected]"
              ],
              "locality": [
                "Nanjing"
              ],
              "organization": [
                "ZTE"
              ],
              "organizational_unit": [
                "FN Nanjing Software Development Dept III"
              ],
              "province": [
                "JiangSu"
              ]
            },
            "subject_alt_name": {
              "dns_names": [
                "192.168.1.1"
              ],
              "extended_dns_names": []
            },
            "subject_dn": "/C=CN/ST=JiangSu/L=Nanjing/O=ZTE/OU=FN Nanjing Software Development Dept III/CN=192.168.1.1/[email protected]",
            "subject_key_info": {
              "_key": "rsa",
              "dh": [],
              "dsa": [],
              "ecdsa": [],
              "fingerprint_sha256": "5d1013f24374f498e411193e1b70b757630b27a2b02054e7e9804490673f1327",
              "key_algorithm": "RSA",
              "rsa": {
                "exponent": 65537,
                "length": 2048,
                "modulus": "MHhiZDA5MDRmYzIwZjJiOGRjMjM0MGRkYzZjNWQzOTlmYWIxZmY3ZDZjMzE1NmI1MmM2ZGU3OTgzNDhkOTgxZWY0N2Y4YmFlOTBjOTNkOTRiMGJjMjZkMWVlZGZiYTU5MTQ3NDMyMWY3M2IyYzdlMjBjZTk4NjU2NTk1OGM3ZDQ3YTk3ZTFiZGUzZDVjNGYwZTY4YTAzZDRjOTZhNjYyODYxNDZmYmZiNzRjMzIxOTM0OTY2NjcwYjZmYWIxMWUxYzlhMzQ0NzU2NTQ0MmYzYTg1MmM2NzRjOWU5YWQ4ODBmMzM5MmVlZDIxMTViMTgwYmE4NmU1MWI1YzA5ZTg1ZTA3MGU5YWI4YjUwZTljZjg3NDYzNjY1YjllN2JlY2JlYThhMmQyNjg2YmRmNDZiMmQwNTVhMmU2MTQwN2Y4OTNiMDViOTIzNWM0NGQ4ZjhlOWQ5MTE5YmNmM2FkMmNmODQ5MTc0NDYzOGU2NjE3ZGM2ZTVmNDIwZTBiNWVjZDg3MjA1MmQ3MDc0ODk2NmI4N2RhOTNiYmMzOTk1YTFmMGE0YmNlYmEzZDgzYzM5ZTQwNDNhNzc4YTE5MjgyOThlYTk5NWEzM2E4N2UyZDJhOTc3ZmZiOWQ1MmM1NDdjMDEzOTk1MTg0OGM2OTVjZTRlNDhlY2I2ZTRhNzQ3NWJjM2YyMw=="
              }
            },
            "tbs_fingerprint": "fdaa9038c1a94220b4aeba2d1b58bcc8b2fa269a50fddef0861afdcc88aef54f",
            "validation_level": "OV",
            "validity": {
              "length_seconds": 473040000,
              "not_after": "2031-07-10T01:32:15",
              "not_before": "2016-07-13T01:32:15"
            },
            "version": 2
          },
          "fingerprint_sha256": "4CAA880F5DB7A65CB4554B8A07D7D178F4BC8076FA18A83A980E805E18998532",
          "precert": false,
          "raw": "MIID6DCCAtCgAwIBAgIJAJc3q5RGrtPeMA0GCSqGSIb3DQEBDQUAMIGhMQswCQYDVQQGEwJDTjESMBAGA1UECBMJR3VhbmdEb25nMREwDwYDVQQHEwhTaGVuemhlbjEMMAoGA1UEChMDWlRFMScwJQYDVQQLDB5XaXJlbGluZSBQcm9kdWN0IFImRCBJbnN0aXR1dGUxFDASBgNVBAMTC1pURS1ST09ULUNBMR4wHAYJKoZIhvcNAQkBFg96YW5lQHp0ZS5jb20uY24wHhcNMTYwNzEzMDEzMjE1WhcNMzEwNzEwMDEzMjE1WjCBqDELMAkGA1UEBhMCQ04xEDAOBgNVBAgTB0ppYW5nU3UxEDAOBgNVBAcTB05hbmppbmcxDDAKBgNVBAoTA1pURTExMC8GA1UECxMoRk4gTmFuamluZyBTb2Z0d2FyZSBEZXZlbG9wbWVudCBEZXB0IElJSTEUMBIGA1UEAxMLMTkyLjE2OC4xLjExHjAcBgkqhkiG9w0BCQEWD3phbmVAenRlLmNvbS5jbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL0JBPwg8rjcI0DdxsXTmfqx/31sMVa1LG3nmDSNmB70f4uukMk9lLC8JtHu37pZFHQyH3Oyx+IM6YZWWVjH1HqX4b3j1cTw5ooD1MlqZihhRvv7dMMhk0lmZwtvqxHhyaNEdWVELzqFLGdMnprYgPM5Lu0hFbGAuoblG1wJ6F4HDpq4tQ6c+HRjZluee+y+qKLSaGvfRrLQVaLmFAf4k7BbkjXETY+OnZEZvPOtLPhJF0RjjmYX3G5fQg4LXs2HIFLXB0iWa4fak7vDmVofCkvOuj2Dw55AQ6d4oZKCmOqZWjOofi0ql3/7nVLFR8ATmVGEjGlc5OSOy25KdHW8PyMCAwEAAaMaMBgwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwDQYJKoZIhvcNAQENBQADggEBAHYVUqollwBFb5GemnxDIF0WQtoYp5JWiKlh8KoNlJWS3YlCvgKkJa31xzlKC0VdX4T3o/c3vaxbeL17HnaaMspTLphFNRIP/rh7aCp4qAGmro0+77OVOIS7YvtdTCH91ZjxA1At8bBq4b5N2FM2lLDv4pvWZqTk/7D1YWYAZBaei5IPkHUyrxrwj9Nv01tNzkbMje3YlLDHKvCn8INdR1qwdhQ3SdsNWRKDTEPAwrVkhlvSooRDivKRg6ZJ3op4qIkCZ3Kj5IpYwe7HDoA/jMFEHbDUTIqTTTsHMOY5SgAwrI/TcTrGvhSxyBJQeq3z9QGWHOzHQ6WzXCR+8nXhUvk=",
          "tags": [
            "ov",
            "trusted"
          ]
        }
      },
      "url": "https://182.52.58.75/",
      "_meta": {
        "name": "",
        "desc": "",
        "category": ""
      },
      "last_updated_at": "2026-01-29T23:51:14.49Z"
    }
  ],
  "services_hash": "46641a464d91921c8b88f7a7720bfa30f53de12aeee5592b597c81823e726b1c",
  "last_updated_at": "2026-01-29T23:51:14.49Z",
  "banner": [
    "http",
    "tls"
  ],
  "is_vuln": false
}