Pythonで試すARPスプーフィング

Pythonで試すARPスプーフィング


Pythonの勉強のためARPスプーフィングツールを作り検証したいと思います。

ARPスプーフィングはターゲットのarpテーブルを書きかえるテクニックでしたね。
仕組みについては以前c言語で実装した時にまとめました。



ソケット作成


今回はethernetからまるごとパケットを作成します。
そのためプロトコルファミリーにAF_PACKETを指定します。
作成したソケットとネットワークインターフェースをbindします。

パケット作成


ethernetパケットとarpパケットを作ります。
面倒な部分はmacアドレスをバイナリに変換する処理ですかね。

ポートスキャンの時と同様struct.packを使ってうまい具合にパケットを構築します。

ソースコードのすべて


面倒な処理はクラスに放り込んでしまいましょう。

spoofメソッドで一秒ごとに死ぬまでパケットを送信し続けます。

動作確認


クラスの使い方です。


単にターゲットのarpテーブルを書きかえるだけならこれだけでいいですが、
二台のマシンの通信を傍受したい場合二台ともarpテーブルを書きえかる必要があります。

最後に


Rustやc言語で実装した時よりもソースコード量を抑えることができました。
scapyを使えばさらに簡単に書くことができると思います。

コメントする