TcpDump 抓包 傳輸資料包
(很容易的,別有壓力,朋友)
1.首先看一下它的作用:TcpDump可以將網路中傳送的資料包的“頭”完全截獲下來提供分析。它支援針對網路層、協議、主機、網路或埠的過濾,
並提供and、or、not等邏輯語句來幫助你去掉無用的資訊。
2.舉個例子
[email protected]:~$ sudo tcpdump -i wlan0 -A host 192.168.0.140 and port 8080
(1) (2) (3) (4) (5)
(1)sudo :因為TcpDump的使用需要root許可權,所以sudo一下,或者直接 sudo -s 後輸入root密碼,切換到root使用者-->
(2)-i : -i (i 代表 interface) 指定tcpdump 需要監聽的介面. 如果沒有指定, tcpdump 會從系統介面列表中搜尋編號最小的已配置好的介面
(不包括 loopback 介面).一但找到第一個符合條件的介面, 搜尋馬上結束.
-i eth0 : 只抓經過介面eth0的包
-i wlan0 : 只抓取經過介面wlan0的包
(這裡-i 後面接什麼要看具體情況,終端下輸入ifconfig顯示如下:
[email protected]:~# ifconfig
eth0 Link encap:乙太網 硬體地址 74:e6:e2:08:89:32
UP BROADCAST MULTICAST MTU:1500 躍點數:1
......
lo Link encap:本地環回
inet 地址:127.0.0.1 掩碼:255.0.0.0
inet6 地址: ::1/128 Scope:Host
......
wlan0 Link encap:乙太網 硬體地址 4c:bb:58:1d:43:cf
inet 地址:192.168.0.140 廣播:192.168.0.255 掩碼:255.255.255.0
inet6 地址: fe80::4ebb:58ff:fe1d:43cf/64 Scope:Link
......
一共有三個eth0、lo、wlan0
-i lo :不可用
-i wlan0 :乙太網,必須wlan0埠選項inet地址才是可用的,這裡wlan0中是有inet地址的,所以可用
-i eth0 : 乙太網,必須eth0埠選項inet地址才是可用的,這裡eth0中是沒有inet地址的,(所以我這裡是不可用)
(3)-A 表示以ASCII碼方式顯示每一個數據包(不會顯示資料包中鏈路層頭部資訊). 在抓取包含網頁資料的資料包時,
可方便檢視資料(nt: 即Handy for capturing web pages).
(4)host 可以是一個ip地址, 也可以是一個主機名.
(5)port 8080:監聽8080埠的資料傳輸包
監聽主機192.168.0.140資料傳輸包
sudo tcpdump -i wlan0 -t -A -s 0 host 192.168.0.140
sudo tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp這些選項等都要放到第一個引數的位置,用來過濾資料報的型別
(2)-i :指定監聽的網路介面。
-i eth1 : 只抓經過介面eth1的包
-i wlan0 : 只抓取經過介面wlan0的包
(3)-t : 不顯示時間戳
(4)-s 0 : 抓取資料包時預設抓取長度為68位元組。加上-S 0 後可以抓到完整的資料包
(5)-c 100 : count
只抓取100個數據包
(6)dst port ! 22 : 不抓取目標埠是22的資料包
(7)src net 192.168.1.0/24 : 資料包的源網路地址為192.168.1.0/24
(8)-w ./target.cap : 儲存成cap檔案,方便用ethereal(即wireshark)分析
異常:
1.tcpdump: WARNING: eth0: no IPv4 address assigned
沒有給 eth0 分配 IPv4 地址,輸入ifconfig 檢視 eth0 埠 IPv4的inet地址為空,
則使用不了eth0埠,具體檢視上文。
2.tcpdump: wlan0: You don't have permission to capture on that device
說明你不是root使用者操作,沒有許可權,切換到root使用者就ok了