Funkce skritu je založena na stejných principech, na jakých stálo samotné zjišťování aktivních zařízení. Opět otevřený port odpoví o něco rychleji, než port zavřený a my tak jen testujeme, za jak dlouho se k nám odpověď na náš požadavek vrátí.
Vzhledem k tomu, že je cíl aktivní, budou jednotlivé odpovědi přicházet mnohem rychleji, než by tomu bylo u neaktivního zařízení. Časový rozdíl mezi odpovědí získanou po odeslání požadavku na otevřený a uzavřený port je nyní opravdu minimální, a proto bude možná potřeba upravit timeout v závislosti na pingu vaší sítě.
Za zmínku stojí ještě skutečnost, že webové browsery nepovolí odeslání požadavků na všechny porty. Požadavky směřující na porty, které jsou běžně používány jinými službami (například SMTP, DNS, apd.) jsou browserem okamžitě blokovány a jejich dostupnost proto není možné s využitím JavaScriptu testovat.
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<link rel="StyleSheet" href="http://www.soom.cz/base.css" type="text/css">
</head>
<body>
<script>
function scan() {
if (x!=ports.length) scanPort(host);
}
function closePort() {
window.stop?window.stop():document.execCommand("Stop");
document.getElementById('closeports').appendChild(itemLI);
x++; scan();
}
function openPort() {
clearTimeout(casovac);
document.getElementById('openports').appendChild(itemLI);
x++; scan();
}
function scanPort (target) {
itemLI = document.createElement('li');
var text = document.createElement('p');
text.innerHTML = ports[x];
itemLI.appendChild(text);
document.getElementById('obr').setAttribute("src", "http://" + target + ":" + ports[x]);
casovac = setTimeout("closePort()", 800);
}
function startScan() {
host = document.getElementById("IPaddress").value;
document.getElementById("obsah").innerHTML=''+
'<img id="obr" src="" onerror="openPort()" onload="openPort()" style="display:none;">'+
'<H3>Otevřené porty</H3><ul id="openports"></ul>'+
'<H3>Zavřené porty</H3><ul id="closeports"></ul>'
scan();
}
var x = 0;
var ports = [80, 443, 445, 8000, 8008];
</script>
<div id="obsah">
<small>Cílová IP adresa:</small><br>
<input type="text" id="IPaddress" value="192.168.1.1">
<input type="button" value="Scan" onclick="startScan()">
</div>
</body>
</html>
Činnost skriptu demonstruje následující rám: