Python灰帽——Scapy模块 / 数据包的构造、发送、接收、捕获
Scapy 库
基础
" 网络神器 " scapy
是 python 的一个第三方模块,能够发送、捕获、分析和铸造网络数据包
主要功能:扫描、识别、测试、攻击、包铸造、抓包分析
数据包的构造
在编辑器导入 scapy 包
from scapy.all import *
from scapy.layers.inet import *
简单构造
pkt = IP()/TCP()
# 该包的结构包含 IP 部分和 TCP 部分
构造数据包
pkt = IP(src="10.9.47.66",dst="10.6.47.88")/TCP()
Scapy 中的分层结构
OSI 模型中的下层协议在前,以/
隔开
Ether()/IP()/TCP()
Ether 类用于设置发送方和接收方的 MAC 地址
构造 HTTP、ICMP 包
pkt=IP()/TCP()/"GET / HTTP1.0\r\n\r\n"
pkt=IP(dst="192.168.147.215")/ICMP()
res=sr1(pkt)
res.show()
数据包的查看
查看数据包内容
pkt=IP()/TCP()
pkt.show()
显示的内容
###[ IP ]### version = 4ihl = Nonetos = 0x0len = Noneid = 1flags = frag = 0ttl = 64proto = tcpchksum = Nonesrc = 127.0.0.1dst = 127.0.0.1\options \
###[ TCP ]### sport = ftp_datadport = httpseq = 0ack = 0dataofs = Nonereserved = 0flags = Swindow = 8192chksum = Noneurgptr = 0options = ''
查看数据包格式
pkt=IP()/TCP()
ls(pkt)
显示的内容
version : BitField (4 bits) = 4 ('4')
ihl : BitField (4 bits) = None ('None')
tos : XByteField = 0 ('0')
len