我正在尝试使用 C 从数据包嗅探中构造 HTTP 内容。现在,我可以将所有数据包保存在一个文件中,但我想摆脱第一个数据包中的标头。标头也被保存,因为它们是 TCP 有效负载的一部分。标头之后的实际正文在双“CR,LF”之后或"\r\n\r\n"
在 HTTP 响应中开始。
我如何检测"\r\n"
以便我只能保存它后面的缓冲区部分?缓冲区是 u_char 类型。我无法弄清楚命令。我查看了谷歌和其他地方,但我主要找到 C# 命令 - C 中没有。
我正在使用这个功能
void strtofcntnt(const u_char * Biffer, int size)
{
unsigned short iphdrlen;
struct iphdr *iph = (struct iphdr *)(Buffer + sizeof(struct ethhdr));
iphdrlen = iph->ihl*4;
struct tcphdr *tcph = (struct tcphdr*)(Buffer + iphdrlen + sizeof(struct ethhdr))
;
char data[] = *(Buffer);
char rdata[] = strstr(data, "\r\n\r\n");
unsigned int i;
for (i=0;i<=sizeof(data);i++)
{
fprintf(logfile,"%c",(unsigned int)data[i]);
}}
但它在编译期间在 chara data[] 和 char rdata[] 行中给出错误。错误说无效的初始化程序。