日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用netfilter框架处理ARP报文

發布時間:2025/4/5 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用netfilter框架处理ARP报文 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內核開發交流群 745510310 歡迎加入學習

利用netfilter的框架實現對arp報文的處理,這里只是打印arp報文信息,更多的處理可以在此基礎上實現。

arp 首部封裝格式:


內核版本 :,

不同版本內核頭文件可能不一樣帶來編譯出錯問題,可以參考這篇博客https://blog.csdn.net/fuyuande/article/details/79429441 更新一下內核。

源碼如下:

/** Description : print arp packet info* Date : 20180331* Author : fuyuande* Note : Kernel version 3.4.39*/#include <linux/init.h> #include <linux/module.h> #include <linux/if_ether.h> #include <linux/in.h> #include <linux/ip.h> #include <linux/if_arp.h> #include <linux/skbuff.h> #include <linux/netfilter.h> #include <linux/netfilter_ipv4.h> #include <linux/netfilter_arp.h>#define LOG(fmt,arg...) printk("[%s %d] "fmt,__FUNCTION__,__LINE__,##arg)/* arp內容 */ #pragma pack(push,1) /* 字節對齊 */ struct arp_info {unsigned char src[ETH_ALEN];__be32 srcip;unsigned char dst[ETH_ALEN];__be32 dstip; }; #pragma pack(pop)#define IP1(addr) ((unsigned char *)&addr)[0] #define IP2(addr) ((unsigned char *)&addr)[1] #define IP3(addr) ((unsigned char *)&addr)[2] #define IP4(addr) ((unsigned char *)&addr)[3]static unsigned int arp_input_hook(unsigned int hooknum,struct sk_buff *skb,const struct net_device *in,const struct net_device *out,int (*okfn)(struct sk_buff *)) {struct ethhdr * ethh = NULL;/* 獲取L2層首部 */ethh = eth_hdr(skb);if(ethh == NULL){return NF_ACCEPT; } /* 打印網絡層協議類型 */LOG(" L3 type :%x \r\n",ethh->h_proto);return NF_ACCEPT; } static unsigned int arp_output_hook(unsigned int hooknum,struct sk_buff *skb,const struct net_device *in,const struct net_device *out,int (*okfn)(struct sk_buff *)) {struct arphdr *arph = NULL;????/* arp首部 */struct arp_info *arpinfo = NULL;arph = arp_hdr(skb);?????????? /* 獲取arp首部 */?if(arph == NULL){LOG("Weird! arp header null \r\n");return NF_ACCEPT;}/* 打印arp首部信息 */LOG(" arp info :\r\n""-------------\r\n" "arp hw type :%x \r\n""arp pro type :%x \r\n""arp hln :%d\r\n""arp plen:%d\r\n""arp ops :%d\r\n""-------------\r\n", ntohs(arph->ar_hrd),ntohs(arph->ar_pro),arph->ar_hln,arph->ar_pln,ntohs(arph->ar_op));/* 打印mac地址信息 */??? arpinfo = (unsigned char *)(arph + 1);LOG("\n-------------\r\n""mac : %x:%x:%x:%x:%x:%x \r\n""sip : %d:%d:%d:%d \r\n""dmac : %x:%x:%x:%x:%x:%x \r\n""dip : %d:%d:%d:%d \r\n""-------------\r\n",arpinfo->src[0],arpinfo->src[1],arpinfo->src[2],arpinfo->src[3],arpinfo->src[4],arpinfo->src[5],IP1(arpinfo->srcip),IP2(arpinfo->srcip),IP3(arpinfo->srcip),IP4(arpinfo->srcip),arpinfo->dst[0],arpinfo->dst[1],arpinfo->dst[2],arpinfo->dst[3],arpinfo->dst[4],arpinfo->dst[5],IP1(arpinfo->dstip),IP2(arpinfo->dstip),IP3(arpinfo->dstip),IP4(arpinfo->dstip)); return NF_ACCEPT; }struct nf_hook_ops arp_hook_ops[] ={{.hook = arp_input_hook,????/* 輸入arp鉤子函數*/.pf = NFPROTO_ARP,???????? /* 協議類型 */???.hooknum = NF_ARP_IN,????? /* arp input 鏈*/ ?.priority = 0,???????????? /* 優先級 */ ??},{.hook = arp_output_hook, /* 輸出arp鉤子函數 */.pf = NFPROTO_ARP, /* 協議類型 */.hooknum = NF_ARP_OUT,???? /* arp output 鏈 */???.priority = 0,???????????? /* 優先級 */},{} };static int __init arp_hook_init(void) {/* 注冊netfilter鉤子 */nf_register_hooks(arp_hook_ops,ARRAY_SIZE(arp_hook_ops));return 0; }static void __exit arp_hook_exit(void) {/* 注銷netfilter鉤子 */??? nf_unregister_hooks(arp_hook_ops,ARRAY_SIZE(arp_hook_ops));return ; }module_init(arp_hook_init) module_exit(arp_hook_exit) MODULE_LICENSE("GPL");

