标签: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地址绑定。
标签:error apu daemon 程序 日志 ret 用户态 mac地址 turn
原文地址:https://www.cnblogs.com/rivsidn/p/10561364.html