[英]What's the BPF for HTTP?
這個定義可以在這里看到。
候選答案可能是tcp and dst port 80
,但tcp and dst port 80
保證它的HTTP
流量並包括所有HTTP流量嗎?
似乎沒有,因為通過這種方式指定80以外的其他端口可以訪問某些站點:
http://domain.name:8080
所以我的問題是:什么是HTTP
的確切BPF ?
UPDATE
是否有實現來驗證數據包是否已經是c
的HTTP?
tcp and dst port 80
tcp and (dst port 80 or dst port 8080 or dst port 443)
tcp and tcp[20:4] = 0x47455420
tcp and tcp[(tcp[12] >> 4) * 4 : 4] = 0x47455420
tcp and (dst port 80 or dst port 8080 or dst port 443) and tcp[(tcp[12] >> 4) * 4 : 4] = 0x47455420
HTTP沒有確切的BPF,因為HTTP不是鏈路層協議。 執行此操作的最佳方法是選擇可能是HTTP的任何流量,然后在應用程序中驗證該流量。 您必須將TCP段拼接在一起才能這樣做,因為來自流中間的特定TCP段中的數據不表示應用層協議。
BPF不是有狀態數據包過濾器,因此BPF無法檢測到非標准HTTP端口上的任何流量。 BPF在傳輸層而不是應用層進行過濾,因此它只關心TCP / IP,而不是TCP / IP數據包中封裝的應用程序數據。 您最好的辦法是過濾常見的HTTP端口80,8000和8080.如果您想要考慮HTTPS,也可以使用443。
Wireshark在解碼數據包方面做得不錯,並在適當的時候將HTTP標記為HTTP。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.