Makefile:

obj-m := arphook.o PWD :=$(shell pwd) KERNEL_DIR :="/usr/src/linux-headers-3.4.39-030439-generic/"modules:$(MAKE) -C $(KERNEL_DIR) M=${PWD} modules clean:@rm *.ko *.mod.c *.o Modu* modu*

在內核3.4.39版本上可以直接執行如下命令編譯、加載

#編譯模塊 sudo make #加載模塊 sudo insmod arphook.ko #卸載模塊 sudo rmmod arphook.ko

效果如下:


一開始鉤子函數注冊在PF_INET上,沒有抓到ARP報文,后來查了查,發現協議注冊錯了,更改成NFPROTO_ARP就可以。


總結

以上是生活随笔為你收集整理的使用netfilter框架处理ARP报文的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男女www视频 | 男女做网站 | 日韩二区三区四区 | 女人一区二区三区 | 高潮毛片无遮挡免费看 | 美女脱得一干二净 | 六月久久 | 国产在线无 | 国产av一区二区三区最新精品 | 精品一区在线看 | 欧美性生活一级 | 国产男同gay网站 | 高潮毛片无遮挡免费看 | 大香伊人中文字幕精品 | 国产黄色小视频在线观看 | 中国黄色免费 | 国产模特av私拍大尺度 | 亚洲一区二区av | 美梦视频大全在线观看高清 | 色偷偷av男人的天堂 | 黄色成人av | 午夜av不卡| 在线免费观看黄色网址 | 动漫3d精品一区二区三区乱码 | 亚洲国产综合网 | 婷婷综合另类小说色区 | 在线观看av资源 | 黄色中文视频 | 免费中文字幕 | 久久黄色精品视频 | 欧美一级不卡 | 91手机在线播放 | 欧美色图小说 | 欧美激情婷婷 | 色偷偷av男人的天堂 | 日日狠狠久久偷偷四色综合免费 | 精品91久久久久久 | 男男做的视频 | 亚洲乱熟女一区二区三区小说 | 毛片最新网址 | 久草免费在线色站 | 成人久色 | 成人av视屏 | 久久网站免费看 | 成人tiktok黄短视频 | 住在隔壁的她动漫免费观看全集下载 | 不卡二区| 色大师在线观看 | 久草视频福利在线 | 日韩精品一区二区三区在线播放 | 亚洲免费国产 | 久久免费在线观看 | 中文视频一区 | 精品小视频| 欧美精品videos极品 | 成人免费视频网 | 国产成人精品在线视频 | 中文在线一区 | 黄色午夜 | 不卡的av在线免费观看 | 我要看一级黄色片 | 久久成年 | 欧美人妻精品一区二区三区 | 欧美日韩成人免费观看 | 日韩毛片在线看 | 成人在线毛片 | 国产成人精品无码播放 | 影音先锋中文字幕一区二区 | 一区二区三区小说 | 久久蜜臀精品av | 小柔的裸露日记h | 国产女厕一区二区三区在线视 | 国产精品久久毛片 | 在线亚洲免费 | 国产又粗又猛又黄视频 | 亚洲精品成人无码毛片 | 国产又粗又猛又爽又黄av | 精品成人免费一区二区在线播放 | 亚洲国产精品天堂 | 国产精品最新 | 男人天堂中文字幕 | 亚洲精品欧洲 | 青草福利视频 | 欧美日韩在线视频免费观看 | www色亚洲 | 91精品国自产在线偷拍蜜桃 | av无限看 | 美利坚合众国av | 加勒比一区二区三区 | 中文字幕欧美在线 | 国产福利影院 | 中文字幕免费看 | 免费麻豆| 中文字幕一区二区三区在线视频 | 91亚洲影院| 久久久久久久久久久久久女国产乱 | 人妻少妇精品无码专区久久 | 欧美一区二区在线看 | 日本不卡视频一区二区 |