基于python3的tkinter和scapy可视化报文构造工具(四)

前面已经将tkinter的界面相关知识已经介绍完了,其实tkinter用到的组件也不是很多,相信看完前面的三篇应该可以写一些简单的界面。本篇文章将正式进入报文构造和改包的学习。本工具选用的是python的第三方库scapy来进行相关功能实现,scapy需要自己安装,具体安装就不细讲了。学习任何的第三方库官方文档或者官方介绍当然是最佳的途径。scapy的官方介绍和用法https://scapy.readthedocs.io/en/latest/introduction.html。里面相关的用法非常详细,大家学习的过程中可以参考该链接。
下面讲讲scapy的简单使用。
1,进入scapy
在这里插入图片描述
2,scapy支持众多的协议,这也是该款工具的强大之处。当然我们在此只用到了常用的TCP,IP协议。咱们可以看看scapy支持的协议。命令行ls()可看,使用 ls(IP()) 可以查看IP数据包可以有哪些参数,其他的协议大家可以自行尝试
在这里插入图片描述
在这里插入图片描述
3,用scapy如何构造报文,其实也很简单,使用 IP() 就可以创建一个默认的数据包,传入符合协议标准的参数即可构造自己想要的报文。如使用IP(src=“192.168.1.222”,dst=“192.168.1.111”) 来创建一个源地址是192.168.1.222目的地址是192.168.1.111的数据包。使用show()或者ls()方法都可以显示数据包。
在这里插入图片描述
4, 互联网报文是有网络七层结构的(有的也说五层),IP层上有TCP层,scapy构造报文使用 ‘/’ 操作符来给数据包加上一层。例如构造一个TCP数据包,在IP层指明数据包的目的地址。在TCP层可以设定数据包的目的端口等等,同样传输层的另一个常见协议UDP数据包也是同理。从下图可以看到如果不指定mac地址目的mac地址会默认使用组播地址。
在这里插入图片描述
5,例如构造一个完整的http-request报文. Ether()/IP(src=“192.168.1.222”,dst=“192.168.1.111”)/TCP(sport=1234,dport=80,flags=24)/“POST /index.html HTTP/1.1\r\nAccept-Encoding: gzip\r\nContent-Type: application/json\r\nConnection: keep-alive\r\nHost: ftz.com.cn\r\n”
在这里插入图片描述
6,有时候需要对现有的报文进行改动,首先则需要读取现有的报文。使用rdpcap(filepath)来读取报文,参数就是报文的路径。httpPkt是一个保存报文的列表,通过下标索引可以定位到具体的数据包,如取一个数据包httpPkt[0]
先用wireshark打开已经存在的报文
在这里插入图片描述
再看看用scapy读取的报文
在这里插入图片描述
7,如何写入一个数据包呢,首先pktdump = PcapWriter(savefile, append=True, sync=True)用PcapWriter返回一个写入的句柄,然后调用pktdump.write(pkt)来写入一个数据包
在这里插入图片描述
可以看看保存的报文
在这里插入图片描述
以上就是scapy的一些基本用法,当然还有其他很多的功能,大家根据需要自行去学习尝试,本工具构造报文和改包主要用到的就是上面的一些用法。手敲不易,如果转载请带上出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ftzchina

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值