Browse Source

Add payload displaying

Martin Duquesnoy 13 years ago
parent
commit
4ef0264916
1 changed files with 20 additions and 1 deletions
  1. 20 1
      hftsniff.c

+ 20 - 1
hftsniff.c

@@ -9,6 +9,7 @@
 #include <unistd.h>
 #include <string.h>
 #include <limits.h>
+#include <ctype.h>
 
 #include <pcap.h>
 #include <sys/socket.h>
@@ -31,6 +32,14 @@
           printf("( \e[1m%s\e[0m ) ", s); \
      } while(/* CONSTCOND */ 0);
 
+#define DISP_PAYLOAD(p, l)               \
+     do {                                \
+          int i = 0;                     \
+          for(; i < (l) && (p)++; ++i)   \
+               if(isprint(*(p)))         \
+                    putchar((char)*(p)); \
+     } while(/* CONSTCOND */ 0);
+
 #define BYE(s, er)                           \
      do {                                    \
           fprintf(stderr,  s": (%s)\n", er); \
@@ -165,7 +174,8 @@ pkt_handle(unsigned char *args, const struct pcap_pkthdr *header, const unsigned
 {
      struct ethernet_header *eth;
      struct ip_header       *ip;
-     int                     len, plen, i = 0;
+     const unsigned char    *payload;
+     int                     len, plen, paylen, i = 0;
      bool                    pfound = false;
 
      /* Translate ethernet pkt */
@@ -198,8 +208,17 @@ pkt_handle(unsigned char *args, const struct pcap_pkthdr *header, const unsigned
           IP_SRCDEST(inet_ntoa(ip->ip_src), -1,  /* src  */
                      inet_ntoa(ip->ip_dst), -1); /* dest */
 
+
+          puts("\n");
+          return;
      }
 
+     /* Get / Display payload */
+     payload = (unsigned char*)(packet + ETHERNET_SIZE + len + plen);
+
+     if((paylen = ntohs(ip->ip_len) - (len + plen)) > 0)
+          DISP_PAYLOAD(payload, paylen);
+
      puts("\n");
 
      return;