python scapy的用法之ARP主机扫描和ARP欺骗
目录:
1.scapy介绍
2.安装scapy
3.scapy常用
4.ARP主机扫描
5.ARP欺骗
一、scapy介绍
scapy是一个可用于网络嗅探的非常强大的第三方库。
具有以下几个特点:
1.交互模式,用作第三方库。
2.可以用开做packet嗅探和伪造packet
3.已经再内部实现了大量的网络协议。(DNS,ARP,IP,TCP,UDP等等),可以用它来编写非常灵活实用的工具。
二、安装
pip intall scapy
pip install ipython(运行命令行方式需要)
注意:windows下安装scapy需要安装winpcap或者npcap(用于抓取网卡的数据),如果电脑安装果wireshark或者nmap就不用安装winpcap或者npcap。
winpcap官方下载地址:https://www.winpcap.org/install/default.htm
npcap官方下载地址:https://nmap.org/npcap/
测试scapy是否安装好以及能否抓取网卡(不能抓取网卡的话,请检查winpcap或者npcap是否安装成功)
三、scapy常用
1.嗅探流量包
sniff函数进行嗅探流量,iface表示使用的网卡接口,filter是过滤条件,count是嗅探包的个数。结果显示嗅探到了3个ARP包。可以输入pkts[i]查看包的具体内容。sniff别的参数可以查看帮助文档:help(sniff)
2.将嗅探到的包内容写到pcap文件和读取pcap文件。
wrpcap写,rdpcap读
3.收发数据包
3.1、send(),在第三层发送数据包,但没有接收功能。其他参数可以查看帮助:help(send)
fuzz函数的作用:可以更改一些默认的不被计算的值(比如校验和checksums),更改的值是随机的,但是是符合字段的值的。
3.2、sendp(),在第二层发送数据包,但没有接收功能。"(1,4)"小括号是范围代表1到4,第二个例子:发送4个包,ttl的值是1到4
3.3、sr(),在第三层发送数据包,有接收功能
srp同时收到响应数据包和不响应数据包,需要用两个变量来接收。
ans中有请求有响应,unans只有请求没有响应
下图可以看到ans[0]查看的数据是以元组的形式,利用下图的示例可以对特定主机的特定端口进行tcp扫描。
3.4、sr1(),在第三层发送数据包,有接收功能,但只接收第一个数据包。用于哪些判断和目标是否通,接收一个数据包就能判断,没必要接收多个。
下图可以看到,发送20个包,收到3个包,但只变量m存储一个包。
3.5、srloop(),在第三层连续发送数据包,有接收功能,且连续接收数据包。
3.6、srp()、srp1()、srploop()工作在第二层,具体用法可以查看帮助。
四、ARP主机扫描
1.使用scapy写一个ARP主机扫描脚本
#局域网主机扫描器 使用ARP扫描#主机扫描from scapy.all import *import timewifi="Intel(R) Dual Band Wireless-AC 3165"#构造数据包
Ether()层可以省略构造内容,因为默认就是,当然可以写上,可以加快速度p=Ether(dst="ff:ff:ff:ff:ff:ff