tcpdump:dump the traffic on a network
tcpdump 啟動後預設監控eno1
tcpdump -i eno3
列印所有進入或離開sundown的資料報.
tcpdump host sundown
也可以指定ip,例如截獲所有210.27.48.1 的主機收到的和發出的所有的資料報
tcpdump host 210.27.48.1
列印helios 與 hot 或者與 ace 之間通訊的資料報
tcpdump host helios and ( hot or ace )
截獲主機210.27.48.1 和主機210.27.48.2 或210.27.48.3的通訊
tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 )
列印ace與任何其他主機之間通訊的ip 資料報, 但不包括與helios之間的資料報.
tcpdump ip host ace and not helios
如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通訊的ip包,使用命令:
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
截獲主機hostname傳送的所有資料
tcpdump -i eth0 src host hostname
監視所有送到主機hostname的資料報
tcpdump -i eth0 dst host hostname
監視指定主機和埠的資料報
如果想要獲取主機210.27.48.1接收或發出的telnet包,使用如下命令
tcpdump tcp port 23 and host 210.27.48.1
對本機的udp 123 埠進行監視 123 為ntp的服務埠
tcpdump udp port 123
監視指定網路的資料報
列印本地主機與berkeley網路上的主機之間的所有通訊資料報(nt: ucb-ether, 此處可理解為』berkeley網路』的網路位址,此表示式最原始的含義可表達為: 列印網路位址為ucb-ether的所有資料報)
tcpdump net ucb-ether
列印所有通過閘道器snup的ftp資料報(注意, 表示式被單引號括起來了, 這可以防止shell對其中的括號進行錯誤解析)
tcpdump 『gateway snup and (port ftp or ftp-data)』
列印所有源位址或目標位址是本地主機的ip資料報
(如果本地網路通過閘道器連到了另一網路, 則另一網路並不能算作本地網路.(nt: 此句翻譯曲折,需補充).localnet 實際使用時要真正替換成本地網路的名字)
tcpdump ip and not net localnet
監視指定協議的資料報
列印tcp會話中的的開始和結束資料報, 並且資料報的源或目的不是本地網路上的主機.(nt: localnet, 實際使用時要真正替換成本地網路的名字))
tcpdump 『tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet』
列印所有源或目的埠是80, 網路層協議為ipv4, 並且含有資料,而不是syn,fin以及ack-only等不含資料的資料報.(ipv6的版本的表示式可做練習)
tcpdump 『tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)』
(nt: 可理解為, ip[2:2]表示整個ip資料報的長度, (ip[0]&0xf)<<2)表示ip資料報包頭的長度(ip[0]&0xf代表包中的ihl域, 而此域的單位為32bit, 要換算
成位元組數需要乘以4, 即左移2. (tcp[12]&0xf0)>>4 表示tcp頭的長度, 此域的單位也是32bit, 換算成位元數為 ((tcp[12]&0xf0) >> 4) << 2,
即 ((tcp[12]&0xf0)>>2). ((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0 表示: 整個ip資料報的長度減去ip頭的長度,再減去
tcp頭的長度不為0, 這就意味著, ip資料報中確實是有資料.對於ipv6版本只需考慮ipv6頭中的』payload length』 與 'tcp頭的長度』的差值, 並且其中表達方式』ip『需換成』ip6』.)
列印長度超過576位元組, 並且閘道器位址是snup的ip資料報
tcpdump 『gateway snup and ip[2:2] > 576』
列印所有ip層廣播或多播的資料報, 但不是物理乙太網層的廣播或多播資料報
tcpdump 『ether[0] & 1 = 0 and ip[16] >= 224』
列印除』echo request』或者』echo reply』型別以外的icmp資料報( 比如,需要列印所有非ping 程式產生的資料報時可用到此表示式 .
(nt: 『echo reuqest』 與 『echo reply』 這兩種型別的icmp資料報通常由ping程式產生))
tcpdump 『icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply』
tcpdump 與wireshark
wireshark(以前是ethereal)是windows下非常簡單易用的抓包工具。但在linux下很難找到乙個好用的圖形化抓包工具。
還好有tcpdump。我們可以用tcpdump + wireshark 的完美組合實現:在 linux 裡抓包,然後在windows 裡分析包。
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 eth1 : 只抓經過介面eth1的包
(3)-t : 不顯示時間戳
(4)-s 0 : 抓取資料報時預設抓取長度為68位元組。加上-s 0 後可以抓到完整的資料報
(5)-c 100 : 只抓取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)分析
使用tcpdump抓取http包
tcpdump -xvvennss 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854
tcpdump截幀工具使用
tcpdump是linux下功能強大的截幀工具,相當於windows下的wireshark一下,只是操作方式是命令列的,需要熟悉linux命令列操作。下面列出了tcpdump的常用引數 tcpdump表示式用來設定哪些資料報被列印到命令列,如果不設定過濾表示式網路上所有 獲的包都會被列印,否則,只有...
tcpdump截幀工具使用
tcpdump是linux下功能強大的截幀工具,相當於windows下的wireshark一下,只是操作方式是命令列的,需要熟悉linux命令列操作。下面列出了tcpdump的常用引數 tcpdump表示式用來設定哪些資料報被列印到命令列,如果不設定過濾表示式網路上所有 獲的包都會被列印,否則,只有...
使用 tcpdump 工具抓包
tcpdump 是一款 linux 平台的網路資料報截獲和分析工具,支援針對協議 主機 網口 埠等進行過濾。並且可以使用 and or not 等邏輯語句對過濾器進行組合,實現針對性截獲。使用 i 引數指定監聽的網口。不指定預設監聽第乙個 所以通常來講,這個引數都需要指定,因為不指定很可能抓不到,而...