将数据附加到 scapy 数据包

Appending data to a scapy packet

我知道我可以将 Raw 数据附加到像这样的 scapy 数据包中

>>> p=Ether()/Raw("somedata")
>>> hexdump(p)
WARNING: Mac address to reach destination not found. Using broadcast.
0000   FF FF FF FF FF FF 00 00  00 00 00 00 90 00 73 6F   ..............so
0010   6D 65 64 61 74 61                                  medata
>>> 

此处数据以 ASCII 格式附加。

但是我怎么能像这样只将数字附加到数据包中呢?

# Not real
>>> p = Ether()/RawNumbers(0x1234567891)
>>> hexdump(p)
WARNING: Mac address to reach destination not found. Using broadcast.
0000   FF FF FF FF FF FF 00 00  00 00 00 00 90 00 12 34   ................
0010   56 78 91                                           ...
>>> 

也许我可以编写一个 Packet 子类来执行此操作,但我不确定如何实现它。有什么想法吗?

不需要 RawNumbers 层,因为您可以使用 python 内置功能实现这一点。请注意,如果您的层只是一个字符串,scapy 默认情况下会假设一个原始层。

>>> hexdump(Ether()/"\x12\x34\x56\x78\x91")
WARNING: Mac address to reach destination not found. Using broadcast.
0000   FF FF FF FF FF FF 00 00  00 00 00 00 90 00 12 34   ...............4
0010   56 78 91                                           Vx.

或(更方便)

>>> hexdump(Ether()/"1234567891".decode("hex"))
WARNING: Mac address to reach destination not found. Using broadcast.
0000   FF FF FF FF FF FF 00 00  00 00 00 00 90 00 12 34   ...............4
0010   56 78 91                                           Vx.