CentOS tcpflow抓包

gary-liu發表於2016-07-25

在Mac上抓包常用Charles,在linux伺服器上抓包,比較常用tcpdump,tcpflow命令,tcpdump對http包的抓取支援不好,tcpflow的http的抓取表現不錯。tcpdump是按照包為單位進行輸出的,閱讀起來不是很方便。 而tcpflow是面向tcp流的。 每個tcp傳輸會儲存成一個檔案,所以一個tcp會話會產生兩個檔案,每個方向產生一個檔案。

安裝

  • 安裝前,先確保已安裝下面的依賴,若沒可以再安裝下
yum -y install git gcc-c++ automake autoconf boost-devel cairo-devel libpcap-devel zlib-devel
./configure
make
sudo make install

但是由於boost版本過低報了下面這個錯誤:

configure: error:
tcpflow requires a version of Boost that has Boost interval_map and interval_set.
Your version is too old! Please install a current version of Boost from http://www.boost.org/users/download/.

Try these commands:
  wget http://downloads.sourceforge.net/project/boost/boost/1.53.0/boost_1_53_0.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fboost%2Ffiles%2Fboost%2F1.53.0%2F&ts=1362359340&use_mirror=hivelocity
  tar xfz boost_1_53_0.tar.gz
  cd boost_1_53_0
  sh bootstrap.sh
  ./b2
  sudo ./b2 install
... and then re-run configure!

按照上面的提示下載boost新版本安裝後,重寫編譯安裝tcpflow即可。

使用

tcpflow和tcpdump的命令有些類似

man tcpflow   //檢視使用手冊
tcpflow -i eth0 host 'ip' //使用該命令最好在一個空的資料夾下,因為抓包產生的檔案會全部放在當前目錄下,檔案中的內容和瀏覽器除錯工具中看到的類似
tcpflow -ci eth0 'src host ip'    // 抓該主機傳送的包  -c是列印出來,不儲存檔案中
tcpflow -i eth0 'dst host ip'    //抓取該ip主機接收的包
tcpflow -i eth0 'port 80 and src host ip'   //監聽該主機通過80埠傳送的資料包

Charles手機端抓包

  1. 檢視電腦ip
  2. 開啟iOS設定,進入當前wifi連線(Mac在一個區域網內),設定HTTP代理Group,將伺服器填為上一步中獲得的IP,埠填8888

然後操作手機就可以看到抓包資訊了,其實就是用Charles來做手機的HTTP代理,所以關閉Charles後,記著也要關閉手機的代理設定。

Mac 系統抓包,開啟Charles,在選單中勾選Proxy–>Mac OS X proxy 即可

[參考]
tcpflow github
Linux系統抓包-tcpdump與tcpflow

相關文章