python arp扫描_python通过scapy编写arp扫描器

多网卡的情况下发送二层包需要配置网卡

三层包不需要配置接口

发包方法:

sr()

发送三层数据包,等待接收一个或者多个数据包的响应

sr1()

发送三层数据包,只会接收一个数据包的响应

srp()

发送二层数据包,然后一直等待回应

srp1()

发送二层发送数据包,只返回第一个答案

send()

只发送三层数据包,系统自动处理路由和两层信息

sendp()

只发送二层数据包

带p字母的都是发送二层数据包,必须要写以太网头部Ether(),而且如果是多接口一定要指定接口

不带p字母都是发送三层数据包,不需要填Ether头部,不需要指定接口

hwdst表示硬件MAC

verbose=False 表示关闭scapy自身的回显

通过Scapy看ARP结构:

c1e4ef720576cf74daf909c8c4e9fdf7.png

hwdst表示硬件MAC

verbose=False 表示关闭scapy自身的回显

srp返回包结构分析:

f1a771c5b631f3e3d6e99c547307430a.png

Demo:

#!/usr/bin/python3

from scapy.all import *

localmac = '00:0c:29:b6:6b:7d'

localip = '192.168.64.128'

destip = '192.168.64.129'

intername ='eth0'

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 = intername,timeout=1,verbose=False)

print("srp返回的类型",type(result_raw));

print("srp返回的信息:",result_raw);

print("=================================");

print("读取tuple中的第一个元素:",result_raw[0]);

print("类型:",type(result_raw[0]));

print("通过res方法将这个scapy内置的类转换成一个由tuple组成的list");

print("======

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值