177.89.181.103
Geolocation
Network | 177.89.181.0/24 |
Postal Code | 59000 |
City | Natal |
Country | Brazil (BR) |
Continent | South America |
Locale Code | en |
Geo Point | -5.8111, -35.2235 |
Updated At | 08 Jul 2025, 00:43:25 UTC |
Whois
Network | N/A |
Organization | N/A |
Desc | N/A |
Updated At | 01 Jan 1, 00:00:00 UTC |
Geolocation
Network | 177.89.181.0/24 |
Postal Code | 59000 |
City | Natal |
Country | Brazil (BR) |
Continent | South America |
Locale Code | en |
Geo Point | -5.8111, -35.2235 |
Updated At | 08 Jul 2025, 00:43:25 UTC |
Whois
Network | N/A |
Organization | N/A |
Desc | N/A |
Updated At | 01 Jan 1, 00:00:00 UTC |
Status Code | 200 |
Title | GPON Home Gateway |
Body SHA256 | 42e0033673d77ba330be98c6d8f36e569ceeb57a4a5f9d9aab1eaf922ddb1a66 |
Component | N/A |
Response Headers | |
cache control | private,max-age=0; |
content security policy | default-src 'self' blob: 'unsafe-inline' 'unsafe-eval' |
content type | text/html;charset=UTF-8; |
set cookie | lang=eng; path=/;HttpOnly;Secure; |
strict transport security | max-age=2592000; includeSubdomains |
unknown | [{"key":"referrer_policy","value":["no-referrer"]}] |
x content type options | nosniff |
x frame options | SAMEORIGIN |
x xss protection | 1; mode=block |
Fingerprint | |
MD5 | 0A352B23F76AF28364D690A7129EF181 |
SHA1 | 3DF47EC561D3239A7CB89544E252AD58283EB176 |
SHA256 | 363808FA22FC15AC26B83337CF9B6D2FA28335BC005369BDD9CC0B74A6C1A40C |
JARM | 09d14d16d22d22d00042d43d000000d910e61ca1aac67e5d7e16528eea0e38 |
{
"body": "<!-- vim:fenc=utf-8\r\n-->\r\n<html>\r\n<head>\r\n<title>\r\n\r\nGPON Home Gateway\r\n\r\n</title>\t\t\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\r\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\"/>\r\n<meta name=\"referrer\" content=\"no-referrer\"/>\r\n<script>if(self!=top) top.location=self.location\r\n\r\nif(!window.name){\r\n location.reload();\r\n window.name = 'Bell';\r\n}\r\n</script>\r\n<link rel=\"stylesheet\" href='/css_glb/main.css' type='text/css'/>\r\n<style>\r\nbody {\r\n margin:0px; padding:0px; background:#ffffff; \r\n font-size:12px; color:#E36813;\r\n line-height:170%;\r\n text-align:center;\r\n vertical-align: middle ;\r\n padding-top: 150px;\r\n}\r\n.ct_text{\r\n width:115px;border:1px #87a6c3 solid;background:#ffffff;\r\n}\r\n\r\n</style>\r\n<script src=\"/common/js/jquery-1.12.2-patched.js\" charset=\"UTF-8\"></script>\r\n\r\n<script src=\"js_glb/jsencrypt.min.js\"></script>\r\n\r\n<script src=\"js_glb/sjcl.js\"></script>\r\n<script src=\"js_glb/crypto_page.js\"></script>\r\n<script src=\"js_glb/protectBtnClick.js?v=HJI.J86p03\"></script>\r\n<script>\r\n\r\n\r\n\r\n\r\nvar pubkey = '-----BEGIN PUBLIC KEY-----\\\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDs9wrKgmujL3V+prKCLSJb51d\\\nvJ+7iFxKkWiLg2y6H6ycO2qGvJYQmOg+rS4VWpUCO5uwQMRlvVUWy4KRdkF8e9zr\\\niAlqAJc/b3Q4XJRVZzzBwH0j20WSVRTr0XcC7yJsYePeat2wFVHimc0teNfpj5B7\\\nocuj6K2FuP/xjSsizwIDAQAB\\\n-----END PUBLIC KEY-----\\\n'; \r\n\r\n\r\nvar err_t=[];\r\nvar ns4 = (document.layers) ? true : false;\r\nvar ie4 = (document.all) ? true : false;\r\n\r\nvar hexVals = new Array(\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\",\r\n \"A\", \"B\", \"C\", \"D\", \"E\", \"F\");\r\nvar unsafeString = \"\\\"<>%\\\\^[]`\\+\\$\\,'#&\";\r\n// deleted these chars from the include list \";\", \"default.htm\", \"?\", \":\", \"@\", \"=\", \"&\" and #\r\n// so that we could analyze actual URLs\r\nvar error_msg = {\"Account not enabled\":\"Account not enabled\"};\r\n \r\n$(function(){\r\n\tprotectBtnClick('loginBT');\r\n $(\"#err_msg\").html(error_msg[$(\"#err_msg\").html()]);\r\n})\r\n\r\nfunction isUnsafe(compareChar)\r\n// this function checks to see if a char is URL unsafe.\r\n// Returns bool result. True = unsafe, False = safe\r\n{\r\n if ( unsafeString.indexOf(compareChar) == -1 && compareChar.charCodeAt(0) > 32\r\n && compareChar.charCodeAt(0) < 123 )\r\n return false; // found no unsafe chars, return false\r\n else\r\n return true;\r\n}\r\n\r\nfunction decToHex(num, radix)\r\n// part of the hex-ifying functionality\r\n{\r\n var hexString = \"\";\r\n while ( num >= radix ) {\r\n temp = num % radix;\r\n num = Math.floor(num / radix);\r\n hexString += hexVals[temp];\r\n }\r\n hexString += hexVals[num];\r\n return reversal(hexString);\r\n}\r\n\r\nfunction reversal(s)\r\n// part of the hex-ifying functionality\r\n{\r\n var len = s.length;\r\n var trans = \"\";\r\n for (i = 0; i < len; i++)\r\n trans = trans + s.substring(len-i-1, len-i);\r\n s = trans;\r\n return s;\r\n}\r\n\r\nfunction convert(val)\r\n// this converts a given char to url hex form\r\n{\r\n return \"%\" + decToHex(val.charCodeAt(0), 16);\r\n}\r\n\r\nfunction encodeUrl(val)\r\n{\r\n var len = val.length;\r\n var i = 0;\r\n var newStr = \"\";\r\n var original = val;\r\n\r\n for ( i = 0; i < len; i++ ) {\r\n if ( val.substring(i,i+1).charCodeAt(0) < 255 ) {\r\n // hack to eliminate the rest of unicode from this\r\n if (isUnsafe(val.substring(i,i+1)) == false)\r\n newStr = newStr + val.substring(i,i+1);\r\n else\r\n newStr = newStr + convert(val.substring(i,i+1));\r\n } else {\r\n // woopsie! restore.\r\n alert (\"Found a non-ISO-8859-1 character at position: \" + (i+1) + \",\\nPlease eliminate before continuing.\");\r\n newStr = original;\r\n // short-circuit the loop and exit\r\n i = len;\r\n }\r\n }\r\n\r\n return newStr;\r\n}\r\n\r\nfunction onlogin() {\r\n\twith ( document.forms[0] ) {\r\n\t\tif(username.value.length <= 0) {\r\n\t\t\talert(\"User name is null\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar loc = \"login.cgi@username=\" + encodeUrl(username.value) + \"&psd=\" + encodeUrl(password.value);\r\n\t\tvar code = 'location=\"' + loc + '\"';\r\n\t\teval(code);\r\n\t}\r\n}\r\n\r\nfunction onlogindiag() {\r\n\twith ( document.forms[0] ) {\r\n\t\tif(username.value.length <= 0) {\r\n\t\t\talert(\"User name is null\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar loc = \"login.cgi@diag=1\" + \"&username=\" + encodeUrl(username.value) + \"&psd=\" + encodeUrl(password.value);\r\n\t\tvar code = 'location=\"' + loc + '\"';\r\n\t\teval(code);\r\n\t}\r\n}\r\n\r\nfunction myKeyDown(e) {\r\n\tif(ns4 && e.which==13){\r\n\t\t//onlogin();\r\n\t\treturn e.which;\r\n\t} else if(ie4 && window.event.keyCode==13) { \r\n\t\t//onlogin();\r\n\t\treturn window.event.keyCode;\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\ndocument.onkeydown = myKeyDown;\r\nif(ns4) {\r\n\tdocument.captureEvents(Event.KEYDOWN);\r\n} \r\n\r\nvar popUpWin=0;\r\n\r\nfunction popUpRegWin()\r\n{\r\n if(popUpWin)\r\n {\r\n if(!popUpWin.closed) popUpWin.close();\r\n }\r\n popUpWin = open(\"reg.cgi\", 'popUpWin', \r\n 'toolbar=yes,location=no,directories=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,copyhistory=yes,width=800,height=600,left=200, top=200');\r\n}\r\n\r\n\r\n\r\n//function changeSubmit()\r\n//{\r\n//\tdocument.getElementById[\"loginform\"].action = \"login.cgi?selftest\";\r\n//\t$[\"#loginform\"].submit();\r\n//}\r\n\r\n\r\n\r\nfunction submit() { \r\n var username = $(\":input[id=username]\").val();\r\n var password = $(\":input[id=password]\").val();\r\n var nonce = \"w+1V9m3b3WjKQByOA96MwEY8N1doGjAZqE1r/ddPLko=\"; \r\n var token =\"SRAbBqInfjbEbGqP\";\r\n \r\n \r\n \r\n\t var base64 = sjcl.codec.base64;\r\n var dec_key = base64.fromBits(sjcl.random.randomWords(4, 0));\r\n var dec_iv = base64.fromBits(sjcl.random.randomWords(4, 0));\r\n\t\tvar postdata = '&username=' + username + '&password=' + encodeURIComponent(password) + '&csrf_token=' + token + '&nonce=' + nonce+'&enckey='+crypto_page.base64url_escape(dec_key)+'&enciv='+crypto_page.base64url_escape(dec_iv); \r\n\t\t\r\n\t\tvar encryptdata = crypto_page.encrypt_post_data(pubkey, postdata);\r\n \r\n $.ajax({ \r\n url: '/login.cgi',\r\n type: 'POST',\r\n\r\n data: encryptdata,\r\n\r\n success: function(data, textstatus, jqXHR) {\r\n if (jqXHR.status == 299) {\r\n var sid = jqXHR.getResponseHeader('X-SID');\r\n\r\n localStorage.clear();\r\n localStorage.setItem(sid, dec_key + ' ' + dec_iv);\r\n window.top.location=\"/\"\r\n }\r\n else {\r\n var doc = document.open(\"text/html\", \"replace\");\r\n doc.write(data);\r\n doc.close();\r\n }\r\n }\r\n });\t\r\n}\r\n\r\n\r\nfunction frmLoad() {\r\n with (document.forms[0]) {\r\n \r\n\t \r\n \t\tusername.focus();\r\n\r\n \r\n\r\n var ErrorLimit = 4; \r\n\tif ($(\"#tip\").val() != undefined) {\r\n\r\n\t\ttip_stat=\"\";\r\n\t tt=\"<font color='black'>Password Tip:</font>\";\r\n\r\n\r\n \r\n\t\tif ($(\"#tip\").text() == \"\"){\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n tip_stat=tt+\"<font color='red'>Please input default password!</font>\";\r\n \r\n\t\t\r\n\t\t\r\n \r\n\t\t\t$(\"#tip\").text(\"\");\r\n\t\t\t$(\"#tip\").html(tip_stat);\r\n\r\n\t\t}else{\r\n\t\t stt=\"<font color='red'>\"+$(\"#tip\").text()+\"</font>\";\r\n\t\t tip_stat=tt+stt;\r\n\t\t\t$(\"#tip\").html(tip_stat);\r\n\t\t}\r\n\r\n\t}\r\n\t\r\n if(err_t.length >0){\r\n err1=parseInt(err_t[0]);\r\n if((err1>0)&&(err1<=ErrorLimit)){\r\n if(err1==1){\r\n err_str=\"<font color='red'>You have failed once</font>\";\r\n }\r\n else if(err1==2){\r\n err_str=\"<font color='red'>You have failed twice</font>\";\r\n }\r\n else{\r\n err_str=\"<font color='red'>You have failed</font>\";\r\n err_str+=\" \"+err1+\" \";\r\n err_str+=\"<font color='red'>times</font>\";\r\n }\r\n $(\"#err_times\").html(err_str);\r\n }\r\n \r\n else{\r\n $(\"#err_times\").html(\"\");\r\n }\r\n }\r\n\r\n\t\r\n }\r\n}\r\n\r\n</script>\r\n</head>\r\n<body leftmargin=\"0\" topmargin=\"0\" onload=\"frmLoad()\">\r\n<form method=\"post\" action=\"javascript:submit();\" id=\"loginform\">\r\n\r\n\r\n<table width=\"300\" height=\"20%\" cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"#ffffff\" align=\"center\" >\r\n \r\n <tr height=\"32\" bgcolor=\"#4393A3\" align=\"center\" > \r\n \r\n <td colspan=2 style=\"FONT-WEIGHT: bold;color:#000000;\">\r\n GPON Home Gateway \r\n </td> \r\n </tr> \r\n <tr height= \"100\" >\r\n \r\n <td width=\"100%\" style=\"border:2px solid #4393a3 \">\r\n \r\n <table > \r\n <tr height=\"50%\" align=\"top\"> \r\n <td align=\"center\" width=\"55%\" style=\"color:#000000\">Username</td> \r\n <td align=\"center\" width=\"120\" height=\"15\" >\r\n \r\n <input type=\"text\" name=\"name\" id=\"username\" class=\"ct_text\" style=\"background-color:0xffffff\" value=\"\" maxlength=\"55\"/>\r\n \r\n </td> \r\n </tr> \r\n <tr height=\"10\" background-color:#ffffff></tr>\r\n <tr> \r\n <td align=\"center\" width=\"55%\" style=\"color:#000000\">Password</td> \r\n <td align=\"center\" width=\"120\" height=\"15\"><input type=\"password\" name=\"pswd\" id=\"password\" class=\"ct_text\" style=\"background-color:0xffffff\" maxlength=\"88\" autocomplete=\"off\"/></td> \r\n </tr> \r\n <tr height=\"5\" align=center> \r\n <td colspan=2 id=\"err_times\"></td> \r\n </tr> \r\n </table> \r\n </td> \r\n </tr> \r\n\r\n \r\n <tr height=\"12\" bgcolor=\"#4393A3\" align=\"center\"> \r\n \r\n <td colspan=2>\r\n <table width=\"100%\"> \r\n <tr>\r\n <td width=\"40%\" align=\"right\">\r\n <input type=\"submit\" id='loginBT' name='loginBT' height=\"10\" value=\"Login\"/>\r\n </td>\r\n <td align=\"center\">\r\n <input type=\"reset\" height=\"10\" value=\"Reset\"/>\r\n </td> \r\n </tr>\r\n </table>\r\n </td> \r\n </tr> \r\n \r\n</table>\r\n</form>\r\n</body>\r\n</html>\r\n\r\n",
"body_murmur": 1785866201,
"body_sha256": "42e0033673d77ba330be98c6d8f36e569ceeb57a4a5f9d9aab1eaf922ddb1a66",
"content_length": -1,
"headers": {
"cache_control": [
"private,max-age=0;"
],
"content_security_policy": [
"default-src 'self' blob: 'unsafe-inline' 'unsafe-eval'"
],
"content_type": [
"text/html;charset=UTF-8;"
],
"set_cookie": [
"lang=eng; path=/;HttpOnly;Secure;"
],
"strict_transport_security": [
"max-age=2592000; includeSubdomains"
],
"unknown": [
{
"key": "referrer_policy",
"value": [
"no-referrer"
]
}
],
"x_content_type_options": [
"nosniff"
],
"x_frame_options": [
"SAMEORIGIN"
],
"x_xss_protection": [
"1; mode=block"
]
},
"protocol": "HTTP/1.0",
"request": {
"headers": {
"accept": [
"*/*"
],
"user_agent": [
"Mozilla/5.0 (compatible; Odin; https://docs.getodin.com/)"
]
},
"method": "GET",
"url": {
"host": "177.89.181.103",
"path": "",
"scheme": "https"
}
},
"status_code": 200,
"title": "GPON Home Gateway"
}