Github: https://github.com/secdev/scapy
スカッフィー
Scapyは強力なPythonベースのインタラクティブなパケット操作プログラムとライブラリです。
広範囲のプロトコルのパケットを偽造したり、デコードしたり、ワイヤで送信したり、キャプチャしたり、pcapファイルを使用して格納したり、読み取ったり、要求と応答を一致させることができます。 これは、動作するデフォルト値を使用して高速パケットプロトタイピングを可能にするように設計されています。
スキャン、トレースhping
、プロービング、単体テスト、攻撃やネットワーク検出( hping
、 nmap
、 arpspoof
、 arp-sk
、 arping
、 tcpdump
、 wireshark
、 p0f
などの85%を置き換えることができます)などのほとんどの古典的なタスクを簡単に処理できます。 また、無効なフレームの送信、独自の802.11フレームの注入、技術の組み合わせ(VLANホッピング+ ARPキャッシュポイズニング、WEP保護されたチャネルでのVoIPデコーディングなど)など、ほとんどの他のツールでは処理できない他の多くの特定のタスクでも、 ..)など
Scapyは、Python 2.7とPython 3(3.3から3.6)をサポートしています。 これはクロスプラットフォームを意図しており、さまざまなプラットフォーム(Linux、OSX、* BSD、Windows)で動作します。
ハンズオン
インタラクティブシェル
Scapyはネットワークと対話するための対話型シェルとして簡単に使用できます。 次の例は、ICMPエコー要求メッセージをgithub.com
に送信してから、返信元IPアドレスを表示する方法を示しています。
sudo ./run_scapy
Welcome to Scapy
>>> p = IP(dst="github.com")/ICMP()
>>> r = sr1(p)
Begin emission:
.Finished to send 1 packets.
*
Received 2 packets, got 1 answers, remaining 0 packets
>>> r[IP].src
'192.30.253.113'
Pythonモジュール
通常のPythonモジュールとしてScapyを使用するのは簡単です(たとえば、TCPポートが開いているかどうかを確認するなど)。 まず、次のコードをファイル名send_tcp_syn.py
保存しますsend_tcp_syn.py
from scapy.all import *
conf.verb = 0
p = IP(dst="github.com")/TCP()
r = sr1(p)
print(r.summary())
次に、次のコマンドを使用してスクリプトを起動します。
sudo python send_tcp_syn.py
IP / TCP 192.30.253.113:http > 192.168.46.10:ftp_data SA / Padding
リソース
Scapyから始めるには、ノートブックの実践とインタラクティブなチュートリアルをチェックする必要があります。 詳細は、インタラクティブセッション (いくつかの例が古いかもしれません)、あるいはHTTP / 2とTLSノートブックを使って遊んでください。
このドキュメントには、より高度な使用例と例が含まれています。
インストール
Scapyは、Linux上のPythonモジュールとオペレーティングシステムのようなBSDを使用せずに動作します。 Windowsでは、 ドキュメントに記載されているようにいくつかの必須の依存関係をインストールする必要があります 。
ほとんどのシステムで、Scapyを使用するのは次のコマンドを実行するのと同じくらい簡単です:
git clone https://github.com/secdev/scapy
cd scapy
./run_scapy
>>>
プロットなどのScapyのすべての機能を利用するには、 matplotlib
やcryptography
などのPythonモジュールをインストールすることが必要な場合があります。 マニュアルを参照し、インストール手順に従ってください。