Я пытаюсь отбросить сетевые пакеты, которые содержат строку: то есть, если на веб-странице написано «бесплатная загрузка», мне нужен мой модуль ядра, чтобы отбросить пакеты, содержащие эту строку. Я пытаюсь просканировать sk_buff в хуке netfilter, но не уверен, что это правильное место для поиска строки. вот код:
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;
}