Help us understand the problem. What is going on with this article?

tsharkコマンドの使い方

0 tsharkとは?

WiresharkのCLI(Command Line Interface)版です。
条件を絞り込んでパケットを特定するには、Wiresharkよりtsharkの方が
使い勝手が良いと思いました。

1 環境

VMware Workstation 12 Player上の仮想マシンを使っています。

CentOS版数
[root@admin ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
カーネル版数
[root@admin ~]# uname -r
3.10.0-514.el7.x86_64

ゲストマシンの搭載CPU数は4個です。

搭載CPU数
[root@admin tcpdump]# cat /proc/cpuinfo |grep processor
processor       : 0
processor       : 1
processor       : 2
processor       : 3

2 事前準備

2.1 tsharkのインストール

wiresharkパッケージをインストールします。

[root@admin ~]# yum -y install wireshark
[root@admin ~]# tshark -v
TShark 1.10.14 (Git Rev Unknown from unknown)
-以下、略-

3 pcapファイルから条件を指定してパケットを絞り込む方法

3.0 事前準備(テスト用pcapファイル作成)

[root@admin tshark]# tcpdump -i eth0 not tcp port 22 -w test.cap

別ターミナルをオープンする。bcパッケージをダウンロードする。
ファイルサイズが小さいので、bcパッケージを選択しました。
[root@admin tshark]# yumdownloader bc

採取したpcapファイルを確認する。
[root@admin tshark]# ls -l test.cap
-rw-r--r-- 1 tcpdump tcpdump 133080  8月  1 20:04 test.cap

3.1 TCP関連

3.1.1 ポート番号(tcp.port)で絞り込む方法

[root@admin tshark]# tshark -r test.cap 'tcp.port==80' -n
Running as user "root" and group "root". This could be dangerous.
  1          0 192.168.0.100 -> 203.178.137.175 TCP 66 38308 > 80 [FIN, ACK] Seq=1 Ack=1 Win=296 Len=0 TSval=128449 TSecr=744519781
  2          2 192.168.0.100 -> 158.69.68.124 TCP 66 38680 > 80 [FIN, ACK] Seq=1 Ack=1 Win=432 Len=0 TSval=130496 TSecr=4182465524
  5          3 192.168.0.100 -> 103.237.168.15 TCP 74 35818 > 80 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=131487 TSecr=0 WS=128
-以下、略-

3.1.2 宛先ポート番号(tcp.dstport)で絞り込む方法

[root@admin tshark]# tshark -r test.cap 'tcp.dstport==80' -n
Running as user "root" and group "root". This could be dangerous.
  1          0 192.168.0.100 -> 203.178.137.175 TCP 66 38308 > 80 [FIN, ACK] Seq=1 Ack=1 Win=296 Len=0 TSval=128449 TSecr=744519781
  2          2 192.168.0.100 -> 158.69.68.124 TCP 66 38680 > 80 [FIN, ACK] Seq=1 Ack=1 Win=432 Len=0 TSval=130496 TSecr=4182465524
  5          3 192.168.0.100 -> 103.237.168.15 TCP 74 35818 > 80 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=131487 TSecr=0 WS=128
-以下、略-

3.1.3 送信元ポート番号(tcp.srcport)で絞り込む方法

[root@admin tshark]# tshark -r test.cap 'tcp.srcport==80' -n
Running as user "root" and group "root". This could be dangerous.
  6          3 103.237.168.15 -> 192.168.0.100 TCP 74 80 > 35818 [SYN, ACK] Seq=0 Ack=1 Win=14480 Len=0 MSS=1460 SACK_PERM=1 TSval=332825336 TSecr=131487 WS=128
  9          3 103.237.168.15 -> 192.168.0.100 TCP 66 80 > 35818 [FIN, ACK] Seq=1 Ack=2 Win=14592 Len=0 TSval=332825466 TSecr=131589
 18          9 203.178.137.175 -> 192.168.0.100 TCP 74 80 > 38330 [SYN, ACK] Seq=0 Ack=1 Win=64074 Len=0 SACK_PERM=1 TSval=744527437 TSecr=137677 MSS=1460 WS=4
-以下、略-

3.1.4 シーケンス番号(tcp.seq)で絞り込む方法

シーケンス番号が117466のものを抽出してみます。

[root@admin tshark]# tshark -r test.cap 'tcp.seq==117466' -n
Running as user "root" and group "root". This could be dangerous.
178          9 203.178.137.175 -> 192.168.0.100 TCP 66 80 > 38330 [ACK] Seq=117466 Ack=172 Win=256296 Len=0 TSval=744527472 TSecr=138032
179          9 203.178.137.175 -> 192.168.0.100 TCP 66 80 > 38330 [FIN, ACK] Seq=117466 Ack=172 Win=256296 Len=0 TSval=744527472 TSecr=138032
-以下、略-

3.1.5 SYNフラグだけがたったパケットを抽出する方法

[root@admin tshark]# tshark -r test.cap 'tcp.flags.syn==1' and 'tcp.flags.ack==0' -n
Running as user "root" and group "root". This could be dangerous.
  5          3 192.168.0.100 -> 103.237.168.15 TCP 74 35818 > 80 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=131487 TSecr=0 WS=128
 17          9 192.168.0.100 -> 203.178.137.175 TCP 74 38330 > 80 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=137677 TSecr=0 WS=128

3.1.6 SYNフラグ,SYN+ACKがたったパケットを抽出する方法

[root@admin tshark]# tshark -r test.cap 'tcp.flags.syn==1' -n
Running as user "root" and group "root". This could be dangerous.
  5          3 192.168.0.100 -> 103.237.168.15 TCP 74 35818 > 80 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=131487 TSecr=0 WS=128
  6          3 103.237.168.15 -> 192.168.0.100 TCP 74 80 > 35818 [SYN, ACK] Seq=0 Ack=1 Win=14480 Len=0 MSS=1460 SACK_PERM=1 TSval=332825336 TSecr=131487 WS=128
 17          9 192.168.0.100 -> 203.178.137.175 TCP 74 38330 > 80 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=137677 TSecr=0 WS=128
 18          9 203.178.137.175 -> 192.168.0.100 TCP 74 80 > 38330 [SYN, ACK] Seq=0 Ack=1 Win=64074 Len=0 SACK_PERM=1 TSval=744527437 TSecr=137677 MSS=1460 WS=4

3.1.7 FINフラグがたったパケットを抽出する方法

[root@admin tshark]# tshark -r test.cap 'tcp.flags.fin==1' -n
Running as user "root" and group "root". This could be dangerous.
  1          0 192.168.0.100 -> 203.178.137.175 TCP 66 38308 > 80 [FIN, ACK] Seq=1 Ack=1 Win=296 Len=0 TSval=128449 TSecr=744519781
  2          2 192.168.0.100 -> 158.69.68.124 TCP 66 38680 > 80 [FIN, ACK] Seq=1 Ack=1 Win=432 Len=0 TSval=130496 TSecr=4182465524
-以下、略-

3.1.8 RSTフラグがたったパケットを抽出する方法

[root@server tshark]# tshark -r zero.cap 'tcp.flags.reset==1' -n
Running as user "root" and group "root". This could be dangerous.
121         32 192.168.0.100 -> 192.168.0.110 TCP 66 11111 > 36618 [RST, ACK] Seq=1 Ack=796113 Win=224384 Len=0 TSval=0 TSecr=8540696

3.1.9 windowsサイズが0のパケットを抽出する方法

受信側でTCPパケットをこれ以上受信できなくなると(カーネルの受信バッファに空きがなくなると)、
送信側に対してwindowsサイズが0のTCPパケットを送信します。
送信側がwindowsサイズ0のパケットを受信すると、受信側に対する送信を停止します。
ここでは、windowsサイズが0のパケットを絞り込む方法を示します。

[root@server tshark]# tshark -r zero.cap 'tcp.window_size==0' -n
Running as user "root" and group "root". This could be dangerous.
227          0 192.168.0.100 -> 192.168.0.110 TCP 66 [TCP ZeroWindow] 11111 > 36448 [ACK] Seq=1 Ack=1223385 Win=0 Len=0 TSval=8935580 TSecr=7862435
229          0 192.168.0.100 -> 192.168.0.110 TCP 66 [TCP ZeroWindow] 11111 > 36448 [ACK] Seq=1 Ack=1223385 Win=0 Len=0 TSval=8935788 TSecr=7862435
236          1 192.168.0.100 -> 192.168.0.110 TCP 66 [TCP ZeroWindow] 11111 > 36448 [ACK] Seq=1 Ack=1248241 Win=0 Len=0 TSval=8936360 TSecr=7863212
-以下、略-

3.2 IP関連

3.2.1 送信元IPアドレス(ip.src)で絞り込む方法

[root@admin tshark]# tshark -r test.cap 'ip.src==192.168.0.100' -n
Running as user "root" and group "root". This could be dangerous.
  1          0 192.168.0.100 -> 203.178.137.175 TCP 66 38308 > 80 [FIN, ACK] Seq=1 Ack=1 Win=296 Len=0 TSval=128449 TSecr=744519781
  2          2 192.168.0.100 -> 158.69.68.124 TCP 66 38680 > 80 [FIN, ACK] Seq=1 Ack=1 Win=432 Len=0 TSval=130496 TSecr=4182465524
  3          3 192.168.0.100 -> 192.168.3.1  DNS 80 Standard query 0xe75a  A mirror.vastspace.net
-以下、略-

3.2.2 宛先IPアドレス(ip.dst)で絞り込む方法

[root@admin tshark]# tshark -r test.cap 'ip.dst==192.168.0.100' -n
Running as user "root" and group "root". This could be dangerous.
  4          3  192.168.3.1 -> 192.168.0.100 DNS 244 Standard query response 0xe75a  A 103.237.168.15
  6          3 103.237.168.15 -> 192.168.0.100 TCP 74 80 > 35818 [SYN, ACK] Seq=0 Ack=1 Win=14480 Len=0 MSS=1460 SACK_PERM=1 TSval=332825336 TSecr=131487 WS=128
  9          3 103.237.168.15 -> 192.168.0.100 TCP 66 80 > 35818 [FIN, ACK] Seq=1 Ack=2 Win=14592 Len=0 TSval=332825466 TSecr=131589
-以下、略-

3.2.3 IPパケット長(ip.len)で絞り込む方法

使える演算子は以下のとおり。
eq:等しい
ne:等しくない
gt:より大きい
ge:以上
lt:より小さい
le:以下

IPパケット長が1500(byte)のパケットを抽出します。
1514と表示されているのは、イーサネットヘッダ長(14バイト)をIPパケット長(1500)に加えているためです。

[root@admin tshark]# tshark -r test.cap 'ip.len eq 1500' -nn
Running as user "root" and group "root". This could be dangerous.
 22          9 203.178.137.175 -> 192.168.0.100 TCP ★1514 [TCP segment of a reassembled PDU]
 24          9 203.178.137.175 -> 192.168.0.100 TCP ★1514 [TCP segment of a reassembled PDU]
 26          9 203.178.137.175 -> 192.168.0.100 TCP ★1514 [TCP segment of a reassembled PDU]
-以下、略-

3.3 ARP関連

3.3.1 ARP要求(arp.opcode==1)パケットを抽出する方法

[root@admin tshark]# tshark -r test.cap 'arp.opcode==1' -n
Running as user "root" and group "root". This could be dangerous.
 11          8 b4:82:fe:d2:8c:1a -> ff:ff:ff:ff:ff:ff ARP 60 Who has 192.168.0.100?  Tell 192.168.0.5

3.3.2 ARP応答(arp.opcode==2)パケットを抽出する方法

[root@admin tshark]# tshark -r test.cap 'arp.opcode==2' -n
Running as user "root" and group "root". This could be dangerous.
 12          8 00:0c:29:9b:e6:7d -> b4:82:fe:d2:8c:1a ARP 42 192.168.0.100 is at 00:0c:29:9b:e6:7d

3.3.3 Target IP(arp.dst.proto_ipv4)をキーに抽出する方法

[root@admin tshark]# tshark -r test.cap 'arp.dst.proto_ipv4==192.168.0.100' -n
Running as user "root" and group "root". This could be dangerous.
 11          8 b4:82:fe:d2:8c:1a -> ff:ff:ff:ff:ff:ff ARP 60 Who has 192.168.0.100?  Tell 192.168.0.5

3.4 ICMP関連

3.4.1 ICMP Echo Request(type=8)を抽出する方法

テスト用pcapファイルを作成する。
[root@admin tshark]# tcpdump -i eth0 icmp -w ping.cap

もう1つターミナルを開いて、デフォルトGWにpingを実行する。
[root@admin tshark]# ping -c 1 192.168.0.1

 ICMP Echo Requestだけを抽出する。
[root@admin tshark]# tshark -r ping.cap 'icmp.type==8'
Running as user "root" and group "root". This could be dangerous.
  1          0 192.168.0.100 -> 192.168.0.1  ICMP 98 Echo (ping) request  id=0x0361, seq=1/256, ttl=64

3.4.2 ICMP Echo Reply(type=0)を抽出する方法

テスト用のpcapファイルは3.4.1のものを使う。ICMP Echo Replyだけを抽出します。

[root@admin tshark]# tshark -r ping.cap 'icmp.type==0'
Running as user "root" and group "root". This could be dangerous.
  2          0  192.168.0.1 -> 192.168.0.100 ICMP 98 Echo (ping) reply    id=0x0361, seq=1/256, ttl=255 (request in 1)

3.4.3 ICMP Host Unreachable(type=3,code1)を抽出する方法

s01でhping3を実行します。s01,adminはホスト名です。
なお、hping3コマンドの使い方はここを参照ください。

テスト用pcapファイル作成環境
    s01 --------------------- admin
   172.16.0.110       172.16.0.100
テスト用pcapファイル作成
ICMP Host Unreachable(type=3,code1)パケットをadminに送信する。
[root@s01 ~]# hping3 -I eth2 -1 -c 1 -C 3 -K 1 --icmp-ipproto 17 --icmp-ipsrc 172.16.0.100 --icmp-ipdst 172.16.0.110 --icmp-srcport 20000 --icmp-dstport 11111 admin

ICMP Port Unreachable(type=3,code3)パケットをadminに送信する。
[root@s01 ~]# hping3 -I eth0 -1 -c 1 -C 3 -K 3 --icmp-ipproto 17 --icmp-ipsrc 192.168.0.100 --icmp-ipdst 192.169.0.110 --icmp-srcport 20000 --icmp-dstport 53 admin
ICMP_Host_Unreachable(type=3,code1)の抽出方法
[root@admin tshark]# tshark -r dest_unreach.cap 'icmp.type==3' and 'icmp.code==1'
Running as user "root" and group "root". This could be dangerous.
  1          0    127.0.0.1 -> 192.168.0.100 ICMP 70 Destination unreachable (Host unreachable)

3.4.4 ICMP Port Unreachable(type=3,code3)を抽出する方法

テスト用pcapファイルは、3.4.3のものを使います。

[root@admin tshark]# tshark -r dest_unreach.cap 'icmp.type==3' and 'icmp.code==3'
Running as user "root" and group "root". This could be dangerous.
  2          4 192.168.0.110 -> 192.168.0.100 ICMP 70 Destination unreachable (Port unreachable)

3.5 その他

3.5.1 フレーム番号で絞り込む方法(frame.number)

[root@server tshark]# tshark -r test.cap -Y 'frame.number>=10 and frame.number<=20'
Running as user "root" and group "root". This could be dangerous.
 10          2  192.168.0.1 -> 192.168.0.20 ICMP 98 Echo (ping) reply    id=0x0580, seq=3/768, ttl=255 (request in 9)
 11          3 192.168.0.20 -> 192.168.0.1  ICMP 98 Echo (ping) request  id=0x0580, seq=4/1024, ttl=64
 12          3  192.168.0.1 -> 192.168.0.20 ICMP 98 Echo (ping) reply    id=0x0580, seq=4/1024, ttl=255 (request in 11)
 13          4 192.168.0.20 -> 172.104.105.31 NTP 90 NTP Version 4, client
 14          4 172.104.105.31 -> 192.168.0.20 NTP 90 NTP Version 4, server
 15          4 192.168.0.20 -> 192.168.0.1  ICMP 98 Echo (ping) request  id=0x0580, seq=5/1280, ttl=64
 16          4  192.168.0.1 -> 192.168.0.20 ICMP 98 Echo (ping) reply    id=0x0580, seq=5/1280, ttl=255 (request in 15)
 17          4  192.168.0.6 -> 224.0.0.251  MDNS 112 Standard query 0x0000  PTR _sleep-proxy._udp.local, "QU" question
 18          4 fe80::8b:dd37:8810:271c -> ff02::2      ICMPv6 70 Router Solicitation from f4:37:b7:57:0f:2f
 19          4 fe80::8b:dd37:8810:271c -> ff02::2      ICMPv6 70 Router Solicitation from f4:37:b7:57:0f:2f
 20          4 fe80::8b:dd37:8810:271c -> ff02::fb     MDNS 132 Standard query 0x0000  PTR _sleep-proxy._udp.local, "QU" question

3.5.2 時刻で絞り込む方法(frame.time >= “2015-01-01 00:00:00”)

4 時刻を表示する方法

4.1 パケット採取時刻を表示する方法(-ta)

事前準備(テスト用pcapファイルの作成)
[root@server ~]# tcpdump -i eth0 port 53 -w dns.cap

digコマンドを実行して、DNSパケットを採取する。
[root@server ~]# dig ntp.nict.jp +short
[root@server ~]# dig google.co.jp +short
実行結果の確認(2列目に時刻が表示されていることの確認)
[root@server ~]# tshark -r dns.cap -ta
Running as user "root" and group "root". This could be dangerous.
  1   21:24:43 192.168.0.100 -> 192.168.3.1  DNS 82 Standard query 0x3eb3  A ntp.nict.jp
  2   21:24:43  192.168.3.1 -> 192.168.0.100 DNS 249 Standard query response 0x3eb3  A 133.243.238.164 A 133.243.238.244 A 133.243.238.163 A 133.243.238.243
  3   21:24:56 192.168.0.100 -> 192.168.3.1  DNS 83 Standard query 0xd9d8  A google.co.jp
  4   21:24:56  192.168.3.1 -> 192.168.0.100 DNS 245 Standard query response 0xd9d8  A 216.58.197.163

4.2 時刻の差分を表示する方法(-td)

3番目のパケット採取時刻を確認します。
2番目のパケット採取時刻から12秒(★)経過していることがわかります。

[root@server ~]# tshark -r dns.cap -td
Running as user "root" and group "root". This could be dangerous.
  1          0 192.168.0.100 -> 192.168.3.1  DNS 82 Standard query 0x3eb3  A ntp.nict.jp
  2          0  192.168.3.1 -> 192.168.0.100 DNS 249 Standard query response 0x3eb3  A 133.243.238.164 A 133.243.238.244 A 133.243.238.163 A 133.243.238.243
  3       ★12 192.168.0.100 -> 192.168.3.1  DNS 83 Standard query 0xd9d8  A google.co.jp
  4          0  192.168.3.1 -> 192.168.0.100 DNS 245 Standard query response 0xd9d8  A 216.58.197.163

4.3 epochタイムを表示する方法

サーバからデフォルトルータにpingを実行して、テスト用のpcapファイルを作成します。

テスト用データ採取
[root@server ~]# tcpdump -i eth0 icmp -w icmp.pcap

デフォルトルータに200ミリ秒間隔でpingを5回実行します。
pingの使い方は、ここ(pingコマンドの使い方)を参照してください。

テスト用データ作成
[root@server ~]# ping -c 5 -i 0.2 192.168.3.1
PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.
64 bytes from 192.168.3.1: icmp_seq=1 ttl=128 time=0.944 ms
64 bytes from 192.168.3.1: icmp_seq=2 ttl=128 time=0.757 ms
64 bytes from 192.168.3.1: icmp_seq=3 ttl=128 time=1.25 ms
64 bytes from 192.168.3.1: icmp_seq=4 ttl=128 time=0.700 ms
64 bytes from 192.168.3.1: icmp_seq=5 ttl=128 time=0.726 ms

--- 192.168.3.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 803ms
rtt min/avg/max/mdev = 0.700/0.875/1.252/0.210 ms

採取したpcapファイルのepochタイムを表示してみます。
このとき、ICMP echo request/ICMP echo replayの値も表示してみます。
ICMP echo requestの値は8、ICMP echo replayの値は0です。

epochタイム表示結果
[root@server ~]# tshark -T fields -e frame.number -e frame.time_epoch -e icmp.type -r icmp.pcap
Running as user "root" and group "root". This could be dangerous.
1       1553596815.806399000    8
2       1553596815.807306000    0
3       1553596816.007477000    8
4       1553596816.008193000    0
5       1553596816.208421000    8
6       1553596816.209637000    0
7       1553596816.409136000    8
8       1553596816.409802000    0
9       1553596816.609837000    8
10      1553596816.610534000    0

epochタイムの表示はできましたが、少しプラスαのことをしてみます。
ICMP echo requestを送信してから、ICMP echo replayを受信するまでの時間を調べてみます。

epochタイムの抽出
[root@server ~]# tshark -T fields -e frame.time_epoch -r icmp.pcap> time.txt
Running as user "root" and group "root". This could be dangerous.

偶数行から奇数行の時刻を引くことで、ICMP echo requestを送信してから
ICMP echo replayを受信するまでの時間を求めることができます。

抽出したepochタイムの確認
[root@server ~]# cat time.txt
1553596815.806399000
1553596815.807306000
1553596816.007477000
1553596816.008193000
1553596816.208421000
1553596816.209637000
1553596816.409136000
1553596816.409802000
1553596816.609837000
1553596816.610534000

5 表示項目を指定する方法(-e)

フレーム番号の表示
[root@server tshark]# tshark -r test.cap -T fields -e frame.number -e frame.time -e ip.addr
Running as user "root" and group "root". This could be dangerous.
1       "Jan 28, 2018 10:02:34.938253000 JST"   192.168.0.20,150.95.187.128
2       "Jan 28, 2018 10:02:34.957023000 JST"   150.95.187.128,192.168.0.20
3       "Jan 28, 2018 10:02:35.016057000 JST"   192.168.0.20,192.168.0.1
4       "Jan 28, 2018 10:02:35.017424000 JST"   192.168.0.1,192.168.0.20
5       "Jan 28, 2018 10:02:35.567166000 JST"   192.168.0.20,160.16.75.242
-以下、略-
フレーム番号と送信元IPの表示
[root@server tshark]# tshark -r test.cap -T fields -e frame.number -e ip.src -Y ip.dst==104.71.167.95 -n
Running as user "root" and group "root". This could be dangerous.
121     192.168.0.20
123     192.168.0.20
124     192.168.0.20
127     192.168.0.20
128     192.168.0.20
130     192.168.0.20

7 統計情報の使い方(-z)

7.1 プロトコル毎のパケット数,バイト数を表示する方法(io,phs)

phs(Protocol Hierarchy Statistics)を表示する方法について説明します。
ここでは、-qオプションを付けて、出力する表示を簡略化しています。

7.1.1 全プロトコルの統計情報を表示する方法

[root@server tshark]# tshark -qr test.cap -z io,phs
Running as user "root" and group "root". This could be dangerous.

===================================================================
Protocol Hierarchy Statistics
Filter:

eth                                      frames:273 bytes:40996
  ip                                     frames:190 bytes:33120
    udp                                  frames:140 bytes:28225
      http                               frames:88 bytes:21433
      dns                                frames:42 bytes:5388
      ntp                                frames:8 bytes:720
      bootp                              frames:2 bytes:684
    icmp                                 frames:38 bytes:3724
    igmp                                 frames:2 bytes:120
    tcp                                  frames:10 bytes:1051
      http                               frames:1 bytes:142
  arp                                    frames:34 bytes:1860
  ipv6                                   frames:49 bytes:6016
    icmpv6                               frames:25 bytes:2594
    udp                                  frames:24 bytes:3422
      dns                                frames:18 bytes:2534
      dhcpv6                             frames:6 bytes:888
===================================================================

7.1.2 特定プロトコルの統計情報を表示する方法

ここでは、httpのパケット数、バイト数を表示してみます。

[root@server tshark]# tshark -qr test.cap -z io,phs,http
Running as user "root" and group "root". This could be dangerous.

===================================================================
Protocol Hierarchy Statistics
Filter: http

eth                                      frames:89 bytes:21575
  ip                                     frames:89 bytes:21575
    udp                                  frames:88 bytes:21433
      http                               frames:88 bytes:21433
    tcp                                  frames:1 bytes:142
      http                               frames:1 bytes:142
===================================================================

7.2 conversationの使い方(conv)

7.2.1 IPアドレスのconversation(conv,ip)

[root@server tshark]# tshark -r test.cap -z conv,ip -q
Running as user "root" and group "root". This could be dangerous.
================================================================================
IPv4 Conversations
Filter:<No Filter>
                                               |       <-      | |       ->      | |     Total     |    Relative    |   Duration   |
                                               | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |      Start     |              |
239.255.255.250      <-> 192.168.0.4               45      7515       0         0      45      7515    82.329027000       105.1680
192.168.0.20         <-> 192.168.0.1               19      1862      19      1862      38      3724     8.062302000        23.6856
239.255.255.250      <-> 192.168.0.1               35     12190       0         0      35     12190     0.000000000       150.0386
224.0.0.251          <-> 192.168.0.4               20      2492       0         0      20      2492    80.080146000       104.9588
192.168.3.1          <-> 192.168.0.20              10       778      10      1894      20      2672    44.651194000        97.1332
192.168.0.20         <-> 93.184.216.34              4       571       6       480      10      1051    61.162292000         0.3928
239.255.255.250      <-> 192.168.0.2                8      1728       0         0       8      1728    52.762591000       123.0037
255.255.255.255      <-> 192.168.0.2                2       684       0         0       2       684   169.884249000         3.0029
192.168.0.10         <-> 108.61.181.39              1        90       1        90       2       180   159.329271000         0.0213
192.168.0.10         <-> 133.242.147.113            1        90       1        90       2       180   150.391712000         0.0713
192.168.0.20         <-> 157.7.208.12               1        90       1        90       2       180    37.181334000         0.0641
192.168.0.10         <-> 117.102.176.202            1        90       1        90       2       180    17.086654000         0.0208
224.0.0.22           <-> 192.168.0.5                2       120       0         0       2       120    16.383256000         2.0476
224.0.0.251          <-> 192.168.0.5                2       224       0         0       2       224    15.461278000         1.0240
================================================================================

7.2.2 TCPのconversation(conv,tcp)

[root@server tshark]# tshark -r test.cap -z conv,tcp -q
Running as user "root" and group "root". This could be dangerous.
================================================================================
TCP Conversations
Filter:<No Filter>
                                               |       <-      | |       ->      | |     Total     |    Relative    |   Duration   |
                                               | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |      Start     |              |
192.168.0.10:41290   <-> 23.37.144.244:http         4       630       6       484      10      1114    46.780471000         0.0654
192.168.0.10:44222   <-> 93.184.216.34:http         4       571       6       480      10      1051    15.564340000         0.3932

7.2.3 TCPのconversation(conv,tcp) その2

複数のTCP conversationから、IPアドレスを指定して、特定のTCPコネクションだけを抽出します。

[root@server tshark]# tshark -r test.cap -z conv,tcp,ip.dst==23.37.144.244 -q
Running as user "root" and group "root". This could be dangerous.
================================================================================
TCP Conversations
Filter:ip.dst==23.37.144.244
                                               |       <-      | |       ->      | |     Total     |    Relative    |   Duration   |
                                               | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |      Start     |              |
192.168.0.10:41290   <-> 23.37.144.244:http         0         0       6       484       6       484    46.780471000         0.0654
================================================================================

7.3 ICMPの統計情報を表示する方法

ICMP echo request/replyメッセージ数、ロスト数、往復の最少時間、最大時間等を表示する。

==========================================================================
[root@server tshark]# tshark -r test.cap -z icmp,srt -q
Running as user "root" and group "root". This could be dangerous.

==========================================================================
ICMP Service Response Time (SRT) Statistics (all times in ms):
Filter: <none>

Requests  Replies   Lost      % Loss
19        19        0           0.0%

Minimum   Maximum   Mean      Median    SDeviation     Min Frame Max Frame
1.423     8.059     3.214     2.428     1.853          28        51
==========================================================================

8 csvファイルに保存する方法

[root@server tshark]# tshark -r test.cap -T fields -E header=y -E separator=',' -e "frame.number" -e "frame.time_relative" -e "ip.src" -e "ip.dst" > Test1.csv
[root@server tshark]# ls Test1.csv
Test1.csv

9 リアルタイムにパケットを表示する方法

書式は以下のようになります。
#tshark -i <インタフェース> -Y <絞り込みの条件> -n
-i:インタフェースを指定する。
絞り込み条件:3で使ったものを使う。
-n:文字列ではなく数値で表示する。

9.1 指定できるインタフェースの表示方法(-D)

[root@server ~]# tshark -D
1. eth0
2. nflog
3. nfqueue
4. usbmon1
5. usbmon2
6. any
7. lo (Loopback)

9.2 TCPパケットの絞り込み方

9.2.1 宛先ポート番号で絞り込む方法(tcp.dstport)

宛先ポート番号が80番のパケットだけを表示する。
[root@server ~]# tshark -i eth0 -Y 'tcp.dstport==80' -n

もう1つターミナルを開く。CentOSのISOイメージをダウンロードする。
[root@server ~]# wget http://ftp.iij.ad.jp/pub/linux/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso

宛先ポート番号が80番のパケットだけが表示されていることがわかる。
[root@server ~]# tshark -i eth0 -Y 'tcp.dstport==80' -n
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
 12 1.626019384 192.168.0.100 -> 202.232.140.70 TCP 74 54148 > 80 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=337602 TSecr=0 WS=128
 15 1.654961371 192.168.0.100 -> 202.232.140.70 TCP 66 54148 > 80 [ACK] Seq=1 Ack=1 Win=29312 Len=0 TSval=337631 TSecr=3147676588
 16 1.655369504 192.168.0.100 -> 202.232.140.70 HTTP 236 GET /pub/linux/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso HTTP/1.1
 21 1.688837506 192.168.0.100 -> 202.232.140.70 TCP 66 54148 > 80 [ACK] Seq=171 Ack=1449 Win=32128 Len=0 TSval=337665 TSecr=3147676619
-以下、略-

9.2.2 SYNフラグで絞り込む方法

下記環境で、クライアントからサーバにTCPコネクションを確立します。
このとき、サーバのtsharkコマンドでSYNパケットだけを表示するようにしてみます。

環境
                  192.168.3.0/24
  client ------------------------------------ server
      .50                                   .20

サーバでtsharkコマンドを実行します。
SYNフラグのみ立ったパケットを受信するとログを出力するようにしてみます。

サーバ側
[root@server ~]# tshark -i eth0 -n -Y 'tcp.flags.syn==1 and tcp.flags.ack==0'

もう1つサーバ側でターミナルをオープンします。
なお、ncコマンドの使い方は、ここ(ncコマンドの使い方)を参照してください。

サーバ側
[root@server ~]# nc -l 11111

クライアントからサーバにTCPコネクションを確立します。

クライアント側
[root@client ~]# nc server 11111

サーバがクライアントからのSYNパケットを受信すると、下記ログが出力されます。

サーバ側
[root@server ~]# tshark -i eth0 -n -Y 'tcp.flags.syn==1 and tcp.flags.ack==0'
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
  8 2.633574213 192.168.3.50 -> 192.168.3.20 TCP 74 49642 > 11111 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=2223917 TSecr=0 WS=128

9.2.3 SYN+ACKフラグで絞り込む方法

サーバでtsharkコマンドを実行します。
SYN+ACKフラグのパケットを送信するとログを出力するようにしてみます。

サーバ側
[root@server ~]# tshark -i eth0 -Y 'tcp.flags.syn==1 and tcp.flags.ack==1' -n

もう1つサーバ側でターミナルをオープンします。
なお、ncコマンドの使い方は、ここ(ncコマンドの使い方)を参照してください。

サーバ側
[root@server ~]# nc -l 11111

クライアントからサーバにTCPコネクションを確立します。

クライアント側
[root@client ~]# nc server 11111

サーバがクライアントにSYN+ACKパケットを送信すると、下記ログが出力されます。

サーバ側
[root@server ~]# tshark -i eth0 -Y 'tcp.flags.syn==1 and tcp.flags.ack==1' -n
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
 38 3.764208995 192.168.3.20 -> 192.168.3.50 TCP 74 11111 > 49650 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0 MSS=1460 SACK_PERM=1 TSval=3258103 TSecr=3172723 WS=128

9.3 ARPパケットの絞り込み方

9.3.1 ARPのオペレーションコードで絞り込む方法

ARPの「オペレーションコード」とはARPヘッダに定義されているフィールドです。
ARP要求の場合は1,ARP応答の場合は2が設定されています。

環境
                  192.168.3.0/24
  client ------------------------------------ server
      .50                                   .20

サーバでtsharkコマンドを実行します。
ARP要求(opcode=1)パケットを受信するとログを出力するようにしてみます。

サーバ側
[root@server ~]# tshark -i eth0 -n -Y 'arp.opcode==1'

クライアントからサーバに対するARP要求パケットを送信してみます。
なお、arpingコマンドの使い方は、ここ(arpingコマンドの使い方)を参照してください。

クライアント側
[root@client ~]# arping -c 1 -I eth0 192.168.3.20

サーバがクライアントからARP要求パケットを受信すると、下記ログが出力されます。

サーバ側
[root@server ~]# tshark -i eth0 -n -Y 'arp.opcode==1'
  7 1.279187210 00:0c:29:a8:bf:66 -> ff:ff:ff:ff:ff:ff ARP 60 Who has 192.168.3.20?  Tell 192.168.3.50

9.3.2 ARP要求の送信元で絞り込む方法

サーバでtsharkコマンドを実行します。
ARP要求(opcode=1)の条件に加え、ARP要求の送信元IPを指定してみます。

サーバ側
[root@server ~]# tshark -i eth0 -n -Y 'arp.opcode==1 and arp.src.proto_ipv4==192.168.3.50'

クライアントからサーバに対するARP要求パケットを送信してみます。

クライアント側
[root@client ~]# arping -c 1 -I eth0 192.168.3.20

サーバが192.168.3.20のクライアントからARP要求パケットを受信すると、下記ログが出力されます。
他の送信元IPの場合、下記ログは出力されません。

サーバ側
[root@server ~]# tshark -i eth0 -n -Y 'arp.opcode==1 and arp.src.proto_ipv4==192.168.3.50'
221 1.655905064 00:0c:29:a8:bf:66 -> ff:ff:ff:ff:ff:ff ARP 60 Who has 192.168.3.20?  Tell 192.168.3.50

9.4 ICMPパケットの絞り込み方

9.4.1 echo requestで絞り込む方法(icmp.type==8)

ICMP echo requestパケットだけを表示してみます。

サーバ側(ターミナル1)
[root@server ~]# tshark -i eth0 -Y 'icmp.type==8' -n

もう1つターミナルを開く。デフォルトGWに対してpingを実行する。

サーバ側(ターミナル2)
[root@server ~]# ping 192.168.0.1

ICMP echo requestだけが表示されていることがわかる。

サーバ側(ターミナル1)
[root@server ~]# tshark -i eth0 -Y 'icmp.type==8' -n
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
130 11.814827925 192.168.0.100 -> 192.168.0.1  ICMP 98 Echo (ping) request  id=0x03af, seq=1/256, ttl=64
139 12.817488641 192.168.0.100 -> 192.168.0.1  ICMP 98 Echo (ping) request  id=0x03af, seq=2/512, ttl=64
146 13.821235485 192.168.0.100 -> 192.168.0.1  ICMP 98 Echo (ping) request  id=0x03af, seq=3/768, ttl=64
-以下、略-

9.4.2 echo replyで絞り込む方法(icmp.type==0)

ICMP echo replyパケットだけを表示してみます。

サーバ側
[root@server ~]# tshark -i eth0 -Y  'icmp.type==0'

サーバに対してpingを実行してみます。

クライアント側
[root@client ~]# ping -c 1 192.168.3.20

ICMP echo replyパケットだけが表示されていることがわかります。

サーバ側
[root@server ~]# tshark -i eth0 -Y  'icmp.type==0'
-中略-
2833 82.760903039 192.168.3.20 -> 192.168.3.50 ICMP 98 Echo (ping) reply    id=0x065a, seq=1/256, ttl=64 (request in 2832)

9.4.3 echo request/echo replyを表示する方法

ICMP echo request(type==8)/echo reply(type==0)パケットを表示してみます。

サーバ側
[root@server ~]# tshark -i eth0 -Y  'icmp.type==0 or icmp.type==8'

pingを実行してみます。

クライアント側
[root@client ~]# ping -c 1 192.168.3.20

ICMP echo request/echo replyパケットが表示されていることがわかります。

サーバ側
[root@server ~]# tshark -i eth0 -Y  'icmp.type==0 or icmp.type==8'
-中略-
 13 1.041786097 192.168.3.50 -> 192.168.3.20 ICMP 98 Echo (ping) request  id=0x065c, seq=1/256, ttl=64
 14 1.041845873 192.168.3.20 -> 192.168.3.50 ICMP 98 Echo (ping) reply    id=0x065c, seq=1/256, ttl=64 (request in 13)

9.5 DNSパケットの絞り込み方

[root@server ~]# tshark -i eth0 -Y 'udp.port==53' -n

もう1つターミナルをオープンする。NTPサーバのIPアドレスを調べる。
[root@server ~]# dig ntp.nict.jp +short
133.243.238.164
133.243.238.163
133.243.238.244
133.243.238.243

DNSサーバへの問い合わせ、応答のパケットが採取できたことがわかる。
[root@server ~]# tshark -i eth0 -Y 'udp.port==53' -n
-中略-
 23 26.712238181 192.168.0.100 -> 192.168.3.1  DNS 82 Standard query 0xf9d2  A ntp.nict.jp
 24 26.722533269  192.168.3.1 -> 192.168.0.100 DNS 249 Standard query response 0xf9d2  A 133.243.238.164 A 133.243.238.163 A 133.243.238.244 A 133.243.238.243

9.6 時刻を表示する方法(-t)

ルータにpingを実行しながら、各種時刻を表示してみました。

ルータにpingを実行する
[root@server ~]# ip r
default via 192.168.3.1 dev eth1
(以下、略)

[root@server ~]# ping -c 1 192.168.3.1

9.6.1 現在時刻を表示する方法(a)

[root@server ~]# tshark -i eth0 -Y 'icmp' -n -t a
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
 12 19:42:34.521834911 192.168.3.20 -> 192.168.3.1  ICMP 98 Echo (ping) request  id=0x1710, seq=1/256, ttl=64
 15 19:42:34.522788745  192.168.3.1 -> 192.168.3.20 ICMP 98 Echo (ping) reply    id=0x1710, seq=1/256, ttl=128 (request in 12)

9.6.2 UTC時刻を表示する方法(u)

[root@server ~]# tshark -i eth0 -Y 'icmp' -n -t u
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
 14 10:44:23.523495840 192.168.3.20 -> 192.168.3.1  ICMP 98 Echo (ping) request  id=0x174c, seq=1/256, ttl=64
 17 10:44:23.524339122  192.168.3.1 -> 192.168.3.20 ICMP 98 Echo (ping) reply    id=0x174c, seq=1/256, ttl=128 (request in 14)

9.6.3 エポックタイムを表示する方法(e)

[root@server ~]# tshark -i eth0 -Y 'icmp' -n -t e
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
 35 1548413137.106566109 192.168.3.20 -> 192.168.3.1  ICMP 98 Echo (ping) request  id=0x176b, seq=1/256, ttl=64
 38 1548413137.107226720  192.168.3.1 -> 192.168.3.20 ICMP 98 Echo (ping) reply    id=0x176b, seq=1/256, ttl=128 (request in 35)

9.7 特定のフィールドを表示する方法(-T fields -e)

9.7.1 シーケンス番号、IPアドレス、TCPポート番号/シーケンスを表示する方法

ISOファイルをダウンロードしているときの、フレーム番号(frame.number)、
IPアドレス(ip.addr)、TCPのポート番号(tcp.port)、シーケンス番号(tcp.seq)を表示してみます。

理研からisoファイルをダウンロードする。
[root@server ~]# wget http://ftp.riken.jp/Linux/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso

HTTPのほかsshのやりとりも確認できます。

実行結果
[root@server ~]# tshark -i eth0 -T fields -e frame.number -e ip.addr -e tcp.port -e tcp.seq
-中略-
18      192.168.3.4,134.160.38.1        37616,80        0
19      192.168.3.20,192.168.3.3        22,50323        249
20      192.168.3.3,192.168.3.20        50019,22        1
21      134.160.38.1,192.168.3.4        80,37616        0
-以下、略-

9.7.2 条件を絞り込む方法(-Y)

9.7.1では、HTTP以外の通信もキャプチャされてしまいました。
ここでは、HTTPに絞って、HTTPのフレーム番号、IPアドレス、ポート番号、シーケンス番号を
表示してみます。

理研からisoファイルをダウンロードする。
[root@server ~]# wget http://ftp.riken.jp/Linux/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso

-Yオプションを使って、キャプチャするパケットをHTTPだけに絞り込みます。
そして、その時のHTTPパケットのフレーム番号(frame.number)、IPアドレス(ip.addr)、
TCPのポート番号(tcp.port)、シーケンス番号(tcp.seq)を表示してみます。

実行結果
[root@server ~]# tshark -i eth0 -Y 'tcp.port==80' -T fields -e frame.number -e ip.addr -e tcp.port -e tcp.seq
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
1       134.160.38.1,192.168.3.4        80,37620        1
2       192.168.3.4,134.160.38.1        37620,80        1
3       134.160.38.1,192.168.3.4        80,37620        1449
4       192.168.3.4,134.160.38.1        37620,80        1
5       134.160.38.1,192.168.3.4        80,37620        2897
6       192.168.3.4,134.160.38.1        37620,80        1
7       134.160.38.1,192.168.3.4        80,37620        4345
8       192.168.3.4,134.160.38.1        37620,80        1
12      134.160.38.1,192.168.3.4        80,37620        5793
-以下、略-

10 NetLinkを流れるパケットを表示する方法

NetLinkは、カーネルとユーザー空間のプロセス間で情報をやりとりするために用いられるインタフェースです。

ターミナル1(nlmonモジュールのインストール,デバイスの作成)
nlmonモジュールをインストールする。
[root@server ~]# lsmod |grep nlmon
[root@server ~]# modprobe nlmon
[root@server ~]# lsmod |grep nlmon
nlmon                  12924  0

nlmonデバイスを作成する。
[root@server ~]# ip link add nlmon0 type nlmon
[root@server ~]# ip link set nlmon0 up
[root@server ~]# ip link show dev nlmon0
5: nlmon0: <NOARP,UP,LOWER_UP> mtu 3776 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/netlink
ターミナル1(nlmon0デバイスでパケットのキャプチャ)
[root@server ~]# tshark -i nlmon0
Running as user "root" and group "root". This could be dangerous.
Capturing on 'nlmon0'

ipコマンドを実行する。

ターミナル2(Netlinkを使うコマンドの実行)
[root@server ~]# ip link show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:a8:bf:66 brd ff:ff:ff:ff:ff:ff

ipコマンドを実行すると、NetLinkを流れるパケットが確認できます。

ターミナル1(nlmon0デバイスでパケットのキャプチャ)
[root@server ~]# tshark -i nlmon0
Running as user "root" and group "root". This could be dangerous.
Capturing on 'nlmon0'
  1 0.000000000              ->              UNKNOWN 68 WTAP_ENCAP = 0
  2 0.000441676              ->              UNKNOWN 1216 WTAP_ENCAP = 0

-Vオプションを指定して、NetLinkメッセージの詳細を表示してみます。

詳細表示
[root@server ~]# tshark -i nlmon0 -V
Running as user "root" and group "root". This could be dangerous.
Capturing on 'nlmon0'
Frame 1: 68 bytes on wire (544 bits), 68 bytes captured (544 bits) on interface 0
    Interface id: 0
    Encapsulation type: Unknown (0)
    Arrival Time: Jun 16, 2018 18:56:40.531477557 JST
    [Time shift for this packet: 0.000000000 seconds]
    Epoch Time: 1529143000.531477557 seconds
    [Time delta from previous captured frame: 0.000000000 seconds]
    [Time delta from previous displayed frame: 0.000000000 seconds]
    [Time since reference or first frame: 0.000000000 seconds]
    Frame Number: 1
    Frame Length: 68 bytes (544 bits)
    Capture Length: 68 bytes (544 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: data]
Data (68 bytes)

0000  00 04 03 38 00 00 00 00 00 00 00 00 00 00 00 00   ...8............
0010  34 00 00 00 02 00 00 00 00 00 00 00 de 09 00 00   4...............
0020  ed ff ff ff 20 00 00 00 10 00 05 00 00 00 00 00   .... ...........
0030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0040  00 00 00 00                                       ....
    Data: 000403380000000000000000000000003400000002000000...
    [Length: 68]
(以下、略)
後始末(nlmonデバイスの削除、モジュールのアンインストール)
[root@server ~]# ip link del nlmon0
[root@server ~]# rmmod nlmon
[root@server ~]# lsmod |grep nlmon
[root@server ~]#

11 キャプチャを自動で停止する方法(-a)

11.1 時間で指定する方法

指定した時間が経過すると、tsharkコマンドが終了します。
ここでは、キャプチャ時間を1秒に指定してみます。

[root@server ~]# tshark -i eth0 -a duration:1
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
  1 0.000000000  192.168.3.3 -> 192.168.3.20 TCP 60 61288 > ssh [ACK] Seq=1 Ack=1 Win=2052 Len=0
  2 0.522681566 192.168.3.20 -> 192.168.3.3  SSH 186 Encrypted response packet len=132
  3 0.563050317  192.168.3.3 -> 192.168.3.20 TCP 60 61288 > ssh [ACK] Seq=1 Ack=133 Win=2051 Len=0
  4 0.610871474 172.217.26.110 -> 192.168.3.3  UDP 85 Source port: https  Destination port: 60785
  5 0.620349465  192.168.3.3 -> 172.217.26.110 UDP 71 Source port: 60785  Destination port: https
  6 0.915996194 172.217.26.110 -> 192.168.3.3  UDP 81 Source port: https  Destination port: 60785
  7 0.924394674  192.168.3.3 -> 172.217.26.110 UDP 71 Source port: 60785  Destination port: https
7 packets captured

11.2 パケット数で指定する方法

指定したパケット数をキャプチャしたら、tsharkコマンドが終了します。
最初は、キャプチャするパケットを2個に指定してみます。

パケット数に2を指定した場合
[root@server ~]# tshark -i eth0 -c 2
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
  1 0.000000000  192.168.3.3 -> 192.168.3.20 TCP 60 61288 > ssh [ACK] Seq=1 Ack=1 Win=2052 Len=0
  2 0.518166344 192.168.3.20 -> 192.168.3.3  SSH 186 Encrypted response packet len=132
2 packets captured

次に、キャプチャするパケットを3個に指定してみます。

パケット数に3を指定した場合
[root@server ~]# tshark -i eth0 -c 3
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
  1 0.000000000  192.168.3.3 -> 192.168.3.20 TCP 60 61288 > ssh [ACK] Seq=1 Ack=1 Win=2049 Len=0
  2 0.011505583 172.217.26.110 -> 192.168.3.3  UDP 79 Source port: https  Destination port: 60785
  3 0.020168449  192.168.3.3 -> 172.217.26.110 UDP 71 Source port: 60785  Destination port: https
3 packets captured

11.3 キャプチャしたサイズで停止する方法

12 統計情報の出力方法(-z)

X 参考情報

Display Filter Reference
Wiresharkのフィルター
tcpdumpの使い方
Wireshark & Ethereal Network Protocol Analyzer Toolkit
tsharkを用いたネットワークトラフィックの内訳の調査
Tsharkメモ
tsharkでデータをcsvに出力する際にタイトル行を追加する方法

Network forensics with tshark
Networking/Computing Tips/Tricks

Instant Traffic Analysis with Tshark How-to
pcapファイルから特定のHTTPRequestとそのResponseを抜き出す
tsharkを用いたネットワークトラフィックの内訳の調査

シェルで2つの時刻の引き算で時間を求める方
シェル】外部ファイルを配列に読み込んで一行ずつ処理する方法
Bashでの数の取り扱いについて

Y メモ

[root@server ~]# cat .bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias bc="bc -l"

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

[root@server ~]# cat tdiff.sh
#!/usr/bin/bash

epoch=(`cat "$1"`)

for ((i=0; i < ${#epoch[@]}; i=i+2))
do
  echo ${epoch[$i+1]} - ${epoch[$i]} = $(echo ${epoch[$i+1]}-${epoch[$i]}|bc)
done

[root@server ~]# cat tt.sh
#!/usr/bin/bash

epoch[0]=1000000000.806399000
epoch[1]=1000000001.805306000

echo ${epoch[1]} - ${epoch[0]} = $(echo ${epoch[1]}-${epoch[0]}|bc)
hana_shin
写真は淡路島SAから明石海峡大橋を撮影したものです('19夏撮影)。'20年夏も3年連続で四国、大阪に行く予定!毎回車でいってます。今から楽しみぃ~。次は、四国の四万十川に行ってみたいけど、ちょっと遠いかな?最近はネットワークに力を入れてます。保有国家資格:ネットワークスペシャリスト、オンライン情報処理技術者。メールは hana.shin.2018@gmail.com まで。
https://hana-shin.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした