tcpdump和wireshark抓包方法介紹

1.tcpdump工具的使用:用簡單的話來定義tcpdump,就是:dump the traffic on a network,根據使用者的定義對網絡上的數據包進行截獲的
包分析工具。 tcpdump可以將網絡中傳送的數據包的“頭”完全截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,並提
供and、or、not等邏輯語句來幫助你去掉無用的信息。
    語法:
    tcpdump [ -AdDefIKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]
        [ -C file_size ] [ -G rotate_seconds ] [ -F file ]
        [ -i interface ] [ -m module ] [ -M secret ]
        [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
        [ -W filecount ]
        [ -E spi@ipaddr algo:secret,...  ]
        [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
        [ expression ]
    c 設定抓多少個包後自動停止                     s 指定抓每個包的前多少字節(默認56字節)
    w 保存到某個文件                            r 讀文件
    v 顯示更詳細                                n 不顯示主機名,顯示IP
    nn 也把端口顯示爲數值,否則顯示端口服務名    i 指定哪塊網卡
    host 指定某個主機                            port 指定某個端口
    net 指定某個網絡                            tcp 指定抓tcp包
    udp 指定抓udp包                                ip 指定抓ip包
    icmp 指定抓icmp包                            src host 指定源主機
    dst host 指定目的主機                        dst port 指定目的端口
2.使用舉例
    抓164訪問本地22端口的包 ,單向的
[root@stu24 ~]# tcpdump -i eth0 -n src host 192.168.0.164 and dst port 22
    抓164ping本地的包
[root@stu24 ~]# tcpdump -i eth0 -n icmp and src host 192.168.0.164
    當網卡工作於混雜模式裏時
[root@stu24 ~]# tcpdump -i eth0 -n dst port 22 or dst port 80 
    兩種條件一起抓
[root@stu24 ~]# tcpdump -i eth0 -n 'src host 192.168.0.164 and dst port 22' or 'src host 192.168.0.4 and dst port 80'二者等價
[root@stu24 ~]# tcpdump -i eth0 -n \(src host 192.168.0.164 and dst port 22\) or \(src host 192.168.0.4 and dst port 80\)

tcpdump -i eth0 
tcpdump -i eth0 -v -n 
    -v 顯示包含有TTL,TOS值等等更詳細的信息    -n不要做IP解析爲主機名      -nn不做名字解析和端口解析
    更有針對性的抓包:針對IP,網段,端口,協議
[root@ ftp]# tcpdump -i eth0 -vnn host 192.168.0.154
[root@ ftp]# tcpdump -i eth0 -vnn net 192.168.0.0/24
[root@ ftp]# tcpdump -i eth0 -vnn port 22 
[root@ ftp]# tcpdump -i eth0 -vnn  udp
[root@ ftp]# tcpdump -i eth0 -vnn icmp
[root@ ftp]# tcpdump -i eth0 -vnn arp
[root@ ftp]# tcpdump -i eth0 -vnn ip
[root@ ftp]# tcpdump -i eth0 -vnn src host 192.168.0.154
[root@ ftp]# tcpdump -i eth0 -vnn dst host 192.168.0.154
[root@ ftp]# tcpdump -i eth0 -vnn src port 22
[root@ ftp]# tcpdump -i eth0 -vnn src host 202.106.0.254 and dst port 22
[root@ ftp]# tcpdump -i eth0 -vnn src host 192.168.0.154 or port 22
[root@ ftp]# tcpdump -i eth0 -vnn src host 192.168.0.154 and not port 22 
[root@ ftp]# tcpdump -i eth0 -vnn \( src host 192.168.0.2 and dst port 22 \) or   \( src host 192.168.0.65 and dst port 80 \)
[root@ ~]# tcpdump -i eth0 -vnn -r  /tmp/fil1 tcp
[root@ ~]# tcpdump -i eth0 -vnn -r  /tmp/fil1 host  202.106.0.258
[root@ ~]# tcpdump -i eth0 -vnn -r  /tmp/fil1 tcp
[root@ ~]# tcpdump -i eth0 -vnn -w  /tmp/fil1 -c 100

3.包文分析
16:50:11.916308 IP 10.37.63.3.52346 > 61.135.169.121.http: Flags [P.], seq 1888894293:1888894434, ack 2526934942, win 8192, 
length 141: HTTP: GET / HTTP/1.1
第一列是時間戳:時、分、秒、微秒
第二列是網際網路協議的名稱
第三列是報文發送方的十進制的網際網路協議地址,以及緊跟其後的端口號(偶爾會是某個協議名如 http ,如果在此處仍然顯示端口號加上 -n 選項)
第四列是大於號
第五列是報文接收方的十進制的網際網路協議地址,以及緊跟其後的端口號(偶爾會是某個協議名如 http ,如果在此處仍然顯示端口號加上 -n 選項)
第六列是冒號
第七列是 Flags 標識,可能的取值是 [S.] [.] [P.] [F.]
第八、九、十……列 是tcp協議報文頭的一些變量值:
seq 是 請求同步的 序列號
ack 是 已經同步的 序列號
win 是 當前可用窗口大小
length 是 tcp協議報文體的長度
如果加入了-S選項,會看到的 seq, ack 是 兩個冒號分割的值,分別表示變更前、後的值。

每一行中間都有這個包所攜帶的標誌:
S=SYN,發起連接標誌。    P=PUSH,傳送數據標誌。   F=FIN,關閉連接標誌。ack,表示確認包。RST=RESET,異常關閉連接。
.,表示沒有任何標誌。

4.linux(tcpdump抓包)和windows(wireshark分析)配合抓包分析。
    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)分析

步驟:
    1)啓動8080端口,tcpdump抓包命令如下:
tcpdump -i lo0 -s 0 -n -S host 10.37.63.3 and port 8080 -w ./Desktop/tcpdump_10.37.63.3_8080_20160525.cap

    # 然後再執行curl
curl http://10.37.63.3:8080/atbg/doc
    2)使用Wireshark打開tcpdump_10.37.63.3_8080_20160525.cap文件

wireshark請參考:https://www.cnblogs.com/shenpengyan/p/5912567.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章