gpt4 book ai didi

linux - 丢弃包含字符串 linux 内核模块的数据包

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:14 25 4
gpt4 key购买 nike

我正在尝试丢弃包含字符串的网络数据包:即,如果网页上显示“免费下载”,我需要我的内核模块来丢弃包含该字符串的数据包。我正在尝试扫描 netfilter Hook 中的 sk_buff,但不确定这是否是查找字符串的正确位置。这是代码:

unsigned int hook_func_outgoing(void *priv,
struct sk_buff *skb,
const struct nf_hook_state *state) {
int pos;
struct ts_config *conf;
struct ts_state statetext;
const char *pattern = "free download";

conf = textsearch_prepare("kmp", pattern, strlen(pattern),
GFP_KERNEL, TS_AUTOLOAD);

pos = textsearch_find_continuous(conf, &statetext, skb->data, skb->len);
printk(KERN_INFO "pos: %d", pos);
printk(KERN_INFO "data: %s ", skb->data);
if (pos != UINT_MAX){
return NF_DROP;
printk(KERN_INFO "found spam\n");
}
textsearch_destroy(conf);
return NF_ACCEPT;
}

最佳答案

这并不像听起来那么容易。

我不完全了解编写用于网络过滤的内核模块,因此我无法对您的代码发表评论。但我认为这里的主要问题是您只能访问“原始”数据包。现在的互联网大多使用 TLS (https) 加密,因此您无法在该级别读取传输内容(这很好)。这意味着您的模块只能在未加密的 HTTP 连接上工作。另一个问题可能是 HTTP 压缩,如 GZIP这也会扰乱您的数据。

关于linux - 丢弃包含字符串 linux 内核模块的数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54192942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com