我的目的是从pcap文件中嗅探一个数据包,修改该数据包的最后4个字节并发送它。现在,我正在这样做:
from scapy.all import *
from struct import pack
from struct import unpack
pkt = sniff(offline="my.pcap", count=1)
pkt_hex = str(pkt)
# getting output like '\x00\x04\x00 ... ... \x06j]'
last_4 = unpack('!I',pkt_hex[-4:])[0]
# getting last 4 bytes and converting it to integer
rest = pkt_hex[:-4]
# getting whole packet in string except last 4 bytes
new_pkt = rest + pack('>I',(last_4+1))
# created the whole packet again with last 4 bytes incremented by 1
# the new string is like '\x00\x04\x00 ... ... \x06j^'
现在我的问题是我无法将其转换回Scapy的分层数据包对象,因此无法使用sendp发送。
PS:我必须重新计算校验和。但是一旦将其转换为数据包对象,就可以按照this重新计算校验和。
参考方案
您可以使用原始数据包的类来重建数据包,但是程序中还有其他