亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 18941 | 回復(fù): 18
打印 上一主題 下一主題

[內(nèi)核模塊] 攔截自己編寫的ARP發(fā)包程序發(fā)出去的ARP包不成功 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2014-12-30 15:43 |只看該作者 |倒序瀏覽
本帖最后由 liudeyi545 于 2015-01-05 18:54 編輯

我想實現(xiàn)的功能是:防止本機在中ARP病毒后,病毒向網(wǎng)關(guān)發(fā)送虛假ARP包,所以攔截本機發(fā)出去的ARP包,對其原MAC地址進行比較,如果和本機一致則通過,不一致說明是病毒發(fā)出去的,就丟棄。但是沒有實現(xiàn)!

內(nèi)核版本號:3.13.0-43

#define arp_hrd ea_hdr.ar_hrd
#include<linux/module.h>
#include<linux/init.h>
#include<linux/kernel.h>
#include<linux/netfilter.h>
#include<linux/netfilter_ipv4.h>
#include<linux/ip.h>
#include<net/ip.h>
#include<linux/udp.h>
#include<linux/in.h>
#include<linux/skbuff.h>
#include<linux/netdevice.h>
#include<linux/if_ether.h>
#include<linux/if.h>
#include<linux/if_arp.h>
#include<linux/netfilter_arp.h>

unsigned int hook_func(
                unsigned int hooknum,//功能函數(shù)掛載點
               struct sk_buff *skb,//數(shù)據(jù)包結(jié)構(gòu)體指針
                const struct net_device *in,
                const struct net_device *out,
                int (*okfn)(struct sk_buff *)
                                          )
{
        struct arphdr *arp;//定義ARP包結(jié)構(gòu)體
        unsigned char *sha,*arp_ptr;
        char buf[20];
        arp=arp_hdr(skb);//獲取數(shù)據(jù)包ARP頭
        arp_ptr=(unsigned char*)(arp+1);
        //指針偏移找到數(shù)據(jù)包源MAC地址
        sha=arp_ptr;
        sprintf(buf,"%02x:%02x:%02x:%02x:%02x:%02x",sha[0],sha[1],sha[2],sha[3],sha[4],sha[5]);
        if(strcmp(buf,"dc:0e:a1:e8:94:d6")==0)
        {        
                printk("MATCH!\n");
                return NF_ACCEPT;
        //若數(shù)據(jù)包源MAC地址與本機MAC一致則通過
        }
        else
        {        
                printk("UNMATCH!\n");
        //若數(shù)據(jù)包源MAC地址與本機MAC地址不一致,則丟棄該數(shù)據(jù)包
                return NF_DROP;
        }
}

static struct nf_hook_ops nfho={
        .hook=hook_func,//注冊功能函數(shù)
        .pf=NFPROTO_ARP,//協(xié)議規(guī)則
        .hooknum=NF_ARP_OUT,//掛載點
        .priority=NF_IP_PRI_FIRST,//處理優(yōu)先級
        .owner=THIS_MODULE,//指定模塊
        };

static int __init hook_init(void)//注冊模塊
{
        if (nf_register_hook(&nfho)) {  
        printk(KERN_ERR"<0>nf_register_hook() failed\n");  
        return -1;  
    }  
    return 0;
}

static void __exit hook_fini(void)//注銷模塊
{
        nf_unregister_hook(&nfho);
}

module_init(hook_init);
module_exit(hook_fini);
MODULE_LICENSE("GPL");

這個鉤子對于自己編寫ARP發(fā)包程序發(fā)出去的ARP包不起作用,不明白為什么?請大家指教!

論壇徽章:
16
CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:3415-16賽季CBA聯(lián)賽之廣東
日期:2015-12-23 21:21:55青銅圣斗士
日期:2015-12-05 10:35:30黃金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日論壇發(fā)貼之星
日期:2015-11-18 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-18 06:20:002015亞冠之城南
日期:2015-11-10 19:10:492015亞冠之薩濟拖拉機
日期:2015-10-28 18:47:282015亞冠之柏太陽神
日期:2015-08-30 17:21:492015亞冠之山東魯能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
2 [報告]
發(fā)表于 2014-12-31 19:24 |只看該作者
內(nèi)核版本號

論壇徽章:
16
CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:3415-16賽季CBA聯(lián)賽之廣東
日期:2015-12-23 21:21:55青銅圣斗士
日期:2015-12-05 10:35:30黃金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日論壇發(fā)貼之星
日期:2015-11-18 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-18 06:20:002015亞冠之城南
日期:2015-11-10 19:10:492015亞冠之薩濟拖拉機
日期:2015-10-28 18:47:282015亞冠之柏太陽神
日期:2015-08-30 17:21:492015亞冠之山東魯能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
3 [報告]
發(fā)表于 2014-12-31 22:27 |只看該作者
直接打印skb->data數(shù)據(jù)看 是否是你想要的arp報文

論壇徽章:
16
CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:3415-16賽季CBA聯(lián)賽之廣東
日期:2015-12-23 21:21:55青銅圣斗士
日期:2015-12-05 10:35:30黃金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日論壇發(fā)貼之星
日期:2015-11-18 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-18 06:20:002015亞冠之城南
日期:2015-11-10 19:10:492015亞冠之薩濟拖拉機
日期:2015-10-28 18:47:282015亞冠之柏太陽神
日期:2015-08-30 17:21:492015亞冠之山東魯能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
4 [報告]
發(fā)表于 2014-12-31 22:32 |只看該作者
后者在你的hook函數(shù)最前面調(diào)用這個函數(shù)skb_reset_mac_header(skb);  在進行你后面的操作

