日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Linux系统抓包命令tcpdump使用实例

發布時間:2025/5/22 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux系统抓包命令tcpdump使用实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

tcpdump是linux命令行下常用的的一個抓包工具,記錄一下平時常用的方式,測試機器系統是ubuntu 12.04。

tcpdump的命令格式
tcpdump的參數眾多,通過man tcpdump可以查看tcpdump的詳細說明,這邊只列一些筆者自己常用的參數:
tcpdump?[-i?網卡]?-nnAX?'表達式'
各參數說明如下:
-i:interface 監聽的網卡。
-nn:表示以ip和port的方式顯示來源主機和目的主機,而不是用主機名和服務。
-A:以ascii的方式顯示數據包,抓取web數據時很有用。
-X:數據包將會以16進制和ascii的方式顯示。
表達式:表達式有很多種,常見的有:host 主機;port 端口;src host 發包主機;dst host 收包主機。多個條件可以用and、or組合,取反可以使用!,更多的使用可以查看man 7 pcap-filter。
下面進行一些命令測試,如果沒有權限,可以先切換成root用戶。

監聽網卡eth0
$?tcpdump?-i?eth0
這個方式最簡單了,但是用處不多,因為基本上只能看到數據包的信息刷屏,壓根看不清,可以使用ctrl+c中斷退出,如果真有需求,可以將輸出內容重定向到一個文件,這樣也更方便查看。

監聽指定協議的數據
$?tcpdump?-i?eth0?-nn?'icmp'
這個是用來監聽icmp協議的數據,就是ping命令使用的協議。類似的,如果要監聽tcp或者是udp協議,只需要修改上例的icmp就可以了。ping下監聽的機器,輸出如下:

linux使用tcpdump抓包示例
每一行的各個數據表示的含義:
抓到包的時間?IP?發包的主機和端口?>?接收的主機和端口?數據包內容

監聽指定的主機
$?tcpdump?-i?eth0?-nn?'host?192.168.1.231'
這樣的話,192.168.1.231這臺主機接收到的包和發送的包都會被抓取。
$?tcpdump?-i?eth0?-nn?'src?host?192.168.1.231'
這樣只有192.168.1.231這臺主機發送的包才會被抓取。
$?tcpdump?-i?eth0?-nn?'dst?host?192.168.1.231'
這樣只有192.168.1.231這臺主機接收到的包才會被抓取。

監聽指定端口
$?tcpdump?-i?eth0?-nnA?'port?80'
上例是用來監聽主機的80端口收到和發送的所有數據包,結合-A參數,在web開發中,真是非常有用。

監聽指定主機和端口
$?tcpdump?-i?eth0?-nnA?'port?80?and?src?host?192.168.1.231'
多個條件可以用and,or連接。上例表示監聽192.168.1.231主機通過80端口發送的數據包。

監聽除某個端口外的其它端口
$?tcpdump?-i?eth0?-nnA?'!port?22'
如果需要排除某個端口或者主機,可以使用“!”符號,上例表示監聽非22端口的數據包。

小結:
tcpdump這個功能參數很多,表達式的選項也非常多,非常強大,不過常用的功能確實不多。詳情可以通過man查看系統手冊。
另外在抓取web包的時候,發送網頁內容都是很奇怪的字符,發現是apache開啟了gzip壓縮的緣故,關閉掉gzip壓縮就可以了。在ubuntu 12.04下,編輯vim /etc/apache2/mods-enabled/deflate.load文件,將加載模塊deflate_module的語句注釋掉,然后重啟apache就OK了。

--------------------------------------------------------------------------------------------------------

tcpdump采用命令行方式,它的命令格式為:
???   tcpdump[ -adeflnNOpqStvx ] [ -c 數量 ] [ -F 文件名 ]
          [ -i 網絡接口 ] [ -r 文件名] [ -s snaplen ]
          [ -T 類型 ] [ -w 文件名 ] [表達式 ]   

?????????? -a    將網絡地址和廣播地址轉變成名字;
   -d    將匹配信息包的代碼以人們能夠理解的匯編格式給出;
   -dd    將匹配信息包的代碼以c語言程序段的格式給出;
   -ddd   將匹配信息包的代碼以十進制的形式給出;
   -e    在輸出行打印出數據鏈路層的頭部信息;
   -f    將外部的Internet地址以數字的形式打印出來;
   -l    使標準輸出變為緩沖行形式;
   -n    不把網絡地址轉換成名字;
   -t    在輸出的每一行不打印時間戳;
   -v    輸出一個稍微詳細的信息,例如在ip包中可以包括ttl和服務類型的信息;
   -vv    輸出詳細的報文信息;
   -c    在收到指定的包的數目后,tcpdump就會停止;
   -F    從指定的文件中讀取表達式,忽略其它的表達式;
   -i    指定監聽的網絡接口;
   -r    從指定的文件中讀取包(這些包一般通過-w選項產生);
   -w    直接將包寫入文件中,并不分析和打印出來;
   -T    將監聽到的包直接解釋為指定的類型的報文,常見的類型有rpc (遠程過程調用)和snmp(簡單網絡管理協議;)

示例:

1、如果要抓eth0的包,命令格式如下:

tcpdump -i eth0 -w /tmp/eth0.cap

2、如果要抓192.168.1.20的包,命令格式如下:

tcpdump -i etho host 192.168.1.20 -w /tmp/temp.cap

3、如果要抓192.168.1.20的ICMP包,命令格式如下:

tcpdump -i etho host 192.168.1.20 and icmp?-w /tmp/icmp.cap

4、如果要抓192.168.1.20的除端口10000,10001,10002以外的其它包,命令格式如下:

tcpdump -i etho host 192.168.1.20 and ! port 10000 and ! port 10001 and ! port 10002 -w /tmp/port.cap

5、假如要抓vlan 1的包,命令格式如下:

tcpdump -i eth0 port 80 and vlan 1 -w /tmp/vlan.cap

6、假如要抓pppoe的密碼,命令格式如下:

tcpdump -i eht0 pppoes -w /tmp/pppoe.cap

7、假如要抓eth0的包,抓到10000個包后退出,命令格式如下:

tcpdump -i eth0 -c 10000 -w /tmp/temp.cap

8、在后臺抓eth0在80端口的包,命令格式如下:

nohup tcpdump -i eth0 port 80 -w /tmp/temp.cap &


轉載于:https://blog.51cto.com/960302601/1658972

總結

以上是生活随笔為你收集整理的Linux系统抓包命令tcpdump使用实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。