簡體   English   中英

Scapy:嗅探自制層

[英]Scapy: Sniffing for self made layers

假設我已經在scapy中創建了一個自己的圖層

class MyProtocol(Packet):

    name = "MyProtocol"
    fields_desc = [ IntField("layerLength", 8), # always the same
                    ShortField("numberA", 4),
                    ShortField("numberB", 2),
                    IntField("numberC", 2) ]

如果我有兩個設備,一個發送包含此自制層的數據包在頂部,另一個發送嗅探網絡流量 - 第二個設備如何檢測其中一個嗅探數據包是否包含此特殊層? Scapy已經識別出很多層,但是如何讓它識別出我自己制作的層呢?

我知道我可以簡單地獲取每個數據包的Raw部分,在字節級別上剖析它,例如,檢查“layerLength”字段是否真的包含圖層的總長度,或者添加一些特殊的唯一字段,但似乎太復雜了,因為Scapy已經知道了一些層次。 那么有沒有辦法讓Scapy識別出某一層?

Scapy使用所謂的層綁定來指示何時應用特定的數據包解析器。 您可以在每個圖層模塊中看到scapy源代碼示例。

例如,如果您通過TCP端口2222使用協議,則可以在模塊中添加以下行:

bind_layers( TCP, MyProtocol, dport=2222)

Scapy將嘗試使用MyProtocol將TCP有效負載解析為MyProtocol。

暫無
暫無

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

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