論壇徽章:
0
5 [報告]
發(fā)表于 2015-01-05 11:20 |只看該作者
內(nèi)核版本號:3.13.0-43
#define arp_hrd ea_hdr.ar_hrd
#include<linux/module.h>
#include<linux/init.h>
#include<linux/kernel.h>
#include<linux/netfilter.h>
#include<linux/netfilter_ipv4.h>
#include<linux/ip.h>
#include<net/ip.h>
#include<linux/udp.h>
#include<linux/in.h>
#include<linux/skbuff.h>
#include<linux/netdevice.h>
#include<linux/if_ether.h>
#include<linux/if.h>
#include<linux/if_arp.h>
#include<linux/netfilter_arp.h>

unsigned int hook_func(
                unsigned int hooknum,//功能函數(shù)掛載點
               struct sk_buff *skb,//數(shù)據(jù)包結(jié)構(gòu)體指針
                const struct net_device *in,
                const struct net_device *out,
                int (*okfn)(struct sk_buff *)
                                          )
{
        struct arphdr *arp;//定義ARP包結(jié)構(gòu)體
        unsigned char *sha,*arp_ptr;
        char buf[20];
        arp=arp_hdr(skb);//獲取數(shù)據(jù)包ARP頭
        arp_ptr=(unsigned char*)(arp+1);
        //指針偏移找到數(shù)據(jù)包源MAC地址
        sha=arp_ptr;
        sprintf(buf,"%02x:%02x:%02x:%02x:%02x:%02x",sha[0],sha[1],sha[2],sha[3],sha[4],sha[5]);
        if(strcmp(buf,"dc:0e:a1:e8:94:d6")==0)
        {       
                printk("MATCH!\n");
                return NF_ACCEPT;
        //若數(shù)據(jù)包源MAC地址與本機MAC一致則通過
        }
        else
        {       
                printk("UNMATCH!\n");
        //若數(shù)據(jù)包源MAC地址與本機MAC地址不一致,則丟棄該數(shù)據(jù)包
                return NF_DROP;
        }
}

static struct nf_hook_ops nfho={
        .hook=hook_func,//注冊功能函數(shù)
        .pf=NFPROTO_ARP,//協(xié)議規(guī)則
        .hooknum=NF_ARP_OUT,//掛載點
        .priority=NF_IP_PRI_FIRST,//處理優(yōu)先級
        .owner=THIS_MODULE,//指定模塊
        };

static int __init hook_init(void)//注冊模塊
{
        if (nf_register_hook(&nfho)) {  
        printk(KERN_ERR"<0>nf_register_hook() failed\n");  
        return -1;  
    }  
    return 0;
}

static void __exit hook_fini(void)//注銷模塊
{
        nf_unregister_hook(&nfho);
}

module_init(hook_init);
module_exit(hook_fini);
MODULE_LICENSE("GPL");

這個鉤子對于自己編寫ARP發(fā)包程序發(fā)出去的ARP包不起作用,不明白為什么?請您指教!

回復(fù) 4# tc1989tc


   

論壇徽章:
0
6 [報告]
發(fā)表于 2015-01-05 11:26 |只看該作者
現(xiàn)在的程序可以正確打印原MAC地址,但是攔截效果沒有實現(xiàn)。回復(fù) 3# tc1989tc


   

論壇徽章:
0
7 [報告]
發(fā)表于 2015-01-05 17:26 |只看該作者
你這是 自己實現(xiàn)的arptables嗎?
要實現(xiàn)什么功能。感覺你邏輯上有點兒混亂吧。out里面arp包源mac肯定與本地一致的吧

論壇徽章:
0
8 [報告]
發(fā)表于 2015-01-05 18:25 |只看該作者
您好,我想實現(xiàn)的效果是防止本機在中ARP病毒后,本機ARP病毒向網(wǎng)關(guān)發(fā)送錯誤的MAC地址,所以攔截本機發(fā)出去的ARP包進行分析。回復(fù) 7# anyhit


   

論壇徽章:
0
9 [報告]
發(fā)表于 2015-01-05 18:39 |只看該作者
我在內(nèi)核中嵌入我編寫的這個模塊之后,用我自己寫的ARP發(fā)包程序發(fā)出去的虛假ARP包并不能被攔截,而本機發(fā)出去的ARP請求包可以被捕獲,這個問題困擾了我好久。回復(fù) 7# anyhit


   

論壇徽章:
16
CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:3415-16賽季CBA聯(lián)賽之廣東
日期:2015-12-23 21:21:55青銅圣斗士
日期:2015-12-05 10:35:30黃金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日論壇發(fā)貼之星
日期:2015-11-18 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-18 06:20:002015亞冠之城南
日期:2015-11-10 19:10:492015亞冠之薩濟拖拉機
日期:2015-10-28 18:47:282015亞冠之柏太陽神
日期:2015-08-30 17:21:492015亞冠之山東魯能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
10 [報告]
發(fā)表于 2015-01-05 19:12 |只看該作者
你自己寫的arp發(fā)送程序是怎么樣的?確定是不是經(jīng)過arp的out hook函數(shù)處理了
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP