python-arp-request

import sys

from scapy.layers.l2 import Ether, ARP
from scapy.sendrecv import srp
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)#清除报错

localmac = '00:0c:29:c8:c1:c8'
localip = '172.16.20.122'
destip = '172.16.20.254'
ifname = 'eth0'
#源MAC为本地MAC####目的MAC为广播#########操作码为1(请求),由于多个网卡所以需要指派iface
result_raw = srp(Ether(src=localmac,dst='FF:FF:FF:FF:FF:FF')/ARP(op=1,hwsrc=localmac,hwdst='00:00:00:00:00:00', psrc=localip, pdst=destip), iface = ifname, timeout = 1, verbose = False)
#print(result_raw[0].res[0][1].getlayer(ARP).fields['hwsrc'])
#(<Results: TCP:0 UDP:0 ICMP:0 Other:1>, <Unanswered: TCP:0 UDP:0 ICMP:0 Other:0>)
#print(result_raw[0])
#<Results: TCP:0 UDP:0 ICMP:0 Other:1>
#print(type(result_raw[0]))
#<class 'scapy.plist.SndRcvList'>
#res是<class 'scapy.plist.SndRcvList'>的方法,产生收发数据的清单
result_list = result_raw[0].res
#提取[0],第一个元组(收发数据),元组内包含发送数据包,和一个或者多个接收数据包
#这是一个清单,清单内的item为元组,元组由发送数据包,和一个或者多个接收数据包组成

print('IP地址: ' + result_list[0][1][1].fields['psrc'] + ' MAC地址: ' + result_list[0][1][1].fields['hwsrc'])

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李先生在闯荡江湖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值