Edited at

tsharkコマンドの使い方


0 tsharkとは?

WiresharkのCLI(Command Line Interface)版です。

条件を絞り込んでパケットを特定するには、Wiresharkよりtsharkの方が

使い勝手が良いと思いました。


1 環境

VMware Workstation 12 Player上のゲストマシンを使っています。

[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個です。
[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)を抽出する方法

ここで使うhping3コマンドの使い方はここを参照ください。


テスト用pcapファイル作成環境

s01でhping3を実行する。s01,adminはホスト名です。

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)