【Python】Scapy模块导入和基础学习

简介

 Scapy是一个Python程序,使用户能够发送,嗅探和剖析并伪造网络数据包。此功能允许构建可以探测,扫描或攻击网络的工具。

 换句话说,Scapy是一个功能 强大的交互式数据包操作程序。它能够伪造或解码大量协议的数据包,通过线路发送,捕获它们,匹配请求和回复等等。Scapy可以轻松处理大多数经典任务, 如扫描,跟踪路由,探测,单元测试,攻击或网络发现。它可以取代hping,arpspoof,arp-sk,arping,p0f甚至是 Nmap,tcpdump和tshark的某些部分。

 可以编辑链路层、网络层、传输层、应用层

Scapy交互式命令

命令

基础嗅探:

# 显示目前电脑上的所有网卡(和wireshark一样,一开始会显示所有网卡的流量,我们选择一块开始监听)
>>> show_interfaces()
# 流量嗅探命令
>>> sniff(count=10) # 返回10个包,如果没有指定网卡,那就是所有网卡
>>> sniff(count=10, iface="网卡名称") # 指定嗅探某一网卡的数据,会返回数据包类型,但没有具体信息
>>> sniff(count=10, iface="网卡名称", filter="icmp") # filter过滤器,和wireshark的过滤是一样的

>>> pkg=sniff(count=10, iface="网卡名称")
>>> pkg[0].show() # 查看第一个流量包的具体信息
>>> pkg.summary() # 查看所有数据包的摘要信息

ping命令(ICMP)数据包构造:

# 最基本的数据包发送
>>> send(IP(dst="192.168.121.133")/ICMP())  # 发送icmp协议数据包到dst主机,以后要学一下纯手发协议

# 在基础数据包的基础上带着payload去目标主机(标准的ping)
>>> data="114514"
>>> pkg=IP(src='源', dst='目的地')/ICMP()/data
>>> send(pkg, inter=1, count=5)

'''
发送参数:
pkg:数据包
iface:网口名称(区分大小写,中英文)
loop:循环发送
inter:每隔1秒发送
timeout:超时...秒就丢弃
verbose:False不显示详细信息
'''

# 发送数据包并接受响应
>>> resp=sr1(IP(src='源', dst='目的地')/ICMP()/data)  # 返回信息存在resp中
>>> resp  # 看一下里面的内容
# 用下面的方法拿取resp中的节点的单个属性
>>> resp[IP].id
>>> resp[ICMP].reply

arp协议数据包构造:(防火墙不会阻挡arp协议数据包,但是会阻挡icmp包,所以在ip探测时可以用arp协议进行探测)

# 有响应的数据包构造
>>> pkg=sr1(ARP(psrc="192.168.121.1", pdst="192.168.121.133"))  # 查找哪个mac是pdst ip地址,请把mac地址告诉psrc这个ip主机
>>> pkg[ARP].hwsrc  # 获取目标ip的mac地址

'''
timeout:超时...秒就丢弃
'''

tcp协议数据包构造:

# 向目标ip的目标端口发送tcp数据包,正常情况下flags="S"->只发送SYN,若flags="SA" 则直接发送SYN和ACK
>>> pkg=sr1(IP(src='本机ip', dst='目标ip')/TCP(dport=1234,flags="S"))
>>> pkg

在tcp数据包发送中,我们可以伪造src,此时可以伪造ip发送请求,但是无法获得回显,此时服务器仍然会等待三次握手,服务器连接资源会被占用,于是可以构造SYN泛洪攻击,形成ddos攻击。

Scapy在python代码中的写法

如何在pycharm中使用scapy
基础配置

如果你的电脑上有wireshark,并且可以用的话,说明如下操作已经完成,无需再进行配置,若无,则需要如下进行配置

 首先你要在本机开启流量监听的服务,需要下载winpcap或者npcap,这里我下载的是winpcap,如下是下载连接

https://www.winpcap.org/install/bin/WinPcap_4_1_3.exe

 winpcap配置教程:https://blog.csdn.net/weixin_50470498/article/details/121076080

开始用scapy

配置完成后,终端如下输入

# 我用的是这个方法
pip install scapy
# 网上查了还有这种导包:(但是不知道为什么这个我不能用)
pip install scapy-python3

下载完成后,我在pycharm中直接输入如下

import scapy
from scapy.all import *

 发现还是无法使用,于是我只能把下载好的包直接放到当前脚本的同一目录下了,虽然用的时候会有警告,但是至少能用。

在这里插入图片描述

 注意一定要是带有all.py的scapy文件才对,不知道为什么scapy-python3的包没有这个,所以我并没有用。

然后在代码中导包

import scapy
from scapy.all import *
# 终于可以用了
show_interfaces()
pkg = sniff(count=10, iface="VMware Virtual Ethernet Adapter for VMnet8")
pkg[0].show()

 具体的代码用法几乎和命令行差不多,这里我就直接放一个参考文章吧,如下

 Python使用Scapy详细教程:http://www.52codes.net/article/75907.html

结语

 在kali下是自带scapy的,但在windows在命令行用scapy今天装了一下午都没成功,不知道是哪里出错了,在pycharm里倒是可以用了,但是还是有报错,其实scapy在pycharm中的导入是有别的更好的方法的,但是网上找了很多文章,很杂乱,试过好几种方法都不行,真的难受,先这样用着吧,以后也许就会解决这个问题了。

参考网址:

https://blog.csdn.net/weixin_44006041/article/details/126178421

https://www.cnblogs.com/ConfusedChenSir/articles/16122699.html

你可能感兴趣的:(python,学习,网络)