ARP格式:

用于以太网的ARP请求/应答分组格式
各字段含义:
帧类型:表示数据部分用什么协议封装(0800表示IP,0806表示ARP,8035表示RARP)。
硬件类型:表示硬件地址的类型(其中,值为1表示以太网地址,其他还可能表示令牌环地址)。
硬件地址长度:指出该报文中硬件地址的长度(ARP报文中,它的值为6)。
协议地址长度:指出该报文中协议地址的长度(ARP报文中,它的值为4)。
op:操作字段,共有4种类型(1:ARP请求,2:ARP应答,3:RARP请求,4:RARP应答)。
利用scay发送接受ARP包:
代码:
#coding:utf-8
from scapy.all import Ether
from scapy.all import ARP
from scapy.all import srp
arp = Ether(#构造以太网头
src='64:6E:69:03:63:32',#本机MAC
dst='FF:FF:FF:FF:FF:FF'#广播发送
)/ARP(
op=1,#发送arp请求
hwsrc='64:6E:69:03:63:32',#发送端以太网地址
psrc='10.50.253.232',#发送端ip
hwdst='00:00:00:00:00:00',#目的以太网地址
pdst='10.50.0.1'#目的ip地址
)
res = srp(arp,timeout=5)
string = """
--------result--------
hwtype :%s
ptype :%s
hwlen :%s
plen :%s
op :%s
hwsrc :%s
psrc :%s
hwdst :%s
pdst :%s
""" %(res[0].res[0][1].hwtype,res[0].res[0][1].ptype,res[0].res[0][1].hwlen,
res[0].res[0][1].plen,res[0].res[0][1].op,res[0].res[0][1].hwsrc,
res[0].res[0][1].psrc,res[0].res[0][1].hwdst,res[0].res[0][1].pdst)
print string
返回的结果是元组(代码中的res),res[0]表示收到的数据包,res[1]表示没有收到应答的数据包
结果截图:
来源:https://www.cnblogs.com/D0y-xia/p/11048669.html