使用Scappy生成原始数据包时出现奇怪的有效负载

时间:2015-06-17 21:38:56

标签: scapy packet-injection

我在尝试使用Scappy生成原始数据包时遇到了一个奇怪的问题。

我正在做以下事情:

eee=Ether(dst='08:00:11:11:11', src='08:00:11:11:22:22', type=0x888)/Raw(load='112233445566778888776655443322110901')

但是当我对新创建的数据包执行hexdump时:

hexdump(eee)
0000   08 00 11 11 11 00 08 00  11 11 22 22 08 88 **31 31**   ..........""..11
0010   **32 32** 33 33 34 34 35 35  36 36 37 37 38 38 38 38   2233445566778888
0020   37 37 36 36 35 35 34 34  33 33 32 32 31 31 30 39   7766554433221109
0030   30 31

看起来它在有效载荷的hexdump版本中附加了3。我真的不知道那个3出现在哪里。

提前感谢任何提示。

1 个答案:

答案 0 :(得分:0)

Raw图层采用load参数的二进制表示。由于字符1 ascii 值为0x31,而字符2 ascii 值为0x32 ,字符串1122的二进制表示形式为0x31313232。这就是你所看到的hexdump的输出。

您需要做的是解码字符串,然后将其作为load参数传输到Raw图层:

In [1]: from scapy.all import *
WARNING: No route found for IPv6 destination :: (no default route?)

In [2]: eee=Ether(dst='08:00:11:11:11', src='08:00:11:11:22:22', type=0x888)/Raw(load='112233445566778888776655443322110901'.decode("HEX"))

In [3]: hexdump(eee)
0000   08 00 11 11 11 00 08 00  11 11 22 22 08 88 11 22   ..........""..."
0010   33 44 55 66 77 88 88 77  66 55 44 33 22 11 09 01   3DUfw..wfUD3"...