yagisukeのWebなブログ

フロントエンドとサーバーサイドをさまようエンジニア

Wiresharkでパケットキャプチャしてみた

Wiresharkとは

TCP/IPで流れるデータを確認できる「パケットキャプチャ」ソフトの代表格。
Windows版, Mac版, Linux版それぞれあります。
ここではMac版を試します。
Wiresharkの公式サイト: https://www.wireshark.org/

Wiresharkをインストール

Wiresharkはhomebrewでインストールできるらしい。
参考: homebrewでwiresharkのQt版をインストール - Qiita

それではTerminalを開いて、下記コマンドをえいやっ。

$ brew install wireshark --with-qt

なんかwaringがでて--with-qtは非推奨だぜって怒られてます。
が、勝手に推奨されているものをinstallしてくれているので問題無し。 f:id:yagi_suke:20170311194901p:plain

古かったみたいです。最新は以下のようです。

$ brew install wireshark --with-qt5

それではWiresharkを起動してみます。

$ wireshark

….ありまっ。。No interface foundとでてきました。。 f:id:yagi_suke:20170311194924p:plain

先ほどのinstall時のログを見てみるとIf your list of available capture interfaces is empty と書いてあり、brew cask install wireshark-chmodbpfを実行してって。 f:id:yagi_suke:20170311203502p:plain

ということで、言われるがままに、えいやっ。

$ brew cask install wireshark-chmodbpf

そして再度Wiresharkを起動すると、
今度はインターフェイスリストが表示されました。 f:id:yagi_suke:20170311203435p:plain

上記を踏まえると、以下の手順でやるとスムーズですね。

$ brew install wireshark --with-qt5
$ brew cask install wireshark-chmodbpf



補足:

homebrewを入れていない人は
下記記事を参考にしてみて使えるようにしてみては。
参考: パッケージ管理システム Homebrew - Qiita

Wiresharkの使い方

Wiresharkを起動したら、「キャプチャ」メニューから「オプション」を選択。
f:id:yagi_suke:20170311211258p:plain インターネットとの通信をパケットキャプチャしたいので、
インターネットと繋がっているネットワークを選択して、開始! f:id:yagi_suke:20170311211313p:plain

UDPのパケットを見る

画面上部のFilterにudp.port==53といれると、
DNSのパケットに絞り込んで見れます。 f:id:yagi_suke:20170311211328p:plain

TCPのパケットを見る

TCPUDPと同様にFilterにtcp.port==80といれると、
TCPのパケットに絞り込んで見れます。

ただし、上記だけでは他のアプリの通信も拾ってしまうので
パブリックIPアドレスを絞り込み条件に加えます。

パブリックIPアドレスはTerminalからnslookupコマンドで確認できます。
こんな感じです。

$ nslookup leihauoli.com

すると、こんな感じで表示され、54.249.34.46がパブリックIPアドレスです。 f:id:yagi_suke:20170311211346p:plain

Filterにtcp.port==80 and ip.dst_host==54.249.34.46のように入力すれば
通信を見たいサイトのパケットを確認できます。 f:id:yagi_suke:20170311211409p:plain

上記imgのNo206 - 209は「SYN」「SYN+ACK」「ACK」の3ウェイハンドシェーク。
また、中央部にはGETコマンドが送信されていることもわかります。


ひっさしぶりの投稿でした。