阅读:1998回复:2
如何在内核模块中打印出捕获的数据包的内容
我用netfilter钩子写了一个捕获指定IP发往本地指定端口的UDP包的内核模块,功能已经实现。但是现在有个问题,我如何能在此模块内部打印出UDP头部后面的用户数据呢?
//uhead指针指向UDP头部 struct udphdr *uhead = (struct udphdr*)(skb->iphdr + sizeof(struct iphdr)); //去除UDP头,cdata指针指向用户数据 unsigned char *cdata = (unsigned char*)(uhead + sizeof(struct udphdr)); //我在客户端用socket调试工具发了udp数据包,内容为abcd,模块已经抓到该包 printk("%c",*cdata); //无法打印出字符a??? 请高手指点:如何在内核模块中打印出捕获的数据包的内容?谢谢! |
|
沙发#
发布于:2007-11-13 08:15
打印16进制,就像tcpdump一样
|
|
|
板凳#
发布于:2007-11-29 11:45
如2楼,用16进制打印,另外,通过循环遍历你要打印的长度。当然长度就是你的包长度了哦。
|
|