Skip to content

Instantly share code, notes, and snippets.

@ogwurujohnson
Last active April 23, 2020 08:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ogwurujohnson/cbd8cbfbe033d79700f907df185aa30a to your computer and use it in GitHub Desktop.
Save ogwurujohnson/cbd8cbfbe033d79700f907df185aa30a to your computer and use it in GitHub Desktop.
My attempts at building a browser port scanner
/* 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