20200914 -
0. 引言
翻出来很久之前的代码, 当时是测试是否可以修改PCAP包中的端口号,通过DPKT直接修改就好,例如下面的代码就是将PCAP中的一条流的端口22编程5022。
#修改端口
if tcp.dport == 22:
tcp.dport = 5022
if tcp.sport == 22:
tcp.sport = 5022
其实经过了这个步骤,如果你不需要校验和必须正确的话,在wireshark中是可以解析的(不开TCP校验和)。本篇文章中,记录一下怎么修改TCP内容后,同时保证校验和正确。
1. 校验和计算
IP头部中的校验和,只是校验了IP头部,并不对数据进行校验;但TCP/UDP是校验的头部加数据。校验和的公式都是一样的,都是加起来最后取反码,具体可以参考文章[1]。在TCP/UDP的计算过程中,需要加一个伪头部,然后如果整体数据是奇数的话,还需要最后补0。
2. DPKT的代码
直接上代码。
#! /usr/bin/python3
#coding:utf-8
#Auther:VChao
#2020/09/14
import dpkt
import struct
def main():
with open

本文介绍了一种使用DPKT库修改PCAP包中端口号的方法,并详细解释了如何在修改TCP内容后,确保校验和的准确性。通过添加伪头部和调整数据长度,代码实现了端口从22到5022的变更,同时保持了Wireshark解析的兼容性。
最低0.47元/天 解锁文章
9252

被折叠的 条评论
为什么被折叠?



