tshark、tcpdump命令行分析工具对比(1)

在学习各种GUI工具分析数据包过程中,接触了两个很好用的命令行分析工具。有时候使用命令行分析工具更方便,特别是可以使用管道筛选。我通常情况下在windows系统中使用tshark,在unix系统中使用tcpdump。这边在实际使用中对比这两个工具。

1、安装

  • tshark
    在安装wireshark的时候,也同步安装了tshark,是可以勾选的,一般在默认情况下都是安装的。而默认的安装路径为C:\Program Files\Wireshark,可以以下操作确认。
C:\Users\25725>cd "C:\Program Files\Wireshark"

C:\Program Files\Wireshark>tshark -v
TShark (Wireshark) 3.2.2 (v3.2.2-0-ga3efece3d640)

-h可以看tshark的功能。

  • tcpdump
    这个工具一般使用在unix、linux系统中,笔者使用macos也可以使用。安装方法:
 sudo apt-get install tcpdump

macos:

  brew install tcpdump

安装完成之后可以-h查看使用功能:

➜  ~ tcpdump -h
tcpdump version tcpdump version 4.9.2 -- Apple version 83.200.2
libpcap version 1.8.1 -- Apple version 79.250.1
LibreSSL 2.2.7
Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]
        [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
        [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]
        [ -Q in|out|inout ]
        [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
        [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]
        [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
[ -g ] [ -k ] [ -o ] [ -P ] [ -Q met[ --time-zone-offset offset ]
        [ -Z user ] [ expression ]

也可以使用man tcpdump,查看工具所有命令。

2、捕获保存数据

  • tshark

首先需要确认网卡,一般使用-D命令,之后可以是有-i选择想要使用的网卡编号,如图所示:

C:\Program Files\Wireshark>tshark -D
1. \Device\NPF_{6A118642-22BF-42F1-891F-4E9B9DB34C6E} (鏈湴杩炴帴* 9)
2. \Device\NPF_{107F38F6-75DD-4E20-8BF9-4CF6B0B8A9DC} (鏈湴杩炴帴* 8)
3. \Device\NPF_{3915B8B8-AB83-4940-BCFD-F75E72F8A23F} (鏈湴杩炴帴* 1)
4. \Device\NPF_{A52A5331-CE25-455C-BD55-DB8EFA8D952F} (钃濈墮缃戠粶杩炴帴)
5. \Device\NPF_{D852B1BF-94F1-4D40-A5A9-DF9EC1C5BA45} (鏈湴杩炴帴* 10)
6. \Device\NPF_{61C1BAF8-F5D6-4E72-8D7C-661789D81A81} (鏈湴杩炴帴* 7)
7. \Device\NPF_{30EC2165-4239-4171-992A-5BE9EA7BB396} (WLAN)
8. \Device\NPF_Loopback (Adapter for loopback traffic capture)
9. \Device\NPF_{4D673649-7B96-4EA8-81F2-14619E638704} (浠ュお缃?

C:\Program Files\Wireshark>tshark -i 7
Capturing on 'WLAN'
    1   0.000000 10.129.20.181 → 239.255.255.250 SSDP 217 M-SEARCH * HTTP/1.1
    2   0.104323 10.129.16.219 → 239.255.255.250 SSDP 217 M-SEARCH * HTTP/1.1
    3   0.104523 fe80::e147:823c:f6bb:bcd2 → ff02::1:3    LLMNR 95 Standard query 0x95fa ANY 75GKMSUBLI28G9W
    4   0.104598 fe80::e147:823c:f6bb:bcd2 → ff02::1:3    LLMNR 95 Standard query 0x95fa ANY 75GKMSUBLI28G9W
  • tcpdump

原理都是相同的,先使用ifconfig 查看列出的网卡信息,再用-i选择相应的网卡,如图所示:

➜  ~ ifconfig 
lo0: flags=8049 mtu 16384
    options=1203
    inet 127.0.0.1 netmask 0xff000000 
    inet6 ::1 prefixlen 128 
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
    nd6 options=201
en0: flags=8863 mtu 1500
    ether 88:e9:fe:69:21:f0 
    inet6 fe80::181f:24ac:18c4:42ae%en0 prefixlen 64 secured scopeid 0x6 
    inet 10.129.16.219 netmask 0xfffff000 broadcast 10.129.31.255
    nd6 options=201
    media: autoselect
    status: active
➜  ~ 
➜  ~ tcpdump -i en0  

这个命令使只从eth0中捕获流量。
一旦开始捕获时,终端上打印的信息会快速的滚动,不方便查看数据信息,这时候我们需要将其保存到文件中,可以使用-w file 保存,也可以加上路径,这边习惯存在 /tmp下,如图所示:

➜  ~ tcpdump -i en0 -w /tmp/packets.pcap

问题:
1、尝试使用输出重定向或者tee指令,比如 > file 或者 tee -a file,均不能保存。原因还没搞清楚,先记下来。
2、出现tshark无法保存的情况。

C:\Program Files\Wireshark>tshark -i 7 -w test.pcap
Capturing on 'WLAN'
tshark: The file to which the capture would be saved ("test.pcap") could not be opened: Permission denied.

分析原因是windows10下默认文件夹没有权限。更改目录就可以了。

3、读取

这边通过终端,都可以使用-r读取保存的捕获数据。

  • tshark
C:\Program Files\Wireshark>tshark -r D:\test\packets.pcap

可以使用-c显示最开始的包数,如图所示:

C:\Program Files\Wireshark>tshark -r D:\test\packets.pcap -c10
    1   0.000000 10.129.26.216 → 239.255.255.250 SSDP 412 NOTIFY * HTTP/1.1
    2   0.000167 10.129.26.216 → 239.255.255.250 SSDP 410 NOTIFY * HTTP/1.1
    3   0.000464 10.129.26.195 → 239.255.255.250 SSDP 410 NOTIFY * HTTP/1.1
    4   0.000706 10.129.26.195 → 239.255.255.250 SSDP 380 NOTIFY * HTTP/1.1
    5   0.000922 10.129.26.216 → 239.255.255.250 SSDP 380 NOTIFY * HTTP/1.1
    6   0.001169 10.129.16.67 → 239.255.255.250 SSDP 318 NOTIFY * HTTP/1.1
    7   0.001353 10.129.26.195 → 239.255.255.250 SSDP 346 NOTIFY * HTTP/1.1
    8   0.001566 10.129.26.195 → 239.255.255.250 SSDP 355 NOTIFY * HTTP/1.1
    9   0.001818 10.129.26.195 → 239.255.255.250 SSDP 402 NOTIFY * HTTP/1.1
   10   0.002078 10.129.26.195 → 239.255.255.250 SSDP 400 NOTIFY * HTTP/1.1
  • tcpdump
    和tshark一样
➜  /tmp tcpdump -r packets.pcap -c5 
reading from file packets.pcap, link-type EN10MB (Ethernet)
16:38:15.829436 IP 10.129.21.15.55710 > 239.255.255.250.ssdp: UDP, length 133
16:38:15.829444 IP 10.129.16.222.58793 > 239.255.255.250.ssdp: UDP, length 175
16:38:15.856400 IP 10.129.16.219.60216 > 101.91.69.61.sunproxyadmin: Flags [S], seq 1177047401, win 65535, options [mss 1460,nop,wscale 6,nop,nop,TS val 805371009 ecr 0,sackOK,eol], length 0
16:38:15.884824 IP 101.91.69.61.sunproxyadmin > 10.129.16.219.60216: Flags [S.], seq 3924858574, ack 1177047402, win 13600, options [mss 1300,nop,nop,sackOK,nop,wscale 10], length 0
16:38:15.884919 IP 10.129.16.219.60216 > 101.91.69.61.sunproxyadmin: Flags [.], ack 1, win 4103, length 0

补充:
捕获的时候也可以使用-c 参数,表示抓取x个包。

你可能感兴趣的:(tshark、tcpdump命令行分析工具对比(1))