圖形分析wireshark+抓包tcpdump

1.  tcpdump 命令詳解

1.1 tcpdump 命令的基本簡介

  • tcpdump :dump the traffic on a network 根據使用者的定義對網絡上的數據包進行截獲的分析工做;tcpdump 能夠講網絡中傳送的數據包的header徹底截獲下來進行分析;它支持對網絡層(net  IP 段)、協議(TCP/UDP)、主機(src/dst host)、網絡或端口(prot)的過濾,並提供and、or、not 等邏輯語句來幫助你去掉無用的信息。
  • tcpdump:默認狀況下,sudo /usr/sbin/tcpdump 會監視 第一個網絡接口 通常是eth0 的全部port 全部協議的 數據包

1.2 tcpdump 的主要選項

協議 TCP,UDP,IP,ARP,RARP,ETHER,FDDI
網絡(net) 192.168.0.0/16 IP網段
方向(host) src,dst,src or dst,src and dst
端口(prot) 80 22 !22  9999 
邏輯 and,or,not  &&,||,!
  • 協議:tcp udp ip arp rarp ether fddi   協議這選項要放在 前面,由於要過濾數據包
  • 網絡:net  ip網段     tcpdump net 192.168.1.0/24   監聽這個網段
  • 方向:host  就是主機  src 是源主機、dst 是目的主機 or  and 是邏輯 tcpdump host test.hostname 
  • 端口:port  指定tcpdump 監聽的端口  tcpdump src 192.168.1.11 and port 80  監聽源IP是192.168.1.11 的80端口
  • 邏輯:是表示 與 或  即:同時知足或知足之一

        前面的四個選項:協議、net 、host、port 若是同時在 tcpdump 裏面 時必須用 邏輯 and 鏈接起來;並且如用() 必定要轉義,不然會包語法錯誤。    linux

 

2. tcpdump 的選項

2.1 主要選項

  • -i :指定網卡 默認是 eth0   
  • -n :線上ip,而不是hostname
  • -c :指定抓到多個包後推出
  • -A:以ASCII方式線上包的內容,這個選項對文本格式的協議包頗有用
  • -x:以16進制顯示包的內容
  • -vvv:顯示詳細信息
  • -s :按包長截取數據;默認是60個字節;若是包大於60個字節,則抓包會出現丟數據;因此咱們通常會設置 -s 0 ;這樣會按照包的大小截取數據;抓到的是完整的包數據
  • -r:從文件中讀取【與 -w 對應,/usr/sbin/tcpdump -r test.out  讀取 tcpdump -w  test.out】
  • -w:處處指向文件【必定要用,-w t.out ,而後用 -r t.out 來看抓包信息,不然可讀性不好】

使用:windows

tcpdump -w google.cap        #抓包結果存放在文件中
tcpdump -r google.cap http   #還可使用-r參數制定抓包數據文件
tcpdump -i eth1              #使用-i參數指定經過哪個網卡抓包
tcpdump -D                   #查看哪幾個網卡抓包服務器

 

2.2 tcpdump 抓包的具體含義

       tcpmdump 抓包出來分析包的具體含義網絡

  1.        包攜帶的標誌:
  • S:S=SYC  :發起鏈接標誌
  • P:P=PUSH:傳送數據標誌
  • F:F=FIN:關閉鏈接標誌
  • ack:表示確認包
  • RST=RESET:異常關閉鏈接
  • 表示沒有任何標誌

3. tcpdump的實例:

  • 起步1: 抓取指定端口的包
    tcpdump -i eth0 -c 100
  • 起步2:抓取指定協議的包
    tcpdump -i eth0 -c 100 tcp
  • 起步3:抓取指定協議,指定port的包【tcp ip port src dst host net】
    tcpdump -i eth0 -c 100 tcp port 5440
  • 起步4:組合過濾條件【and or not】
    tcpdump -i eth0 -c 100 tcp port 5440  and src host 192.1.1.2
  • 起步5:抓取指定網段的包
    tcpdump -i eth0 -c 100 tcp port 5440 and src net 192.1.1.0/24
  • 高級1:寫入文件並用wireshark在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
    而後用ftp傳輸到windows下面,在用wireshark打開cap文件便可
  • 高級2:提取http包
    tcpdump  -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854 -c 20 -w ./target.cap
    其中-s 0表示不限制包的大小;tcp[20:2]從表示tcp包頭第20個字節開始的2個字節等於0x4745(對應字符GE)或者等於0x4854(對應HT);
    這種方法適用於tcp頭中OPTION爲空的狀況,若是不爲空,須要從第24個字節開始。

    基本語法tcp

    ========
    過濾主機
    --------
    - 抓取全部通過 eth1,目的或源地址是 192.168.1.1 的網絡數據
    # tcpdump -i eth1 host 192.168.1.1
    - 源地址
    # tcpdump -i eth1 src host 192.168.1.1
    - 目的地址
    # tcpdump -i eth1 dst host 192.168.1.1
    過濾端口
    --------
    - 抓取全部通過 eth1,目的或源端口是 25 的網絡數據
    # tcpdump -i eth1 port 25
    - 源端口
    # tcpdump -i eth1 src port 25
    - 目的端口
    # tcpdump -i eth1 dst port 25網絡過濾
    --------
    # tcpdump -i eth1 net 192.168
    # tcpdump -i eth1 src net 192.168
    # tcpdump -i eth1 dst net 192.168
    協議過濾
    --------
    # tcpdump -i eth1 arp
    # tcpdump -i eth1 ip
    # tcpdump -i eth1 tcp
    # tcpdump -i eth1 udp
    # tcpdump -i eth1 icmp

  注意:在linux抓取包後用tcpdump -r 只能看到包的簡單信息;若是須要查詢抓取包的詳細信息須要把抓取的包target.cap 經過 ftp服務器傳輸到windows機器上;藉助wireshark工具來分析數據;wireshark是一款開源的分析網絡抓包的工具;灰常的好用。工具

相關文章
相關標籤/搜索