LoginSignup
2
8

More than 5 years have passed since last update.

WindowsとPython3でのパケットキャプチャ

Last updated at Posted at 2017-01-07

Windows環境でパケットキャプチャするための環境について。
(Anacondaで)Python3系をインストールしていることは大前提です。そこから追加でインストールするものについて以下に示します。
私の環境は次の通りです。
・Win10 64bits
・Anaconda 3.5 conda update --all実行済み。

インストールするもの

WinPcap https://www.winpcap.org/

Wiresharkと一緒にインストールすれば楽。どうせWiresharkも使いますよね?登氏のWin10Pcapでもよいかも。http://www.win10pcap.org/ja/

winpcapy https://github.com/orweis/winpcapy

ちょっとかわいい感じの名前。pip install winpcapyでOK。なぜか、自分の環境ではうまくそのままでは動作しなかったので、__init__.pyfrom winpcapy import WinPcap, WinPcapDevices, WinPcapUtilsを、from . import winpcapyに書き換えました。ここらへん、なにがどうなっているのか、importの仕様を理解していないのでよくわかっていません。

とりあえず、とにかく、パケットキャプチャをWindowsでやろうとしたときに、Python3系だと、Winpcapyがよさそう。それ以外もいろいろ挑戦しましたがサンプルまで動いたのは、私の場合は、winpcapyだけでした。

importのところを変えているので、winpcapy.winpcapy.WinPcapDevicesみたいな感じになりますが、とりあえず動きます。

例を動かす前に

まずは、

>>> from winpcapy import WinPcapDevices
# Return a list of all the devices detected on the machine
>>> WinPcapDevices.list_devices()

でデバイス名を確認するとよいと思います。そうしないと、Ethernet、とか入れても例のプログラムが名前が違っていて、動かなかったりしますので。

scapy

winpcapyでキャプチャはできたのですが、解析しようとしたときに、どうやっていいのかわからなくなったので、高機能そうなscapyを入れることにしました。scapyの本家?は、Python2系にしか対応していないので、Python3に対応するように書き換えられた
scapy-python3 https://github.com/phaethon/scapy/
を利用します。

ただし、Win8以上では、__init__.pyget_windows_if_list()をちょっと書き換えないと動きません。これにハマりました。疲れた。scapyの概要は
ここ http://www.slideshare.net/takahoyo/scapy-53353876
を参照ください。

とりあえずは、以上です。

2
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
8