You’ve been hacked! - Demo 2 für einen JavaScript-Portscan

Der zu scannende Adressbereich:

IP - Startadresse:

IP - Endadresse:

Timeout:
(Der Timeout-Wert muss evtl. erhöht werden)
Ergebnis:


Quelltext

Der Quelltext dieser Seite:

<form>
   IP - Startadresse: <br>
   <input type="text" id="startIP" name="startIP" value="192.168.1.0"> <br>
   IP - Endadresse: <br>
   <input type="text" id="endIP" name="endIP" value="192.168.1.10"> <br>
   Timeout: <br>
   <input type="text" name="timeout" value="1000"> (Der Timeout-Wert muss evtl. erh&ouml;ht werden) <br>
   Ergebnis: <br>
   <textarea id="ergebnis" name="ergebnis" rows="20" cols="50"></textarea><br>
   <input type="button" value="scan" onClick="javascript:scanne(this.form)">
</form>


<script>
function scanPort(callback, host, endIP, timeout) {
	var timeout = (timeout == null)?100:timeout;
	var img = new Image();
	
	img.onerror = function () {
		if (!img) return;
		img = undefined;
		callback(host, 'offen');
	};
	
	img.onload = img.onerror;
	img.src = 'http://' + host;
	
	setTimeout(function () {
		if (!img) return;
		img = undefined;
		callback(host, 'geschlossen');
	}, timeout);
};


function erzeugeIPArray(ipString) { 
    var stringArray = ipString.split('.'); 
    // String in Array mit Strings aufteilen 
    var intArray = new Array(); 
    // Array fŸr Integer-Werte bereitstellen 
    var i; 
    for(i =0; i < stringArray.length; i++) 
    { 
        intArray[i] = parseInt(stringArray[i]); 
        // String in Integer-Wert umwandeln 
    } 
    return intArray; 
};


function erzeugeIPString(ip) { 
    return ip[0] + "." + ip[1] + "." + ip[2] + "." + ip[3];
};


function erhoeheIP(dieIP) { 
    var i; 
    for(i = 3; i >= 0; i--) 
    { 
        if(dieIP[i] < 255 || i == 0) 
        { 
            dieIP[i]++; 
            return dieIP; 
        } 
        else { 
            // Der Wert im aktuellen Segment i kann nicht erhšht werden, 
            // da dass zu einem †berlauf fŸhren wŸrde 
            // Daher muss im Segment davor weitergemacht werden 
            dieIP[i] = 0; 
            dieIP[i-1]++;  
        } 
    } 
    return dieIP; 
};


function ipIstGroesser(ip1, ip2) {
    var i; 
    for(i = 0; i < 4; i++) {
        if(ip1[i] > ip2[i]) {
            return true;
        }
        if(ip1[i] < ip2[i]) {
            return false;
        } else {
            // Adressen sind gleich
        }
    }
    return false;
};


function weiter(callback, aktuelleIP, endIP, timeout) {
    if (ipIstGroesser(erzeugeIPArray(aktuelleIP), erzeugeIPArray(endIP)) == true) {
        // fertig!
        return;
    } else {
        scanHosts(callback, aktuelleIP, endIP, timeout);
    }
};


function scanHosts(callback, aktuelleIP, endIP, timeout) {
    scanPort(callback, aktuelleIP, endIP, timeout);
    var neueIP = erhoeheIP(erzeugeIPArray(aktuelleIP));
    weiter(callback, erzeugeIPString(neueIP), endIP, timeout);
};


var ergebnis = document.getElementById('ergebnis');

function callback(host, status) {
    ergebnis.value += host + "  :  " + status + "\n";
};

function scanne(form) {
    scanHosts(callback, form.startIP.value, form.endIP.value, form.timeout.value);
};
</script>

Zurück zur Kapitel-Startseite oder zur Doku-Startseite