python十六进制转pcap文件_将十六进制字符串转换为Scapy中的数据包 - python

本文介绍了如何从pcap文件中读取数据包,修改其十六进制表示的最后四个字节,并将新数据包发送回网络。在过程中,使用Scapy库,通过解构、重新组合和校验和更新来处理数据包,最后通过Scapy的sendp函数发送更新后的数据包。
摘要由CSDN通过智能技术生成

我的目的是从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重新计算校验和。

参考方案

您可以使用原始数据包的类来重建数据包,但是程序中还有其他

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值