Last active
April 23, 2020 08:47
-
-
Save ogwurujohnson/cbd8cbfbe033d79700f907df185aa30a to your computer and use it in GitHub Desktop.
My attempts at building a browser port scanner
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* eslint-disable camelcase */ | |
/* eslint-disable func-style */ | |
import io from 'socket.io-client'; | |
// we will take callback from external source and use it for what we want her, which is passing true or false | |
export const checkSocketIoConnect = (url, timeout) => { | |
return new Promise(function(resolve, reject) { | |
let errAlready = false; | |
timeout = timeout || 50000; | |
let socket = io(url, { | |
transport: ['websocket'], | |
reconnection: true, timeout: timeout, reconnectionDelay: 1000, | |
reconnectionAttempts: 50, | |
rejectUnauthorized: false | |
}); | |
// success | |
socket.on('connect', function() { | |
console.log('connecting succesfulyy'); | |
clearTimeout(timer); | |
resolve(); | |
socket.close(); | |
}); | |
// set our own timeout in case the socket ends some other way than what we are listening for | |
let timer = setTimeout(function() { | |
console.log('timer'); | |
timer = null; | |
error('local timeout'); | |
}, timeout); | |
// common error handler | |
const error = (data) => { | |
console.log('errrror'); | |
if (timer) { | |
clearTimeout(timer); | |
timer = null; | |
} | |
if (!errAlready) { | |
errAlready = true; | |
reject(data); | |
socket.disconnect(); | |
} | |
}; | |
// errors | |
socket.on('connect_error', error); | |
socket.on('connect_timeout', error); | |
socket.on('error', error); | |
socket.on('disconnect', error); | |
}); | |
}; | |
export const portChecker = (cb, host, port, timeout) => { | |
let timeouts = (timeout == null) ? 100 : timeout; | |
let img = new Image(); | |
img.onerror = function() { | |
if (!img) return; | |
img = undefined; | |
console.log('open'); | |
cb('open'); | |
}; | |
img.onload = img.onerror; | |
img.src = 'https://' + host + ':' + port; | |
setTimeout(function() { | |
if (!img) return; | |
img = undefined; | |
console.log('closed'); | |
cb('closed'); | |
}, timeouts); | |
}; | |
export const newPortChecker = (url) => { | |
let websocket = new WebSocket(url); | |
// websocket.send('pinging server'); | |
websocket.onopen = function(event) { | |
setInterval(() => { | |
websocket.send('ping'); | |
}, 30000); | |
console.log(event); | |
}; | |
websocket.onmessage = function(event) { | |
console.log(event.data); | |
}; | |
websocket.onerror = function(event) { | |
console.log(event); | |
}; | |
websocket.onclose = function(event) { | |
console.log(event); | |
}; | |
}; | |
export function http_scan(protocol_, hostname, port_) { | |
let process_port_http = false, | |
img_scan = new Image(), | |
start_time_http, | |
closetimeout = 50000, | |
opentimeout = 50000, | |
port_status_http = 0, | |
debug_value = false, | |
debug = false, | |
intID_http, | |
default_services = {'1':'tcpmux', '5':'rje', '7':'echo', '9':'msn', '15':'netstat', '20':'ftp-data', '21':'ftp', '22':'ssh', '23':'telnet', '25':'smtp', '26':'rsftp', '29':'msgicp', '33':'dsp', '37':'time', '42':'nameserver', '43':'whois', '53':'domain', '67':'dhcps', '68':'dhcpc', '69':'tftp', '70':'gopher', '76':'deos', '79':'finger', '80':'http', '81':'hosts2-ns', '88':'kerberos-sec', '90':'dnsix', '98':'linuxconf', '101':'hostname', '106':'pop3pw', '109':'pop2', '110':'pop3', '111':'rpcbind', '113':'ident', '114':'audio news', '115':'sftp', '118':'sqlserv', '119':'nntp', '123':'ntp', '129':'pwdgen', '132':'cisco-sys', '133':'statsrv', '135':'msrpc', '136':'profile', '137':'netbios-ns', '138':'netbios-dgm', '139':'netbios-ssn', '143':'imap', '144':'news', '156':'sqlserv', '158':'pcmail-srv', '161':'snmp', '162':'snmp trap', '168':'rsvd', '174':'mailq', '177':'xdmcp', '194':'irc', '197':'dls', '199':'smux', '209':'tam', '213':'ipx', '217':'dbase', '219':'uarps', '220':'imap3', '223':'cdc', '264':'bgmp', '315':'dpsi', '316':'decauth', '346':'zserv', '353':'ndsauth', '389':'ldap', '413':'smsp', '414':'infoseek', '415':'bnet', '416':'silver platter', '440':'sgcp', '443':'https', '444':'snpp', '445':'microsoft-ds', '453':'creativeserver', '454':'content server', '456':'macon', '457':'scohelp', '458':'appleqtc', '462':'datasurfsrvsec', '464':'kpasswd5', '465':'smtps', '466':'digital-vrc', '480':'loadsrv', '486':'sstats', '497':'retrospect', '500':'isakmp', '501':'stmf', '515':'printer (spooler lpd)', '516':'videotex', '518':'ntalk', '522':'ulp', '523':'ibm-db2', '524':'ncp', '525':'timed', '526':'tempo', '533':'netwall', '535':'iiop', '538':'gdomap', '540':'uucp', '541':'uucp-rlogin', '542':'commerce', '543':'klogin', '544':'kshell', '545':'ekshell', '546':'dhcpconf', '547':'dhcpserv', '548':'afp', '556':'remotefs', '557':'openvms-sysipc', '560':'rmonitor', '561':'monitor', '563':'snews', '564':'9pfs', '587':'submission', '625':'apple-xsrvr-admin', '626':'apple-imap-admin', '631':'ipp', '636':'ldapssl', '637':'lanserver', '660':'mac-srvr-admin', '664':'secure-aux-bus', '666':'doom', '683':'corba-iiop', '740':'netcp', '741':'netgw', '742':'netrcs', '744':'flexlm', '747':'fujitsu-dev', '748':'ris-cm', '749':'kerberos-adm', '750':'kerberos', '751':'kerberos_master', '752':'qrh', '753':'rrh', '754':'krb_prop', '758':'nlogin', '760':'krbupdate', '761':'kpasswd', '762':'quotad', '763':'cycleserv', '764':'omserv', '765':'webster', '767':'phonebook', '771':'rtip', '773':'submit', '774':'rpasswd', '775':'entomb', '776':'wpages', '780':'wpgs', '781':'hp-collector', '782':'hp-managed-node', '783':'spam assassin', '786':'concert', '787':'qsc', '799':'controlit', '800':'mdbs_daemon', '801':'device', '808':'ccproxy-http', '871':'supfilesrv', '873':'rsync', '888':'access builder', '898':'sun-manageconsole', '901':'samba-swat', '953':'rndc', '989':'ftps-data', '990':'ftps', '992':'telnets', '993':'imaps', '994':'ircs', '995':'pop3s', '996':'xtreelic', '997':'maitrd', '998':'busboy', '999':'garcon', '1000':'cadlock', '1002':'windows-icfw', '1008':'ufsd', '1023':'netvenuechat', '1024':'kdm', '1025':'NFS-or-IIS', '1080':'socks', '1433':'mssql', '1434':'ms-sql-m', '1521 ':'oracle', '1720':'h323q931', '1723':'pptp', '3306':'mysql', '3389':'ms-wbt-server', '4489':'radmin', '5000':'upnp', '5060':'sip', '5432':'postgres', '5900':'vnc', '6000':'x11', '6001':'X11:1', '6446':'mysql-proxy', '8050':'coldfusion', '8080':'http-proxy', '8443':'tomcat', '8888':'sun-answerbook', '9100':'HP JetDirect card', '10000':'snet-sensor-mgmt', '10088':'zend server', '11371':'hkp'}; | |
if (debug == 'true') { | |
debug_value = true; | |
} | |
img_scan.onerror = function() { | |
var interval = (new Date).getTime() - start_time_http; | |
if (interval < closetimeout) { | |
if (process_port_http == false) { | |
port_status_http = 1; // closed | |
if (debug_value) { | |
console.log('port is closed'); | |
} | |
clearInterval(intID_http); | |
} | |
process_port_http = true; | |
} | |
}; | |
img_scan.onload = img_scan.onerror; | |
img_scan.src = protocol_ + hostname + ':' + port_; | |
intID_http = setInterval( | |
function() { | |
var interval = (new Date).getTime() - start_time_http; | |
if (interval >= opentimeout) { | |
if (!img_scan) return; | |
// img_scan.src = ""; | |
img_scan = undefined; | |
if (process_port_http == false) { | |
port_status_http = 2; // open | |
process_port_http = true; | |
} | |
clearInterval(intID_http); | |
var known_service = ''; | |
if (port_ in default_services) { | |
known_service = '(' + default_services[port_] + ')'; | |
} | |
console.log('port is open' + known_service); | |
} | |
} | |
, 1); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment