码迷,mamicode.com
首页 > 其他好文 > 详细

arp

时间:2019-03-20 10:29:16      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:error   apu   daemon   程序   日志   ret   用户态   mac地址   turn   

问题背景:

  想要协议栈给不是接口ip的报文,ipv4回复arp request,ipv6回复 ndisc solication。

#include <stdio.h>

//调用该函数成为一个守护进程
void daemon(void)
{

    return;
}

/*ipv4*/
void parent(void)
{
    //创建socket
    socket();

    while(1) {
        recvfrom();

        //正确性检查
        write_log();

        switch () {
            default :
                continue;
            case :
                ;
        }

        //判断是否在地址池中
        if ()
            continue;


        arp_reply();

    }

    return;
}

/*ipv6*/
void child(void)
{
    //创建socket
    socket();

    while(1) {
        recvfrom();

        //正确性检查
        write_log();

        //判断协议类型,只处理ndisc ns报文
        switch () {
            default :
                continue; //while cycle
            case :
                ;
        }
        
        if () 
            continue;

        icmpv6_ndisc_ns();
    }

    return;
}

int main()
{
    pid_t pid;

    daemon();

    if (pid > 0) {
        parent();
    } else if (pid == 0){
        child();
    } else {
        perror("fork error");
        return -1;
    }

    return 0;

}

涉及技术:

  1.守护进程(apue中有通用code)

  2.raw socket抓包

  3.文件读写锁

  4.用户态回复数据包(参见arposion)

  5.写日志

 应用:

  1.可以使用这个程序导致同一局域网内pc ip地址冲突,因为是pc使用一个ip地址时候都会用arp、icmpv6做重复地址检测。进一步可以设定mac地址,从而实现局域网内的mac、ip地址绑定。

 

arp

标签:error   apu   daemon   程序   日志   ret   用户态   mac地址   turn   

原文地址:https://www.cnblogs.com/rivsidn/p/10561364.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!