程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> tcpdump移植和使用

tcpdump移植和使用

編輯:關於C語言

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved