我是 Scapy 的新手,所以也许这写在某个地方,但我找不到答案。
我正在尝试创建一个自定义数据包解析器,但为了将特定层相互绑定,我需要在更深层的值条件下进行。我在 RTP 层之上至少有三层,但第二层和第三层的数量由第一层中的值决定。
Cust1 保存将跟随的 Cust2 层的数量。每个 Cust2 层将在 Cust2 层链的末端有一个对应的 Cust3 层与之匹配。我在下面展示了一个示例,其中我使用了 2a/2b/2c 和 3a/3b/3c 只是为了表明这些数字是相同的图层类型但链接在一起。
IE
如果Cust1的值为one(1),则:
UDP / RTP / Cust1 / Cust2a / Cust3a
如果Cust1的值为two(2):
UDP / RTP / Cust1 / Cust2a/Cust2b / Cust3a/Cust3b
如果Cust1的值为three(3):
UDP/RTP/Cust1/Cust2a/Cust2b/Cust2c/Cust3a/Cust3b/Cust3c
ETC...
那么如何为链中更远的绑定引用 Cust1 呢?
bind_layers(RTP, Cust1)
bind_layers(Cust1, Cust2a)
bind_layers(Cust2a, Cust2b, {conditional REF_to_Cust1.value})
bind_layers(Cust2b, Cust2c, {conditional REF_to_Cust1.value})
# etc...
请告诉我,我不必为每个场景创建自定义图层并使用它来获得我想要的结果。