关于linxu下发送ARP REPLY程序
前几天在网上看了点关于ARP的程序,想写一个ARP REPLY程序,写了一部分时发现还是不懂相关知识。现在我简单接受一下程序。a
rkR5LhNH
Linux伊甸园论坛&f{ prWM"D
1: 定义了 struct sockaddr att_addr , att_addr.sa_family=PF_PACKET, strcpy(att_addr.sa_data, "eth0")这句话是抄别人的,实话说我不太懂,大概意思是选择现用的网卡,我想那样的话IP它能自动取出。1} `cz*Ji4XNE
i p/L-Y]1L6y.@"l*b]2:创建socket, sockfd=socket(PF_PACKET,SOCK_PACKET,htons(0x800)) ,我想不需要bind吧。#XE%Ol1Z~ F"w|
www.linuxeden.comP~.dvb:Z:H
3:封装数据包,定义 char p_send[1024], 封装ethenr_header ,(struct ether_header *)p_send . 封装 ether_arp, (struct ether *)(p_send+sizeof(ether_header)),填充数据
DA!?2g'nS:K/k
V-k
8EF.Pb"@1D&l"W
H0ghz)ta2]O%u4:然后发送数据 sendto(sockfd,p_send,p_length,0,&att_addr,sizeof(att_addr))
bb{8c
G&~5_v$^0YLinux伊甸园论坛
Ov+x9e"B[/Fyr高手们看看有什么问题吗?是不是我哪地方做得不对了?为什么我用tcpdump听不到包?
|