[Javanetsim-cvs] IceScan CHANGELOG, 1.2, 1.3 iceparams.h, 1.2, 1.3 icescan.cc, 1.4, 1.5 ctarget.h,
Status: Beta
Brought to you by:
darkkey
From: Alexander B. <da...@us...> - 2006-11-30 06:43:56
|
Update of /cvsroot/javanetsim/IceScan In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv20305 Modified Files: CHANGELOG iceparams.h icescan.cc ctarget.h TODO iceservice.h csubtarget.h Log Message: no message Index: icescan.cc =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icescan.cc,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** icescan.cc 29 Nov 2006 12:51:01 -0000 1.4 --- icescan.cc 30 Nov 2006 06:43:50 -0000 1.5 *************** *** 15,18 **** --- 15,19 ---- "\t-PA: ACK Ping host discovery\n" "\t-PE: ICMP Echo (aka standart ping) host discovery\n" + "\t-r: no reverse-dns lookups\n" "SCAN TYPES:\n" "\t-ST: tcp connect() scan\n" *************** *** 56,59 **** --- 57,64 ---- exit(0); break; + + case 'r': + par->reverse_dns = false; + break; case '?': *************** *** 189,193 **** iceoutput out; ! iceparams par; ice_service_name_database isnd("services"); --- 194,200 ---- iceoutput out; ! iceparams par; ! ! struct timeb tp1, tp2; ice_service_name_database isnd("services"); *************** *** 195,198 **** --- 202,207 ---- char version_string[255]; + bool discover = false; + time_t rawtime; *************** *** 209,218 **** par.by_default_init(); ! ctarget t(par.target, &par, &out, &isnd); ! ! t.discover(); ! ! t.scan(); return 0; } --- 218,241 ---- par.by_default_init(); ! if(par.target == NULL){ ! out << "No target hosts/networks specified!" << iceoutput::endl; ! return 1; ! } ! ! ctargets ts(&par, &out, &isnd); ! ! ftime(&tp1); ! ! ts.add_subtargets(par.target); + if(! (discover = ts.discover()) ){ + out << "Warn: Host(s) seems down. If it is really up, but blocking ping probes, try -P0." << iceoutput::endl; + } + + if(discover) ts.scan(); + + ftime(&tp2); + + out << "IceScan finished: " << ts.subtargets_count() << " IP address(es) (" << ts.up_subtargets_count() << " host(s) up) processed in " << timeb_diff(tp1, tp2) << " seconds." << iceoutput::endl; return 0; } Index: csubtarget.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/csubtarget.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** csubtarget.h 30 Nov 2006 05:27:39 -0000 1.4 --- csubtarget.h 30 Nov 2006 06:43:50 -0000 1.5 *************** *** 6,10 **** #include <map> #include <errno.h> - #include <sys/timeb.h> #include <pthread.h> #include "iceoutput.h" --- 6,9 ---- *************** *** 58,61 **** --- 57,62 ---- char *hostname; + + char *reversed_hostname; ice_service_name_database *isnd; *************** *** 67,73 **** std::vector<scanned_port> subtarget_ports; ! csubtarget(char *hostname, iceparams *par, iceoutput *out, ice_service_name_database *isnd){ ! this->hostname = (char *) malloc(strlen(hostname)); strcpy(this->hostname, hostname); this->par = par; this->out = out; --- 68,76 ---- std::vector<scanned_port> subtarget_ports; ! csubtarget(char *hostname, char *reverse_hostname, iceparams *par, iceoutput *out, ice_service_name_database *isnd){ ! this->hostname = (char *) malloc(strlen(hostname) + 1); strcpy(this->hostname, hostname); + this->reversed_hostname = (char *) malloc(strlen(reverse_hostname) + 1); + strcpy(this->reversed_hostname, reverse_hostname); this->par = par; this->out = out; *************** *** 83,98 **** discovered = host_discover(hostname, par, out); ftime(&tp2); ! ! int secs = tp2.time - tp1.time; ! int msecs = tp2.millitm - tp1.millitm; ! ! if(msecs < 0){ ! secs--; ! msecs = 1000 + msecs; ! } ! ! float dt = secs + 0.001*msecs; ! ! if(par->verbose) *out << "Discovery taken " << dt << " seconds.\n"; return discovered; --- 86,91 ---- discovered = host_discover(hostname, par, out); ftime(&tp2); ! ! if(par->verbose) *out << "Discovery taken " << timeb_diff(tp1, tp2) << " seconds.\n"; return discovered; *************** *** 476,482 **** else if(open == 0 && closed <= MAX_CLOSED) show_closed = true; ! bzero(output_buf, 255); ! sprintf(output_buf, "Interesting ports on %s:", hostname); ! out->line(output_buf); //DBGOUTPUT(filtered); --- 469,476 ---- else if(open == 0 && closed <= MAX_CLOSED) show_closed = true; ! if(strcmp(hostname, reversed_hostname)) ! *out << "Interesting ports on " << reversed_hostname << " (" << hostname << "):" << iceoutput::endl; ! else ! *out << "Interesting ports on " << hostname << ":" << iceoutput::endl; //DBGOUTPUT(filtered); *************** *** 517,520 **** --- 511,515 ---- //DBGOUTPUT("Entering destructor..."); free(hostname); + free(reversed_hostname); scan_sockets.clear(); subtarget_ports.clear(); Index: CHANGELOG =================================================================== RCS file: /cvsroot/javanetsim/IceScan/CHANGELOG,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** CHANGELOG 30 Nov 2006 05:27:39 -0000 1.2 --- CHANGELOG 30 Nov 2006 06:43:50 -0000 1.3 *************** *** 8,11 **** * fixed icmp echo discovery (icmplen). * fixed selecting discovery type from command line. ! ! * fixed format string vulnerability when showing port table. \ No newline at end of file --- 8,13 ---- * fixed icmp echo discovery (icmplen). * fixed selecting discovery type from command line. ! * fixed format string vulnerability when showing port table. ! + added scan time reporting at the end of the scan ! * fixed crash on empty target ! + added reverse dns lookup (and -r key to command line) \ No newline at end of file Index: iceservice.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/iceservice.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** iceservice.h 28 Nov 2006 17:57:54 -0000 1.1 --- iceservice.h 30 Nov 2006 06:43:50 -0000 1.2 *************** *** 52,56 **** string get_tcp_service(int port){ if(tcp_services.find(port) != tcp_services.end()) return udp_services[port]; ! else return ""; } --- 52,56 ---- string get_tcp_service(int port){ if(tcp_services.find(port) != tcp_services.end()) return udp_services[port]; ! else return "unknown"; } Index: iceparams.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/iceparams.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** iceparams.h 28 Nov 2006 21:01:33 -0000 1.2 --- iceparams.h 30 Nov 2006 06:43:50 -0000 1.3 *************** *** 31,35 **** // PreScan settings ! bool reverse_dns; //-RY (default); -RN params: resolve given ip to hostname or not? // Host discovery (default: -PA, -PI) --- 31,35 ---- // PreScan settings ! bool reverse_dns; //(true by default); -r -- no reverse dns lookup // Host discovery (default: -PA, -PI) *************** *** 94,130 **** ~iceparams(){ delete target; } ! void by_default_init(){ ! if( ! (no_host_discovery || ack_ping_discovery || syn_ping_discovery || icmp_echo_ping_discovery || ! icmp_mask_ping_discovery || icmp_timestamp_ping_discovery || udp_ping_discovery) ){ ! ack_ping_discovery = true; ! icmp_echo_ping_discovery = true; ! } ! init_default_ports(); ! } ! void init_default_ports(){ ! const int ranges_cnt = 1; ! int ranges[ranges_cnt][2] = { {1, 1024} }; ! if(ports.empty()){ ! struct port_range pr; ! for(int i = 0; i < ranges_cnt; i++){ ! pr.lower_port = ranges[i][0]; pr.upper_port = ranges[i][1]; ports.push_back(pr); ! } ! } ! } ! int calc_ports_count(){ ! int cnt = 0; ! for(int i = 0; i < ports.size(); i++){ ! cnt += (ports[i].upper_port - ports[i].lower_port) + 1; ! } ! return cnt; ! } }; --- 94,130 ---- ~iceparams(){ delete target; } ! void by_default_init(){ ! if( ! (no_host_discovery || ack_ping_discovery || syn_ping_discovery || icmp_echo_ping_discovery || ! icmp_mask_ping_discovery || icmp_timestamp_ping_discovery || udp_ping_discovery) ){ ! ack_ping_discovery = true; ! icmp_echo_ping_discovery = true; ! } ! init_default_ports(); ! } ! void init_default_ports(){ ! const int ranges_cnt = 1; ! int ranges[ranges_cnt][2] = { {1, 1024} }; ! if(ports.empty()){ ! struct port_range pr; ! for(int i = 0; i < ranges_cnt; i++){ ! pr.lower_port = ranges[i][0]; pr.upper_port = ranges[i][1]; ports.push_back(pr); ! } ! } ! } ! int calc_ports_count(){ ! int cnt = 0; ! for(int i = 0; i < ports.size(); i++){ ! cnt += (ports[i].upper_port - ports[i].lower_port) + 1; ! } ! return cnt; ! } }; Index: ctarget.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/ctarget.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ctarget.h 30 Nov 2006 05:27:39 -0000 1.2 --- ctarget.h 30 Nov 2006 06:43:50 -0000 1.3 *************** *** 1,14 **** ! #ifndef CTARGET_H ! #define CTARGET_H #include "csubtarget.h" ! class ctarget{ iceoutput *out; ! iceparams *par; ! ! char *hostname; ice_service_name_database *isnd; --- 1,12 ---- ! #ifndef CTARGETS_H ! #define CTARGETS_H #include "csubtarget.h" ! class ctargets{ iceoutput *out; ! iceparams *par; ice_service_name_database *isnd; *************** *** 17,53 **** std::vector <char *> subtargets_addresses; //subtarget ips as string ! int get_subtargets(){ int st = get_ips_byhost(hostname, subtargets_addresses); for(int i=0; i<st; i++){ char *subtarget_hostname; subtarget_hostname = subtargets_addresses[i]; ! csubtarget *cst = new csubtarget(subtarget_hostname, par, out, isnd); subtargets.push_back(cst); } ! return st; ! } ! ! ! public: ! ! ctarget(char *hostname, iceparams *par, iceoutput *out, ice_service_name_database *isnd){ ! this->hostname = (char *) malloc(strlen(hostname)); ! this->isnd = isnd; ! strcpy(this->hostname, hostname); ! this->par = par; ! this->out = out; ! } ! bool discover(){ - int st = get_subtargets(); - bool discovered = false; ! for(int i=0; i<st; i++){ if(par->no_host_discovery) discovered |= (subtargets[i]->discovered = true); --- 15,66 ---- std::vector <char *> subtargets_addresses; //subtarget ips as string ! public: ! ! ctargets(iceparams *par, iceoutput *out, ice_service_name_database *isnd){ ! this->isnd = isnd; ! this->par = par; ! this->out = out; ! } ! ! int subtargets_count(){ ! return subtargets.size(); ! } ! ! int up_subtargets_count(){ ! int up = 0; ! ! for(int i = 0; i<subtargets.size(); i++){ ! if(subtargets[i]->discovered) up++; ! } ! } ! ! int add_subtargets(char *hostname){ int st = get_ips_byhost(hostname, subtargets_addresses); + + char *rev_hostname = new char[ICEMAXHOSTNAME]; + if((!is_domainname(hostname)) && par->reverse_dns) + get_host_byip(hostname, rev_hostname, ICEMAXHOSTNAME); + else + strcpy(rev_hostname, hostname); + for(int i=0; i<st; i++){ char *subtarget_hostname; subtarget_hostname = subtargets_addresses[i]; ! csubtarget *cst = new csubtarget(subtarget_hostname, rev_hostname, par, out, isnd); subtargets.push_back(cst); } ! ! delete rev_hostname; ! return st; ! } bool discover(){ bool discovered = false; ! for(int i=0; i<subtargets.size(); i++){ if(par->no_host_discovery) discovered |= (subtargets[i]->discovered = true); *************** *** 59,77 **** } ! void scan(){ ! for(int i=0; i<subtargets.size(); i++){ ! if(subtargets[i]->discovered){ ! subtargets[i]->scan(); ! } ! } ! } ! ~ctarget(){ ! free(hostname); ! for(int i=0; i<subtargets.size(); i++){ ! delete subtargets[i]; ! delete subtargets_addresses[i]; ! } ! } private: --- 72,89 ---- } ! void scan(){ ! for(int i=0; i<subtargets.size(); i++){ ! if(subtargets[i]->discovered){ ! subtargets[i]->scan(); ! } ! } ! } ! ~ctargets(){ ! for(int i=0; i<subtargets.size(); i++){ ! delete subtargets[i]; ! delete subtargets_addresses[i]; ! } ! } private: Index: TODO =================================================================== RCS file: /cvsroot/javanetsim/IceScan/TODO,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** TODO 30 Nov 2006 05:27:39 -0000 1.5 --- TODO 30 Nov 2006 06:43:50 -0000 1.6 *************** *** 5,9 **** -- UI -- - + add enable/disable reverse dns lookup; + add multiple targets handling; * fix reading port range for ack/udp/syn pings; --- 5,8 ---- *************** *** 29,36 **** -- Misc -- - + add scan time reporting - -- Bugs -- - - * crash on empty target - * handling multiple subtargets \ No newline at end of file --- 28,30 ---- |