tcpdump移植和使用
[摘要]:本文主要講解了tcpdump相關概念和主要參數的使用,並通過事例來講解tcpdump的用法,最後講解如何將其移植到嵌入式開發環境,使其在嵌入式主控板中發揮其強大功能。
一. tcpdump概念
tcpdump就是dump the traffic on a network,根據使用者的定義對網絡上截獲的數據包進行分析的工具。tcpdump可以將網絡中傳送的數據包的“頭”完全截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的信息。其下載地址為:http://www.tcpdump.org/
二.tcpdump相關參數
tcpdump參數分為以下幾類:
1.按照關於類型的關鍵字,主要包括host,net,port。
2.確定傳輸方向的關鍵字,主要包含src,dst,dst or src, dst and src。這些關鍵字指明了傳輸的方向。
3.關於協議的關鍵字,主要包括fddi,ip,arp,tcp,udp等類型。
除了這三種類型的關鍵字之外,其他重要的關鍵字如下:gateway,broadcast,less,greater,還有三種邏輯運算,取非運算是’not’,’|’,與運算是’and’,’&&’,或運算是’or’,’ ||’;這些關鍵字可以組合起來。
三實例
1.使用如下命令,默認啟動。一般情況下,直接啟動tcpdump將監視第一個網絡接口上所有流過的數據包。
#tcpdump
2.監視指定網絡接口上的數據包
#tcpdump -i eth0
note:
1)使用-i可以指定tcpdump監聽的網絡接口。
2)使用-c參數指定要監聽的數據包流量。
3)使用-w參數指定將監聽到的數據寫入文件中保存。
3.監視指定主機的數據包
1)打印所有進入或離開主機jibo的數據包
#tcpdump hostjibo
2)監聽jibo與tiger或者與john之間通信的數據包
#tcpdump host jibo and \(tiger or john\)
3)監聽主機210.27.48.1和主機210.27.48.2或210.27.48.3的通信
#tcpdumphost 210.27.46.1 and \(210.27.48.2 or210.27.48.3\)
4)監聽tiger與任何其他主機通信的IP數據包,但不包括與jibo之間的數據包
#tcpdump ip hosttiger and not jibo
5)監聽主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2
6)監聽主機jibo發送的所有數據
#tcpdump -i eth0src host jibo
7)監聽所有發送到主機jibo的數據包
#tcpdump -i eth0 dst host jibo
3.監聽指定主機和端口的數據包
1)監聽主機210.27.481.接收或發送出去的telnet包,
#tcpdump tcp port 23 host 210.27.48.1
2)監聽本機udp 123端口進行監視123為ftp的服務端口
#tcpdump udp port123
四.tcpdump移植
1.編譯安裝libcap-1.4.0
1)解壓並進入libcap-1.4.0目錄,打開configure,將下面的代碼注釋掉
if test –z “$with_pcap” && test “$cross_compile” =yes; then
{ { echo “$as_me:$LINENO:error: pcap type not determined when cross-compiling; use –with-pcap = …” > &5
echo “$as_me: error:pcap type not determined when cross-compile:use – with-pcap= …” > &2;}
fi
2)運行./configure–host =arm-none-linux-gnueabi
#./configure --host =arm-none-linux-gnueabi
注:此處嵌入式環境平台使用的時arm-none-linux-gnueabi交叉鏈,如果你使用的時其他的交叉編譯鏈則改為自己的即可。
3)配置完成後,配置之後,會生成Makefile。打開Makefile發現CC=arm-none-gnueabi,說明交叉編譯配置成功。
4)執行make命令進行編譯
#make
5)執行makeinstall命令進行安裝。執行成功後會在/usr/local/include目下有3個pcap文件,表明libpcap編譯安裝成功。
#sudo makeinstall
Note:
如果,使用sudo make install編譯時提示找不到交叉編譯鏈找不到。則用su命令切到root用戶,然後使用source命令,激活交叉編譯鏈變量。
2.編譯安裝tcpdump-4.4.0
1)進入tcpdump目錄,修改configure,將下面的代碼注釋掉
#vim configure
# if test $ac_cv_linux_vers = unknown; then
# as_fn_error $? “cannot determine linux version when cross-compiling”“$LINENO” 5
# fi
2)運行configure命令生成makefile
#./configure --host =arm-none-linux-gnueabi
3)打開生成的Makefile,修改以下編譯選項
INCLS= -I. -I./../libpcap-1.4.0 -I./missing -I/usr/local/include
DEFS= -DHAVE_CONFIG_H -I/usr/local/include -I./missing -D_U=”__attribute__((unused))”
LDFLAGS= -L/usr/local/lib
4)執行make命令進行編譯
#make
Note:
在進行編譯時候,如果提示無法找到libpcap.a,是由於libpcap的目錄名要和Makefile中LIBS = ./../libcap-1.4.0/libpcap.a中libcap-1.4.0一致。
5)執行makeinstall命令進行安裝。執行成功後會在/usr/local/sbin/目錄下有一個tcpdump的二進制文件,該文件就是交叉編譯成功的tcpdump。
#sudo makeinstall
(6)使用以下命令減少生成可執行文件的大小
#arm-none-linux-genueabi-striptcpdump
本文出自 “嵌入式開發樂園” 博客,請務必保留此出處http://tigerjibo.blog.51cto.com/7718010/1297329