[英]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.