Example #1
0
/*
 * print packet payload data (avoid printing binary data)
 */
void
SNIFFER::print_payload(const u_char *payload, int len)
{

        int len_rem = len;
        int line_width = 16;
        int line_len;
        int offset = 0;
        const u_char *ch = payload;

        if (len <= 0)
                return;


        if (len <= line_width) {
                print_hex_ascii_line(ch, len, offset);
                return;
        }


        for ( ;; ) {
                line_len = line_width % len_rem;
                print_hex_ascii_line(ch, line_len, offset);
                len_rem = len_rem - line_len;
                ch = ch + line_len;
                offset = offset + line_width;
                if (len_rem <= line_width) {  
                        print_hex_ascii_line(ch, len_rem, offset);
                        break;
                }
        }

return;
}
Example #2
0
/*
 * 打印包的有效载荷数据(避免打印二进制数据)
 * print packet payload data (avoid printing binary data)
 */
void
print_payload(const u_char *payload, int len)
{

        int len_rem = len;
        int line_width = 16;                        /* 每行的字节数 | number of bytes per line */
        int line_len;
        int offset = 0;                                        /* 从0开始的偏移计数器 | zero-based offset counter */
        const u_char *ch = payload;

        if (len <= 0)
                return;

        /* data fits on one line */
        if (len <= line_width) {
                print_hex_ascii_line(ch, len, offset);
                return;
        }

        /* 数据跨越多行 data spans multiple lines */
        for ( ;; ) {
                /* 计算当前行的长度 | compute current line length */
                line_len = line_width % len_rem;

                /* 显示分割线 | print line */
                print_hex_ascii_line(ch, line_len, offset);

                /* 计算总剩余 | compute total remaining */
                len_rem = len_rem - line_len;

                /* 转移到打印的剩余字节的指针
                   shift pointer to remaining bytes to print */
                ch = ch + line_len;

                /* 添加偏移 | add offset */
                offset = offset + line_width;

                /* 检查是否有线宽字符或更少
                   check if we have line width chars or less */
                if (len_rem <= line_width) {
                        /* print last line and get out */
                        print_hex_ascii_line(ch, len_rem, offset);
                        break;
                }
        }

return;
}
Example #3
0
void
 print_frame(const u_char *payload, int len)
 {

 	PRINT_DEBUG("passed len = %d", len);
 	int len_rem = len;
 	int line_width = 16;			/* number of bytes per line */
 	int line_len;
 	int offset = 0;					/* zero-based offset counter */
 	const u_char *ch = payload;


 	if (len <= 0)
 		return;

 	/* data fits on one line */
 	if (len <= line_width) {
 		PRINT_DEBUG("calling hex_ascii_line");
 		print_hex_ascii_line(ch, len, offset);
 		return;
 	}

 	/* data spans multiple lines */
 	for ( ;; ) {
 		/* compute current line length */
 		line_len = line_width % len_rem;
 		/* print line */
 		print_hex_ascii_line(ch, line_len, offset);
 		/* compute total remaining */
 		len_rem = len_rem - line_len;
 		/* shift pointer to remaining bytes to print */
 		ch = ch + line_len;
 		/* add offset */
 		offset = offset + line_width;
 		/* check if we have line width chars or less */
 		if (len_rem <= line_width) {
 			/* print last line and get out */
 			print_hex_ascii_line(ch, len_rem, offset);
 			break;
 		}
 	}

 return;
 } // end of print_frame
Example #4
0
/*
 * print packet payload data (avoid printing binary data)
 */
void print_payload(const u_char *payload, int len)
{
 const u_char *ch = payload;
 
 int len_rem = len;
 int line_len;
 int offset = 0;     /* zero-based offset counter */
 int line_width = 16;   /* number of bytes per line */
 

 if (len < 1)
  return;
 
 /* data fits on one line */
 if (len < line_width+1) {
  print_hex_ascii_line(ch, len, offset);
  return;
 }
 
 /* data spans multiple lines */
 while(1) {
  /* compute current line length */
  line_len = line_width % len_rem;
  /* print line */
  print_hex_ascii_line(ch, line_len, offset);
  /* compute total remaining */
  len_rem = len_rem - line_len;
  /* shift pointer to remaining bytes to print */
  ch = ch + line_len;
  /* add offset */
  offset = offset + line_width;
  /* check if we have line width chars or less */
  if (len_rem < line_width+1) {
   /* print last line and get out */
   print_hex_ascii_line(ch, len_rem, offset);
   break;
  }
 }
 
return;
}
Example #5
0
void print_payload(const u_char *payload, int len)
{
	int len_rem = len;
	int line_width = 16;			
	int line_len;
	int offset = 0;					
	const u_char *ch = payload;

	if (len <= 0)
		return;

	/* data fits on one line */
	if (len <= line_width) {
		print_hex_ascii_line(ch, len, offset);
		return;
	}

	/* data spans multiple lines */
	for ( ;; ) {
		/* compute current line length */
		line_len = line_width % len_rem;
		/* print line */
		print_hex_ascii_line(ch, line_len, offset);
		/* compute total remaining */
		len_rem = len_rem - line_len;
		/* shift pointer to remaining bytes to print */
		ch = ch + line_len;
		/* add offset */
		offset = offset + line_width;
		/* check if we have line width chars or less */
		if (len_rem <= line_width) {
			/* print last line and get out */
			print_hex_ascii_line(ch, len_rem, offset);
			break;
		}
	}
}
static void print_payload(const unsigned char *payload, int len)
{
    int len_remain = len;
    int line_width = 16;
    int offset = 0;
    const unsigned char *line_start = payload;

    if (len <= 0)
    {
        return;
    }

    printf("---------------------- Payload ------------------------\n");

    while (len_remain > line_width)
    {
        print_hex_ascii_line(line_start, line_width, offset);
        len_remain = len_remain - line_width;
        line_start = line_start + line_width;
        offset = offset + line_width;
    }

    print_hex_ascii_line(line_start, len_remain, offset);
}