Netfilter在编辑TCP有效负载时崩溃

时间:2015-11-05 02:30:02

标签: c linux-kernel netfilter

我有一个Netfilter模块,可以捕获TCP数据包。

然后,我访问数据有效负载,然后替换一些单词。但是,它 偶尔出现错误,然后挂断电话。然后,数据包无法再通过......

只有端口80的TCP数据包通过。

Error

数据由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); 

2 个答案:

答案 0 :(得分:1)

您正在用更长的字符串替换字符串。这可能会溢出套接字缓冲区结构。这可能是导致事故的原因。

答案 1 :(得分:-1)

另外,请记住在使用新数据更改数据包数据后重新计算TCP校验和。