Tcpdump
如何按 IRC 通道拆分 pcap
我想知道是否有一種方法可以拆分每個通道包含(僅)IRC 的 pcap。我正在嘗試使用現有的 IDS(suricata、snort)比較通道中殭屍網路檢測的準確性。如何檢查檢測到哪個 IRC 通道的唯一方法似乎是按 IRC 通道拆分 pcap 並嘗試分別分析每個 pcap。有沒有辦法在
tcpdump
或任何其他工具中做到這一點?非常感謝!
這應該很簡單,因為每條消息(RFC 2812, 3.3;RFC 1459, 2.3)和通道操作(RFC 2812, 3.2;RFC 1459, 4.2)在兩個方向上都有通道名稱:
- 客戶端消息到通道:
PRIVMSG #channel :Hello!
- 來自頻道的伺服器消息:
:nick!user@host.example.com PRIVMSG #channel :Hello!
- 通道相關操作命令範例,往返伺服器:
JOIN #channel :nick!user@host.example.com JOIN #channel MODE #channel +ts :nick!user@host.example.com MODE #channel +ts TOPIC #test :new topic :nick!user@host.example.com TOPIC #test :new topic
當然,如果它在消息、主題等中,您必須創建一個不計算頻道名稱的正則表達式
:
。我認為使用該字元作為分隔符是可以的,如下所示:/^(:|)[^:]*(PRIVMSG|JOIN|PART|MODE|TOPIC) #channel( |$)/gm
^(:|)
允許可選:
的作為來自伺服器的消息的第一個字元[^:]*
在下一個之後禁用所有查找:
(PRIVMSG|JOIN|PART|MODE|TOPIC)
您正在尋找的命令列表 - 根據需要完成!#channel
頻道名稱( |$)
拖尾空間或行尾(我們不想匹配#channelfoo
)- 全域和
/gm
多行標誌這應該適用於您的案例:它可能會在邊界情況下失敗,並且不是真正的完整 IRC 協議解析器。