[Javanetsim-cvs] IceScan icescan.cc, 1.22, 1.23 icediscover.h, 1.14, 1.15
Status: Beta
Brought to you by:
darkkey
From: Alexander B. <da...@us...> - 2006-12-15 21:04:58
|
Update of /cvsroot/javanetsim/IceScan In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv10589 Modified Files: icescan.cc icediscover.h Log Message: no message Index: icescan.cc =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icescan.cc,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** icescan.cc 15 Dec 2006 17:46:18 -0000 1.22 --- icescan.cc 15 Dec 2006 21:04:55 -0000 1.23 *************** *** 8,28 **** void print_help(char *name){ ! printf("\nUSAGE: %s [options] [Scan type] target\n" "\t target can be hostname or IP address.\n" "WHOLE PROGRAM:\n" "\t-v[v[v[v]]]]: verbose levels\n" "HOST DISCOVERY:\n" "\t-P0: skip host discovery\n" "\t-PA: ACK Ping host discovery\n" ! "\t-PM: ARP 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/SA/SS/SW: tcp connect()/ACK/SYN/Window scan\n" "\t-SB: udp NetBIOS scan\n" "\t-SI: IP Protocol scan\n" ! "\t-SN/SF/SX: stealth Null/FIN/XMAS scan\n" "\t-S0: no scan\n" ! "\t--scanflags <flags>: Customize TCP scan flags (SF/SX/SN scans)" "PORTS SPECIFICATION:\n" "\t-p <port range>: specify port range to scan (default 1-1024).\n" --- 8,31 ---- void print_help(char *name){ ! printf("\nUSAGE: %s [options] [scan type] target\n" "\t target can be hostname or IP address.\n" "WHOLE PROGRAM:\n" "\t-v[v[v[v]]]]: verbose levels\n" "HOST DISCOVERY:\n" + "\t default is PA and PE.\n" "\t-P0: skip host discovery\n" "\t-PA: ACK Ping host discovery\n" ! "\t-PR: ARP host discovery\n" "\t-PE: ICMP Echo (aka standart ping) host discovery\n" + "\t-PT: ICMP Timestamp host discovery\n" "\t-r: no reverse-dns lookups\n" "SCAN TYPES:\n" + "\t default id tcp connect()\n" "\t-ST/SA/SS/SW: tcp connect()/ACK/SYN/Window scan\n" "\t-SB: udp NetBIOS scan\n" "\t-SI: IP Protocol scan\n" ! "\t-SN/SF/SX: stealth tcp Null/FIN/XMAS scan\n" "\t-S0: no scan\n" ! "\t--scanflags <flags>: Customize TCP scan flags (SF/SX/SN scans)\n" "PORTS SPECIFICATION:\n" "\t-p <port range>: specify port range to scan (default 1-1024).\n" *************** *** 186,192 **** break; ! case 'M': par->arp_discovery = true; break; default: --- 189,199 ---- break; ! case 'R': par->arp_discovery = true; break; + + case 'T': + par->icmp_timestamp_ping_discovery = true; + break; default: Index: icediscover.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icediscover.h,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** icediscover.h 15 Dec 2006 17:46:18 -0000 1.14 --- icediscover.h 15 Dec 2006 21:04:55 -0000 1.15 *************** *** 11,15 **** #define ACK_PING_STANDART_PORT 80 #define ARP_PING_STANDART_PORT 138 ! #define ECHO_ATTEMPTS 5 bool tcp_ack_ping(const char *hostname, iceparams *par, iceoutput *out){ --- 11,17 ---- #define ACK_PING_STANDART_PORT 80 #define ARP_PING_STANDART_PORT 138 ! #define ATTEMPTS 5 ! ! enum Icmp_type {ECHO, TIMESTAMP}; bool tcp_ack_ping(const char *hostname, iceparams *par, iceoutput *out){ *************** *** 32,38 **** } ! bool icmp_echo_ping(const char *hostname, iceparams *par, iceoutput *out){ ! //pthread_t send_thread; ! #ifndef __CYGWIN__ if(!getuid() || par->forceuid){ --- 34,38 ---- } ! bool icmp_ping(const char *hostname, iceparams *par, iceoutput *out, enum Icmp_type icmp_type){ #ifndef __CYGWIN__ if(!getuid() || par->forceuid){ *************** *** 62,74 **** while(attempts++ < 100){ ! if(at++<=ECHO_ATTEMPTS){ ! if(par->verbose>0) ! out->line("Sending icmp ping host discovery request (echo_request)..."); ! char buf[sizeof(struct timeval) + 1]; ! gettimeofday( ( struct timeval *) buf, NULL); ! ! r.send_icmp_packet(hostname, ICMP_ECHO, 0, getpid(), at, 0, buf, sizeof(struct timeval)); iceusleep(200000); --- 62,79 ---- while(attempts++ < 100){ ! if(at++<=ATTEMPTS){ ! short int msg_type = ICMP_ECHO; char buf[sizeof(struct timeval) + 1]; + + if(icmp_type == ECHO){ + gettimeofday( ( struct timeval *) buf, NULL); + if(par->verbose>0) out->line("Sending icmp ping host discovery request (echo_request)..."); + }else if(icmp_type == TIMESTAMP){ + if(par->verbose>0) out->line("Sending icmp timestamp host discovery request..."); + bzero(buf, sizeof(struct timeval) + 1); + msg_type = ICMP_TSTAMP; + } ! r.send_icmp_packet(hostname, msg_type, 0, getpid(), at, 0, buf, sizeof(struct timeval)); iceusleep(200000); *************** *** 89,99 **** int icmplen = len - hdrlen; ! if(icmp -> icmp_type == ICMP_ECHOREPLY && icmp->icmp_id == getpid() && icmplen > 16){ if(par->verbose>0) out->line("Recieved icmp ping host discovery reply (echo_reply)."); free(t_hostname); r.shutdown(); r.close(); return true; } --- 94,123 ---- int icmplen = len - hdrlen; ! bool result = false; ! ! if(icmp->icmp_id == getpid() && icmplen > 16){ ! if(icmp -> icmp_type == ICMP_ECHOREPLY && icmp_type == ECHO){ ! result = true; if(par->verbose>0) out->line("Recieved icmp ping host discovery reply (echo_reply)."); + }else if(icmp -> icmp_type == ICMP_TSTAMPREPLY && icmp_type == TIMESTAMP){ + result = true; + if(par->verbose>0) + out->line("Recieved icmp timestamp host discovery reply."); + + char *buf; + + uint32_t t = ntohl(icmp->icmp_rtime); + + DBGOUTPUT(t); + + DBGOUTPUT(make_uptime(t)); + } + if(result){ free(t_hostname); r.shutdown(); r.close(); return true; + } } *************** *** 141,149 **** if(par->ack_ping_discovery) if( tcp_ack_ping(hostname, par, out) ) return true; ! if(par->icmp_echo_ping_discovery) if( icmp_echo_ping(hostname, par, out) ) return true; if(par->arp_discovery) if( arp_discovery(hostname, par, out) ) return true; ! if(par->verbose>0) *out << "Ack host discovery failed!" << iceoutput::endl; return false; --- 165,175 ---- if(par->ack_ping_discovery) if( tcp_ack_ping(hostname, par, out) ) return true; ! if(par->icmp_echo_ping_discovery) if( icmp_ping(hostname, par, out, ECHO) ) return true; ! ! if(par->icmp_timestamp_ping_discovery) if( icmp_ping(hostname, par, out, TIMESTAMP) ) return true; if(par->arp_discovery) if( arp_discovery(hostname, par, out) ) return true; ! if(par->verbose>0) *out << "Host discovery failed!" << iceoutput::endl; return false; |