Tcpdump

如何按 IRC 通道拆分 pcap

  • July 18, 2020

我想知道是否有一種方法可以拆分每個通道包含(僅)IRC 的 pcap。我正在嘗試使用現有的 IDS(suricata、snort)比較通道中殭屍網路檢測的準確性。如何檢查檢測到哪個 IRC 通道的唯一方法似乎是按 IRC 通道拆分 pcap 並嘗試分別分析每個 pcap。有沒有辦法在tcpdump 或任何其他工具中做到這一點?

非常感謝!

這應該很簡單,因為每條消息RFC 2812, 3.3RFC 1459, 2.3)和通道操作RFC 2812, 3.2RFC 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 協議解析器。

引用自:https://serverfault.com/questions/1025746