我有一个Netfilter模块,可以捕获TCP数据包。
然后,我访问数据有效负载,然后替换一些单词。但是,它 偶尔出现错误,然后挂断电话。然后,数据包无法再通过......只有端口80的TCP数据包通过。
数据由data = (char *)((unsigned char *)tcp_header + (tcp_header->doff * 4));
while(strstr(data, "the") != NULL){
data = replace_str(data, "the", "REDACTED", 0);
//censors the word "the" and replaces with "REDACTED"
}
printk("Port 80 Web Data:\n %s \n",data);
答案 0 :(得分:1)
您正在用更长的字符串替换字符串。这可能会溢出套接字缓冲区结构。这可能是导致事故的原因。
答案 1 :(得分:-1)
另外,请记住在使用新数据更改数据包数据后重新计算TCP校验和。