簡體   English   中英

創建有效載荷重用多個字段的scapy數據包協議

[英]create scapy packet protocol with reuse of payload for more than one fields

我正在嘗試為scapy創建自己的協議,並且在最近幾天一直處於卡住狀態。

我想做的是使用第一層的前14個字節,dst mac使用6個字節,src mac使用6個字節,填充2個字節。 包的其余部分將是有效載荷。

問題是我不確定如何使數據包中的第5個字節和第6個字節成為將提供ShortField值的字段。

class MyEther(Packet):

   name = "MyEther"

   fields_desc =[
          MACField("dst", None),
          MACField("src", None),
          StrLenField('padding', None, length_from=lambda x: 2)
   ]

非常感謝您的幫助!

在這種情況下,不適合使用MACField。 對於每個MACField,應使用IntField,然后使用ShortField。

fields_desc = [
    IntField(“a”, 0),
    ShortField(“b”, 0), # here are your 5-6 bytes
    ....
]

但是,如果您真的知道自己在做什么,並且知道需要MACField,則可以使用

struct.unpack(“!H”, mac2str(packet.dst)[4:6])

(mac2str是從scapy導入的)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM