如何擦除内核模块变量中的数据?

时间:2019-03-17 02:28:46

标签: kernel-module

我有一个内核模块,可以检查请求的IP地址,如果请求中包含不良数据(垃圾邮件关键字),则将其添加到“黑名单”变量中。

我声明黑名单的方式如下:

#define blacklist (uint32_t[3]) { \
  2071690107, \
  168430090, \
  4294967295 \
}

我已经完成了一些初步测试(过滤IPv4,printk日志),并且必须已经阻止了我需要测试的请求之一的ip地址。

之所以这样说,是因为当我进行一次make clean,make并重新插入模块时,我会自动看到IP地址被阻止。

应该发生的情况是,数据打印首先显示一个垃圾邮件字,然后阻止IP地址,然后它将打印它在任何后续请求中都已被阻止(我知道不久后将进行处理)。

Mar 16 18:43:33 deadsupra-VirtualBox kernel: [36594.961054] Module insertion completed successfully!
Mar 16 18:43:46 deadsupra-VirtualBox kernel: [36607.186539] ip checking: 127.0.0.1
Mar 16 18:43:46 deadsupra-VirtualBox kernel: [36607.186541] ip is already blacklisted 127.0.0.1
Mar 16 18:43:46 deadsupra-VirtualBox kernel: [36607.186546] ip checking: 127.0.0.1
Mar 16 18:43:46 deadsupra-VirtualBox kernel: [36607.186547] ip is already blacklisted 127.0.0.1
Mar 16 18:43:51 deadsupra-VirtualBox kernel: [36612.190103] ip checking: 127.0.0.1
Mar 16 18:43:51 deadsupra-VirtualBox kernel: [36612.190108] ip is already blacklisted 127.0.0.1
Mar 16 18:43:51 deadsupra-VirtualBox kernel: [36612.190119] ip checking: 127.0.0.1
Mar 16 18:43:51 deadsupra-VirtualBox kernel: [36612.190121] ip is already blacklisted 127.0.0.1

我的make文件如下:

obj-m += wander.o 

KERNELDIR ?= /lib/modules/$(shell uname -r)/build

all:
    make -C $(KERNELDIR) -Wno-declaration-after-statement M=$(PWD) modules 

clean:
    make -C $(KERNELDIR) M=$(PWD) clean

insert:
    -sudo rmmod wander
    sudo dmesg -C
    sudo insmod wander.ko
    dmesg

test:
    curl "http://www1.udel.edu/registrar/graduation-diplomas/diplomas.html" | grep -i -o -P '.{0,10}university.diploma.{0,20}'

log:
    cat /var/log/kern.log

我不能正确清理项目空间吗?我想每次刷新测试场景,而忘记重建源代码时以前阻塞的任何IP地址。

我在想,当我清洁模块时,它会删除它,但是出于某种原因必须保留数据。

0 个答案:

没有答案