python scapy模块

参考书籍:python渗透测试编程技术方法与实践
参考文档:https://github.com/Larryxi/Scapy_zh-cn/blob/master/README.md(Scapy中文使用文档)

本文为作者学习文章,按作者习惯写成,如有错误或需要追加内容请留言(不喜勿喷)
本文为追加文章

scapy包含大量的网络协议(DNS、ARP、IP、TCP、UDP等)

from scapy.all import *      #来自scapy.all文件,导入所有函数
python交互模式中:ls (*) *=Ether、IP、ICMP、TCP、UDP、ARP    等等,查看可以配置的参数

二层:

Ether = Ether(src="源mac",dst="目的mac")    
#构造数据包源mac地址表示**发送数据的主机mac**,目的mac地址表示**数据发送到的主机mac**

在这里插入图片描述

三层:

ip = IP(src="源IP地址", "dst=目的IP地址", ttl=32)
#构造数据包源IP地址表示**发送数据的主机**,目的IP地址表示**数据发送到的主机**


协议:
ARP:

ARP  = ARP(hwsrc='二层源mac', psrc='三层源IP', hwdst='二层目的mac', pdst='三层目的IP') 

在这里插入图片描述
TCP:

TCP = TCP(sport="源端口号", dport="目的端口号")
#源端口号表示**数据发送时来自的端口**,目的端口号表示**数据将被目的主机的哪个端口接收**

在这里插入图片描述
UDP:

UDP = UDP(sport="源端口号", dport="目的端口号")
#源端口号表示**数据发送时来自的端口**,目的端口号表示**数据将被目的主机的哪个端口接收**

在这里插入图片描述

注: 构建二层包:(以Ether层开头)

如:pkt=Ether/(IP or ARP)  	#构建IP数据包或者ARP数据包

构建三层包:(以IP层开头)

如:pkt=IP/(ICMP or TCP or UDP) 		#构建ICMP数据包、TCP数据包、UDP数据

只发送

sendp()  		#**二层数据包**		#如:sendp( Ether() / ARP() ) 
send()    		#**三层数据包**		#如:send( IP() / ICMP() )

只发送数据包不接送返回的数据

数据包发送:

sendp(pkt, iface="eth1")		#pkt(构建包的变量);iface(数据发送的接口)

发送并返回

二层:

 srp() 		#发送包, 返回回复的数据包和没有回复数据包的数量
 srp1() 		#发送包, 返回只回复或者发送数据包的详细信息及参数,显示这个参数的返回数据

二层数据包发送:

srp1(pkt, timeout=1)	#pkt(构建包的变量);timeout=1(超时1秒就丢弃,实际时间看程序处理能力而定)

三层:

 sr()  	#发送包, 返回回复的数据包和没有回复数据包的数量
 sr()返回一对列表,第一个就是发送的数据包及其应答组成的列表,第二个是无应答数据包组成的列表。
 
 sr1() 	#发送包, 返回只回复或者发送数据包的详细信息及参数,显示这个参数的返回数据

三层数据包发送:

sr1(pkt, timeout=1)		#pkt(构建包的变量);timeout=1(超时1秒就丢弃,实际时间看程序处理能力而定)

猜你喜欢

转载自blog.csdn.net/I_AM_WORRY/article/details/103599160
今日推荐