Nmap Development mailing list archives

Re: Status Report #16 of 17


From: Jack Grahl <mnvl16 () yahoo co uk>
Date: Mon, 10 Aug 2009 23:15:19 +0000 (GMT)


Regarding detecting the right ICMP packets. The following patch worked for me, but with one problem. When printing 
stats at the end, every ICMP packet, not just the relevant ones, was included in the RCVD stats for all targets 
combined, although the individual host stats were correct. This is because addRecvPacket is called in line 1613 just 
above the part I changed, regardless of the packet.

I'm not sure how best to fix that, IF this is right solution.

Jack

--- nping/nping.cc      2009-08-11 00:00:33.000000000 +0100
+++ nping-build/nping.cc        2009-08-09 11:54:14.000000000 +0100
@@ -174,6 +174,7 @@
 int do_safe_checks();
 void test_stuff();
 struct sockaddr_storage *getSrcSockAddrFromPacket(u8 *pkt, size_t pktLen);
+struct sockaddr_storage *getIcmpDestAddrFromPacket(u8 *pkt, size_t pktLen);
 u16 *getSrcPortFromPacket(u8 *pkt, size_t pktLen);
 u8 *getTCPheaderLocation(u8 *pkt, size_t pktLen);
 
@@ -1619,7 +1620,11 @@
                         trg->setProbeRecvTCP(*prt, 0);
                 }
             }else if (o.getMode()==ICMP){
+             if(trg != NULL){
                 trg->setProbeRecvICMP(0, 0);
+             }else if (trg=o.targets.findTarget( getIcmpDestAddrFromPacket((u8*)packet, packetlen))){
+               trg->setProbeRecvICMP(0, 0);
+             }
             }
        break;
 
@@ -1857,6 +1862,25 @@
 } /* End of getSrcSockAddrFromPacket() */
 
 
+/** @warning Returns pointer to an internal static buffer */
+struct sockaddr_storage *getIcmpDestAddrFromPacket(u8 *pkt, size_t pktLen){
+
+static struct sockaddr_storage ss;
+struct sockaddr_in *s_ip4=(struct sockaddr_in *)&ss;
+struct ip *i4=(struct ip*)pkt;
+memset(&ss, 0, sizeof(struct sockaddr_storage));
+
+  if(pkt==NULL || pktLen < 48)
+    return NULL;
+
+    s_ip4->sin_family=AF_INET;
+    memcpy(&(s_ip4->sin_addr.s_addr), pkt+44, 4);
+
+  return &ss;
+


      

_______________________________________________
Sent through the nmap-dev mailing list
http://cgi.insecure.org/mailman/listinfo/nmap-dev
Archived at http://SecLists.Org


Current thread: