Python教程

python 自定义tcpip协议包工具scapy

本文主要是介绍python 自定义tcpip协议包工具scapy,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、介绍
Scapy是一个可以让用户发送、侦听和解析自定义网络报文的Python程序,比如只发物理层报文、只发icmp的报文等等,利用这个可以做很多在socket层数之下的小工具。
教程

二、Scapy下载安装
pip install scapy
在这里插入图片描述
三、使用方法

#导入库
#from scapy import * #linux
from scapy.all import * #windows

#生成各网络层的包
print("生成更网络层的包")
eth_packet = Ether()#生成以太网包
ip_packet = IP()    #生成以IP包
tcp_packet = TCP()  #生成tcp包
udp_packet = UDP()  #生成udp包
icmp_packet = ICMP()#生成icmp包
#查看包内容
print("查看包内容")
raw(eth_packet)# 使用raw()方法查看
hexdump(ip_packet)#使用hexdump()查看。类似Wireshark
Ether(raw(ip_packet))#raw()配合协议类查看。最佳
#raw()配合协议类查看。最佳
Ether(raw(ip_packet))# 查看该数据包以太网层内容(下层内容不层示,上层内容不解析只以load形式展示)
IP(raw(ip_packet))

#自定义字段生成各网络层的包
print("自定义字段生成各网络层的包")
print("在构造时直接传递参数")
ip_packet = IP(src="10.10.6.92",ttl=128)
IP(raw(ip_packet))

print("在生成后重新赋值")
ip_packet.src = "10.10.6.93"
ip_packet.ttl = 200
IP(raw(ip_packet))

print("同时自定义多层协议的字段")
ip_packet = Ether(src="00:00:00:00:00:11")/IP(src="10.10.6.92")
Ether(raw(ip_packet))

tcp_packet = Ether(src="00:00:00:00:00:11")/IP(src="10.10.6.92")/TCP(sport=1234)
Ether(raw(tcp_packet))

app_packet = IP()/TCP()/"GET / HTTP/1.0\r\n\r\n"
IP(raw(app_packet))

#包的发送接收
print("包的发送接收")
print("发送")
try:
    send(IP(dst="10.10.6.92")/ICMP())
except:
    print()
try:
    sendp(Ether()/IP(dst="10.10.6.92")/ICMP())
except:
    print()
print("发送并响应")
try:
    rec_packet = sr1(IP(dst="10.10.6.92")/ICMP()/"abcdefg")
    rec_packet
    print("直接读取某项值")
    rec_packet.src
    print("使用show()方法格式化输出")
    rec_packet.show()
except:
    print()

#syn扫描
print("syn扫描")
rec_packet = sr1(IP(dst="10.10.6.92")/TCP(dport=80,flags="S"))
rec_packet.show()



在这里插入图片描述

这篇关于python 自定义tcpip协议包工具scapy的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!