⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 print-http.c

📁 该软件根据网络数据生成NetFlow记录。NetFlow可用于网络规划、负载均衡、安全监控等
💻 C
字号:
#include <stdlib.h>#include <sys/param.h>#include <sys/types.h>#include <netinet/in.h>#include <netinet/in_systm.h>#include <netinet/ip.h>#include <netinet/ip_var.h>#include <netinet/tcp.h>#include <netinet/tcpip.h>#include "interface.h"#include "seq.h"#define LINE_LEN 256/* vt100 escapes for boldface */char csf_bld[] = {27, 91, 49, 58, 109, 0};char csb_def[] = {27, 91, 52, 59, 109, 0};void print_content(const u_char *start, const u_char *end){  int i = 0;  u_char *cp = (u_char *)start;  while(cp++ < end)    {      if (i >= LINE_LEN)	{	  printf("\n\t");	  i = 0;	}      if (isprint(*cp))	{	  if (zflag > 1)	    printf("%s%c%s", csf_bld, *cp, csb_def);	  else	    printf("%c", *cp);	  i++;	}      else if (*cp == 0x0a)	{	  printf("<NL>\n\t"); /* explicitly show nl */	  i = 0;	}      else if (*cp == 0x0d)	{	  printf("<CR>"); /* explicitly show cr */	  i += 4;	}      else if (*cp == 0x09)	{	  printf("<tab>"); /* explicitly show tab */	  i += 5;	}      else	{	  printf("[%02x]", *cp);	  i += 4;	}    }}void http_print(struct tcphdr *tp, int length)	  /* length = TCP payload */{  u_char *zp = (u_char *)tp + (tp->th_off * 4) -1;  u_char *end = snapend -1;  int truncated = (zp + length) - end;  char http_delim[] = {0x0d, 0x0a, 0x0d, 0x0a, '\0'};  u_char *http_end = (u_char *)seqstr_l((char *)zp, http_delim, snapend - zp);  printf("\n\t");  if (http_end)    {      http_end += 3;		/* print delim seq as part of hdr */      print_content(zp, http_end); /* HTTP header */      zp = http_end;    }    print_content(zp, end); /* HTML content */     if (truncated)    {      if (truncated < 0)	{	  if (truncated != -6) /* min len tcp packet with ether 'padding' */	    printf("\n\ttruncation error!");	}      else	{	  printf("\n\t---truncated by %d bytes---", truncated);	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -