[Javanetsim-cvs] IceScan icescan.cc, 1.16, 1.17 ctarget.h, 1.7, 1.8 icediscover.h, 1.8, 1.9 iceserv
Status: Beta
Brought to you by:
darkkey
From: Alexander B. <da...@us...> - 2006-12-14 13:42:14
|
Update of /cvsroot/javanetsim/IceScan In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv25064 Modified Files: icescan.cc ctarget.h icediscover.h iceservice.h csubtarget.h Log Message: no message Index: icescan.cc =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icescan.cc,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** icescan.cc 13 Dec 2006 22:40:30 -0000 1.16 --- icescan.cc 14 Dec 2006 13:42:07 -0000 1.17 *************** *** 1,2 **** --- 1,3 ---- + #include <string> #include "icesockets/csocket.h" #include "iceparams.h" *************** *** 162,166 **** IceRegex re("(\\d+(-\\d+)?),?"); ! icestring var="", var2 = ""; re.match(argv[i+1]); --- 163,167 ---- IceRegex re("(\\d+(-\\d+)?),?"); ! icestring var = "", var2 = ""; re.match(argv[i+1]); *************** *** 168,176 **** //re.Consume(&input, &var, &var2) while(re.findNext()){ ! // DBGOUTPUT(v.size()); ! // DBGOUTPUT(v[0]); re.group(1,var); if(re.groups() > 2) re.group(2,var2); struct port_range pr; if(var2 == ""){ sscanf(var.c_str(), "%d", &pr.lower_port); --- 169,177 ---- //re.Consume(&input, &var, &var2) while(re.findNext()){ ! var2 = ""; var = ""; re.group(1,var); if(re.groups() > 2) re.group(2,var2); struct port_range pr; + if(var2 == ""){ sscanf(var.c_str(), "%d", &pr.lower_port); Index: iceservice.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/iceservice.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** iceservice.h 13 Dec 2006 09:08:33 -0000 1.4 --- iceservice.h 14 Dec 2006 13:42:07 -0000 1.5 *************** *** 2,9 **** #define ICESERVICE_H - #include <pcrecpp.h> #include <iostream> #include <fstream> #include <map> #include "icedebug.h" --- 2,9 ---- #define ICESERVICE_H #include <iostream> #include <fstream> #include <map> + #include <string> #include "icedebug.h" *************** *** 30,34 **** //DBGOUTPUT("!!!!"); - //pcrecpp::RE re1("^(#.*|\\s*)$"); IceRegex re1("^(#.*|\\s*)$"); --- 30,33 ---- *************** *** 36,40 **** if(! re1.match(tmpbuf) ){ //FullMatch - //pcrecpp::RE re("^([-a-z1-9]+)\\s*\\W*([0-9]+)/(tcp|udp)"); IceRegex re("^([-a-z1-9]+)\\s*\\W*([0-9]+)/(tcp|udp)"); --- 35,38 ---- *************** *** 43,49 **** int port; - //pcrecpp::StringPiece input(tmpbuf); - //re.Consume(&input, &sname, &port, &protocol); - std::vector<icestring> v; --- 41,44 ---- *************** *** 65,74 **** } ! string get_tcp_service(int port){ if(tcp_services.find(port) != tcp_services.end()) return udp_services[port]; else return "unknown"; } ! string get_udp_service(int port){ } --- 60,69 ---- } ! icestring get_tcp_service(int port){ if(tcp_services.find(port) != tcp_services.end()) return udp_services[port]; else return "unknown"; } ! icestring get_udp_service(int port){ } Index: csubtarget.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/csubtarget.h,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** csubtarget.h 14 Dec 2006 05:21:42 -0000 1.17 --- csubtarget.h 14 Dec 2006 13:42:07 -0000 1.18 *************** *** 14,18 **** #include "iceprotocol.h" ! #define CONNECT_TIMEOUT 7 #ifdef __CYGWIN__ --- 14,18 ---- #include "iceprotocol.h" ! #define CONNECT_TIMEOUT 14 #ifdef __CYGWIN__ *************** *** 228,262 **** if ((tcp->th_flags & TH_RST) && (par->scan_type == FIN_SCAN || par->scan_type == NULL_SCAN || par->scan_type == XMAS_SCAN)) { int closed_port = ntohs(tcp->th_sport); ! ! set_port_status(closed_port, PORT_CLOSED); ! ! if(scanning_ports.find(closed_port) != scanning_ports.end()) ! scanning_ports[closed_port].done = true; }else if ((tcp->th_flags & TH_RST) && (par->scan_type == WINDOW_SCAN)) { int port = ntohs(tcp->th_sport); ! ! if(tcp->th_win == 0){ ! set_port_status(port, PORT_CLOSED); ! }else{ ! set_port_status(port, PORT_OPEN); ! } ! ! if(scanning_ports.find(port) != scanning_ports.end()) scanning_ports[port].done = true; }else if ((tcp->th_flags & TH_RST) && (par->scan_type == ACK_SCAN)) { int port = ntohs(tcp->th_sport); ! set_port_status(port, PORT_UNFILTERED); ! ! if(scanning_ports.find(port) != scanning_ports.end()) scanning_ports[port].done = true; }else if ((tcp->th_flags & TH_RST) && (par->scan_type == SYN_SCAN)) { int port = ntohs(tcp->th_sport); if(port != MAGIC_PORT){ ! set_port_status(port, PORT_CLOSED); ! ! if(scanning_ports.find(port) != scanning_ports.end()) scanning_ports[port].done = true; } }else if ((tcp->th_flags & (TH_ACK|TH_SYN)) && (par->scan_type == SYN_SCAN)) { --- 228,272 ---- if ((tcp->th_flags & TH_RST) && (par->scan_type == FIN_SCAN || par->scan_type == NULL_SCAN || par->scan_type == XMAS_SCAN)) { int closed_port = ntohs(tcp->th_sport); ! ! if(scanning_ports.find(closed_port) != scanning_ports.end()){ ! if(!scanning_ports[closed_port].done){ ! set_port_status(closed_port, PORT_CLOSED); ! scanning_ports[closed_port].done = true; ! } ! } }else if ((tcp->th_flags & TH_RST) && (par->scan_type == WINDOW_SCAN)) { int port = ntohs(tcp->th_sport); ! ! if(scanning_ports.find(port) != scanning_ports.end()){ ! if(!scanning_ports[port].done){ scanning_ports[port].done = true; + if(tcp->th_win == 0){ + set_port_status(port, PORT_CLOSED); + }else{ + set_port_status(port, PORT_OPEN); + } + } + } }else if ((tcp->th_flags & TH_RST) && (par->scan_type == ACK_SCAN)) { int port = ntohs(tcp->th_sport); ! ! if(scanning_ports.find(port) != scanning_ports.end()){ ! if(!scanning_ports[port].done){ ! set_port_status(port, PORT_UNFILTERED); scanning_ports[port].done = true; + } + } }else if ((tcp->th_flags & TH_RST) && (par->scan_type == SYN_SCAN)) { int port = ntohs(tcp->th_sport); if(port != MAGIC_PORT){ ! ! if(scanning_ports.find(port) != scanning_ports.end()){ ! if(!scanning_ports[port].done){ scanning_ports[port].done = true; + set_port_status(port, PORT_CLOSED); + } + } } }else if ((tcp->th_flags & (TH_ACK|TH_SYN)) && (par->scan_type == SYN_SCAN)) { *************** *** 264,273 **** if(port != MAGIC_PORT){ ! set_port_status(port, PORT_OPEN); ! ! rawsend.send_tcp_raw(source, hostname, MAGIC_PORT, port, 0, 0, TH_RST, 0, 0, 0); ! ! if(scanning_ports.find(port) != scanning_ports.end()) scanning_ports[port].done = true; } } --- 274,285 ---- if(port != MAGIC_PORT){ ! ! if(scanning_ports.find(port) != scanning_ports.end()){ ! if(!scanning_ports[port].done){ ! set_port_status(port, PORT_OPEN); ! rawsend.send_tcp_raw(source, hostname, MAGIC_PORT, port, 0, 0, TH_RST, 0, 0, 0); scanning_ports[port].done = true; + } + } } } *************** *** 440,444 **** for(int j = 0; j<par->ports.size(); j++){ port_range pr = par->ports[j]; ! for(int i = pr.lower_port; i <= pr.upper_port; i++){ if(scanning_ports.find(i) == scanning_ports.end()){ --- 452,456 ---- for(int j = 0; j<par->ports.size(); j++){ port_range pr = par->ports[j]; ! for(int i = pr.lower_port; i <= pr.upper_port; i++){ if(scanning_ports.find(i) == scanning_ports.end()){ Index: icediscover.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/icediscover.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** icediscover.h 14 Dec 2006 05:21:42 -0000 1.8 --- icediscover.h 14 Dec 2006 13:42:07 -0000 1.9 *************** *** 2,6 **** #define ICEDISCOVER_H - #include <pthread.h> #include <signal.h> #include <sys/time.h> --- 2,5 ---- *************** *** 14,24 **** #define ECHO_ATTEMPTS 5 - struct discover_thread_params{ - char *hostname; - const iceparams *par; - iceoutput *out; - crawsocket *r; - }; - bool tcp_ack_ping(const char *hostname, iceparams *par, iceoutput *out){ --- 13,16 ---- *************** *** 40,88 **** } ! void *send_icmp_echo(void *arg){ ! struct discover_thread_params *dtp = (struct discover_thread_params *) arg; ! ! crawsocket *r = dtp->r; ! char *hostname = dtp->hostname; ! iceoutput *out = dtp->out; ! const iceparams *par = dtp->par; char buftosend[1500]; int nsent = 1; - for(int i=0; i<ECHO_ATTEMPTS; i++){ - bzero(buftosend, 1500); - - struct icmp *icmp = (struct icmp *) buftosend; - - icmp->icmp_type = ICMP_ECHO; - icmp->icmp_code = 0; - icmp->icmp_id = getpid(); - gettimeofday( ( struct timeval *) icmp->icmp_data, NULL); - icmp->icmp_seq = nsent++; - - int len = 8 + 56; // icmp header + icmp data - - icmp->icmp_cksum = crawsocket::in_chksum( (unsigned short * ) icmp, len); - - if(par->verbose>0) - out->line("Sending icmp ping host discovery request (echo_request)..."); - - r->sendto(hostname, buftosend, len, 0); - - icesleep(0, 100); - } ! pthread_exit(NULL); } bool icmp_echo_ping(const char *hostname, iceparams *par, iceoutput *out){ ! #ifndef __CYGWIN__ ! if(!getuid()){ #else ! if(1){ #endif //we're root, so can work with raw sockets char *t_hostname = (char *) malloc(strlen(hostname) + 1); --- 32,78 ---- } ! void send_icmp_echo(icestring &hostname_, const iceparams *par_, iceoutput *out_, crawsocket *r_){ ! crawsocket *r = r_; ! const char *hostname = hostname_.c_str(); ! iceoutput *out = out_; ! const iceparams *par = par_; char buftosend[1500]; int nsent = 1; ! bzero(buftosend, 1500); ! ! struct icmp *icmp = (struct icmp *) buftosend; ! ! icmp->icmp_type = ICMP_ECHO; ! icmp->icmp_code = 0; ! icmp->icmp_id = getpid(); ! gettimeofday( ( struct timeval *) icmp->icmp_data, NULL); ! icmp->icmp_seq = nsent++; ! ! int len = 8 + 56; // icmp header + icmp data ! ! icmp->icmp_cksum = crawsocket::in_chksum( (unsigned short * ) icmp, len); ! ! if(par->verbose>0) ! out->line("Sending icmp ping host discovery request (echo_request)..."); ! ! r->sendto(hostname, buftosend, len, 0); ! ! icesleep(0, 100); ! } bool icmp_echo_ping(const char *hostname, iceparams *par, iceoutput *out){ ! //pthread_t send_thread; ! #ifndef __CYGWIN__ ! if(!getuid()){ #else ! if(1){ #endif //we're root, so can work with raw sockets + icestring hostname_(hostname); char *t_hostname = (char *) malloc(strlen(hostname) + 1); *************** *** 99,148 **** r.setsockopt(SOL_SOCKET, SO_RCVBUF, &size, sizeof(size)); - - struct discover_thread_params dtp; - - dtp.hostname = t_hostname; - dtp.par = par; - dtp.out = out; - dtp.r = &r; - - pthread_t send_thread; - - r.nonblock(true); - - pthread_create(&send_thread, NULL, send_icmp_echo, (void *) &dtp); ! pthread_join(send_thread, NULL); ! ! return true; ! while(attempts++ < ECHO_ATTEMPTS){ ! char hostname[1024]; char buf[1500]; //1500 == standart IP Packet size int len = recvfrom(r.get_socketid(), buf, sizeof(buf), 0, NULL, NULL); ! struct ip *ip = (struct ip *) buf; ! int hdrlen = ip->ip_hl << 2; ! ! struct icmp *icmp = (struct icmp *) (buf + hdrlen); ! ! 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)..."); ! pthread_join(send_thread, NULL); ! free(t_hostname); ! r.shutdown(); ! r.close(); ! return true; ! } } - pthread_join(send_thread, NULL); //--- is it needed here? - r.shutdown(); r.close(); --- 89,130 ---- r.setsockopt(SOL_SOCKET, SO_RCVBUF, &size, sizeof(size)); ! r.nonblock(true); ! ! int at = 0; ! while(attempts++ < 100){ ! if(at++<ECHO_ATTEMPTS){ ! send_icmp_echo(hostname_, par, out, &r); ! usleep(100000); ! } ! ! char hostname[1024]; char buf[1500]; //1500 == standart IP Packet size int len = recvfrom(r.get_socketid(), buf, sizeof(buf), 0, NULL, NULL); + if(len > 0){ ! struct ip *ip = (struct ip *) buf; ! int hdrlen = ip->ip_hl << 2; ! ! struct icmp *icmp = (struct icmp *) (buf + hdrlen); ! ! 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; ! } ! ! }else usleep(50000); } r.shutdown(); r.close(); Index: ctarget.h =================================================================== RCS file: /cvsroot/javanetsim/IceScan/ctarget.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** ctarget.h 13 Dec 2006 09:08:33 -0000 1.7 --- ctarget.h 14 Dec 2006 13:42:07 -0000 1.8 *************** *** 41,45 **** if((!is_domainname(hostname)) && par->reverse_dns){ ! get_host_byip(hostname, rev_hostname); }else{ rev_hostname.assign(hostname); --- 41,47 ---- if((!is_domainname(hostname)) && par->reverse_dns){ ! get_host_byip(hostname, rev_hostname); ! ! if(rev_hostname == "") rev_hostname.assign(hostname); }else{ rev_hostname.assign(hostname); |