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的主要内容,如果未能解决你的问题,请参考以下文章
利用WIRESHARK捕获了一个ARP数据报文,其十六进代码表示为:000108000604000