所以我用Pydivert捕获数据包。我可以使用打印出完整的数据包有效负载
print(packet.tcp.payload)
要么
print(packet.payload)
输出是
b'\x03\x00\x34\xe2\xd1' //continued like this
两种情况都有相同的输出。我用打印出来的类型
print(type(packet.payload))
这显示了类型
<class 'byte'>
我想从输出中取出前10个字节的位置并输出并将其保存到变量中,这样当我修改有效负载时,我排除了初始字节,然后修改其余部分。所以我可以以某种方式将分离出的字节附加到我新创建的字节以创建最终的字节流,例如:
TotalByteStream = (initial bytes which I separated out) + b'\x03\x00\x34\xe2\xd1\x78\x23\x45\x79' //continued like this as needed
//And then do
packet.payload = TotalByteStream
这可能吗?
我不确定我理解你的问题,但你可以用类似字符串的方式操纵bytes
。
如果您有原始有效载荷:
>>> payload_1 = b'\x03\x00\xf4\xe2\xd1'
>>> type(payload_1)
<class 'bytes'>
>>> payload_1
b'\x03\x00\xf4\xe2\xd1'
您可以切片前几个字节
>>> part = payload_1[:2]
>>> part
b'\x03\x00'
然后创建一个新的有效负载,在其中添加part
变量
>>> payload_2 = part + b'\xf5\xe5\xd5'
>>> payload_2
b'\x03\x00\xf5\xe5\xd5'
>>> payload_1
b'\x03\x00\xf4\xe2\xd1'
因此,您将获得具有相同起始字节的新有效负载。这回答了你的问题了吗?还是我误解了你的问题?