クライアントとサーバの間の通信の途中で管理されていると仮定します(ホットスポットを開いてクライアントが私のマシン)。MITMとしてscapyを使ってパケットを即座に変更する
他のサービスとの通信を中断することなくクライアントが送受信するパケットを変更するにはどうすればよいですか?クライアントが送信し、受信しようとしている(スクリプトを転送する前に)すべてのパケットをスクリプトでルーティングする方法が必要です。
これを達成するための正しい方向は、iptables
であると思いますが、どのような議論がこの仕事をするのに適しているのか正確にはわかりません。 - 私は、クライアントが送受信するすべてのものを見ることができます
hotspotd start #a script that runs dnsmasq as both a DNS and DHCP server, configures and starts a hotspot
iptables -P FORWARD ACCEPT
iptables --append FORWARD --in-interface wlan0 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
#wlan0 is the interface on which the hotspot is.
#eth0 is the interface that is connected to the internet
さて、これは完全に受動的なMITMの作品:私はすでに、次の単純なスクリプトを持っています。しかし、今私はそれをステップアップし、私が送受信するすべてのメッセージをリダイレクトしたいと思います。
私の最終的な目的は、私は次のスクリプトを実行することができるレベルに到達することです:私は、すべてのクライアントをパケットリダイレクト達成するにはどうすればよい
from scapy.all import *
from scapy_http.http import *
def callback(pkt):
#Process the packet here, see source and destination addresses, ports, data
send(pkt)
sniff(filter='port 666', prn=callback) #Assuming all relevant packets are redirected to port 666
が送信している-程度ツー受けますか?
と思われます。しかし、どのパケットがデバイスからで、どのパケットが私のマシンからであるのかをどのように認識しますか? –
これにはiptablesまたはあなたのアプリを使うことができます。 1. IPテーブルを使用すると、パケットをソースでフィルタリングし、関連するものだけをnfqueueに送信できます(または、ソースに応じて2つの別々のNFQUEUESに送信できます)。 2.アプリケーションはNFQUEUEからパケット全体を受信するため、受信した各パケットのIPアドレスを確認するだけです。 – Malt
ですが、それは後の段階で決定されていませんか?私はパケットがローカルIPアドレスから供給されていることを意味します。彼らは私の外部のIPに到着し、そのような偉大な作品ですか? –