arp

Posted rivsidn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了arp相关的知识,希望对你有一定的参考价值。

问题背景:

  想要协议栈给不是接口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的主要内容,如果未能解决你的问题,请参考以下文章

ARP欺骗

利用WIRESHARK捕获了一个ARP数据报文,其十六进代码表示为:000108000604000

Arp 欺骗/中毒不工作/停止工作

python 一些快速脏的示例代码和操作ARP数据包的函数(用于网络过滤器测试)。

发arp应答包欺骗别人

ARP协议字段解读