-
1 # shawn25
-
2 # 產品經理老胡
老胡的看法
Linux環境下監聽第三方服務介面的方案老胡有兩個,一個是使用命令列工具ngrep,另一個是帶有GUI圖形化介面的wireshark。ngrep可以基於正則表示式監聽並過濾某IP、某埠或者某網路介面的資料包;wireshark是老牌的網路抓包工具,喜歡網路實驗的朋友應該都不會陌生。
使用ngrep監聽特定埠在絕大多數Linux發行版上,ngrep並不是預設安裝的,不過ngrep已經包含在ubuntu、CentOS等Linux發行版的軟體源中,可以直接透過包管理器下載安裝。Linux下,ngrep需要root許可權才能夠監聽第三方的埠。在這裡我們用到的ngrep命令選項有這樣幾個:
-d:指定要監聽的網路介面,any表示所有網路介面
port:指定要監聽的第三方埠號
比如,監聽埠10808上所有的資料:
sudo ngrep -d any port 10808再比如過濾出189.cn與本機通訊的內容中的包含jpg圖片的資料包:
sudo ngrep -d any -W byline -N -q \.jpg host 189.cn這樣就捕捉到了jpg圖片的相對路徑。
更多玩法,使用man ngrep檢視詳細的資訊。
使用wireshark監聽特定埠Linux下的wireshark和windows下的版本基本相同,使用起來也比較簡單,和ngrep一樣,監聽第三方埠需要使用root許可權來執行wireshark。同樣,預設Linux的各大發行版不預裝wireshark,需要從軟體源安裝,或者下載安裝包使用安裝包安裝。
執行wireshark之後,選擇網路介面:
之後就進入抓包介面了:
在應用顯示過濾器的輸入框裡,輸入tcp.port==埠號,就可以針對某埠進行過濾,檢視該埠傳送接收的資料了。如果是針對UDP協議的話,就改成udp.port==埠號。
更多用法,請參考wireshark的使用說明。
總結一下,Linux下監聽第三方的埠資料通訊需要使用root許可權,命令列的工具可以使用ngrep,圖形化的工具有wireshark。這兩個工具都可以滿足抓取埠資料的需求,ngrep更加小巧一點,並且可以根據正則表示式來實現對資料包內容的過濾。不過對於一些加密協議,抓取到的資料包是無法解析出內容的,這一點需要明確。
回覆列表
首先當然可以程式設計實現,任何語言都行,這個就不多說了。具體問題具體分析。
如果在linux下還有不透過程式設計實現的方法,編寫shell指令碼。
可以利用linux下的軟體來訪問對方介面,比如nc,如果是http介面,可以用curl。
然後用grep抓想要的資訊,做判斷後輸出。
最後用crontab新增定時任務,反覆執行指令碼就可以檢測了。