python - 在 Scapy 中更改数据包字节序
问题描述
我在 Scapy 中创建了一个自定义层,表示数据包的 Little Endian 格式。
class test_layer(Packet):
name = "test"
fields_desc = [
BitField('A', 0, size=10),
BitField('B', 0, size=6),
BitField('C', 0, size=11),
BitField('D', 0, size=5)
]
我创建了一个新数据包
pkt = test_layer(A=1021, B=33, C=816, D=3)
这导致十六进制转储FF 61 66 03
在发送数据包之前,我需要进行 16 位 Big Endian 交换,所以我最终得到61 FF 03 66
.
由于层(10、6、11、5)中字段的奇数位大小,我不能只是重新排序字段。例如,如果我将 A、B、C、D 重新排序为 B、A、D、C,则十六进制为 87 FD 1B 30。
关于如何做到这一点的任何建议?
谢谢
解决方案
如果将大小设置为负值,则字段将为低端
推荐阅读
- r - 使用 R 中的条件从另一列计算一列
- python - 如何将 WhatsApp 消息迁移/克隆到 Signal
- java - 如何将 MongoDB 嵌套数组读入本地内存
- python - 使用“用 C 扩展 Python”将二进制数据从 C 传递到 Python
- python - 在 google colab 中使用本地 jupyter 时出现问题
- javascript - 如何检查表列数据类型
- sql - Spark SQL 可以引用上一个窗口/组的第一行吗?
- javascript - 从控制台获取 javascript 输入并存储在数组中,无需换行 \n
- android - 如何使用 Context.getExternalFilesDirs(String)、Context.getExternalCacheDirs() 获取 /storage/emulated/0
- python-3.x - 无法在 Pycharm 中安装 TensorFlow