
ネットワークパケットおよびpcapファイルの作成・スニッフィング・操作・可視化を行うセキュリティツール。2015年にscapyからフォークされ、それ以降Python 3互換性を提供しています。
最新ニュースは @pkt_kamene をフォローしてください。kamene 用に更新されたオリジナルドキュメント
私たちは名称移行(github リポジトリ、pip パッケージ名、python パッケージ名)を実施しました。これに続いて新機能が追加される予定です。さらなる更新情報は後日公開されます。
Kamene は Network Security Toolkit リリース 28 に含まれています。旧名称でリリース 22 から NST に含まれていました。
これは scapy(http://www.secdev.org)のフォークであり、元々は python3 互換性を実装するために開発されました。2015 年から python3 で本番運用されてきました(secdev/scapy が python3 互換性を実装したのは 2018 年です)。混乱を減らすため、このフォークは 2018 年に kamene に改名されました。
以下の機能は kamene で最初に実装され、その一部は現在 scapy にも再実装されている可能性があります:
ソースツリーから python3 setup.py install でインストールするか( で取得)、最新の公開バージョンには を使用します。
git clone https://github.com/phaethon/kamene.gitpip3 install kameneLinux 以外のすべての OS では、パケットの送受信のために libpcap がインストールされている必要があります(python モジュールではなく C ライブラリのみ)。Windows では winpcap ドライバが必要です。一部の OS や構成では libdnet のインストールにより体験が向上する場合があります(MacOS の場合:brew install libdnet)。Windows では libdnet は不要です。一部のあまり一般的でない構成では netifaces により体験が向上する場合があります。
パケットをバイトに変換するときは str() ではなく bytes() を使用してください。ほとんどの引数は str 値ではなく bytes 値を期待しますが、人間の入力に自然に適したもの(例:ドメイン名)は例外です。
kamene コマンドを実行するか、インタラクティブな python シェル(python または ipython)やコードからライブラリとして kamene をインポートして使用できます。
インタラクティブシェルで試せる簡単な例:
from kamene.all import *
p = IP(dst = 'www.somesite.ex') / TCP(dport = 80) / Raw(b'Some raw bytes')
# パケット内容をバイトで確認するには str(p) ではなく bytes(p) を使用
sr1(p)
'www.somesite.ex' が文字列、b'Some raw bytes' がバイトであることに注意してください。ドメイン名は通常の人間の入力なので文字列、生のパケット内容はバイトデータです。使い始めると、見た目よりも簡単に感じられるでしょう。
サポートされているすべてのレイヤーを一覧表示するには ls() を使用します。すべてのコマンドを一覧表示するには lsc() を使用します。
現在、Linux、Darwin、Unix などで動作します。テストには Ubuntu、MacOS、FreeBSD、Windows 10 で python 3.4+ を使用しています。
scapy-http モジュール と互換性があります。
rdpcap は pcap ファイル全体をメモリに読み込みます。巨大なファイルを処理し、パケットごとに何らかの操作を実行したり統計を計算したりする必要がある場合は、イテレータインターフェースを持つ PcapReader を使用できます。
with PcapReader('filename.pcap') as pcap_reader:
for pkt in pcap_reader:
#パケットに対して何かを行う