私は、TCPクライアントの側で、TCPフローのデータを傍受/変更できるようにしたいと考えています。 pcapの例は、tcpパケットヘッダ/ペイロードの解析方法を示しています。 しかし、私は、tcpクライアントがそれを読み込む前にパケットのペイロードを変更したい、あるいはパケットを完全にドロップしたいとします。 pcap capureでどうやったらいいですか?パケットデータの傍受と変更
0
A
答えて
0
libpcapまたはWinPcapでこれを行うことはできません。 libpcapはそれをサポートしていないOS機構の上に構築されています(これらの機構はパッシブパケット捕捉と低レベルのパケット捕捉と注入をサポートするために存在し、パケット入力と出力経路におけるパケット変更をサポートするものではありません)、WinPcapのドライバはそのようなOSのメカニズムです。
タッピングプログラムがネットワークスタックを通過するときにパケットを変更できるように、ネットワーキングスタックへのタッピングをサポートする何らかのメカニズムを、使用しているどのOSでも見つける必要があります。そのようなメカニズムは、一部のOSでは存在しないかもしれません。それが存在するOS上にあれば、おそらく非常にOSに依存しているでしょう。 (libpcapの使用方法もOSに依存しますが、アプリケーションとの違いをアプリケーションから隠すために、libpcapが一部存在します)。
5
上記のように、pcapで傍受/修正を行うことはできません。
- Linuxの:libnetfilter_queue + iptablesの
- MacOSの、 FreeBSDの:
- のWindowsをipfwが+ソケットをそらす:WinPkFilter(このためには、以下のOSに依存する技術の一つが必要商用)、WinDivert(LGPL)、または独自のNDIS IMまたはWFPコールアウトドライバを作成します。
(通常の開示:WinDivertは私のプロジェクトです)。
1
ScapyはPythonと組み合わせて使用すると非常に優れたツールです。
あなたは、特定のタスクを実行するためにscapyの上にアプリケーションを構築することができます。また、コマンドラインを介して
をパケットモニタリングや編集のすべてのソートを行うことができます。
関連する問題
- 1. ブラウザリクエストの傍受とサーバレスポンスの変更
- 2. レジストリの変更を傍受する
- 3. scapyでパケットデータを変更するには?
- 4. パケットデータをpcapy/impacketで変更する
- 5. 傍受
- 6. クラス内のクラスの属性の変更を傍受する - Python
- 7. Ninjectの傍受 - Ninject 3.0に移植する際の変更点
- 8. アンドロイドのスクリーン更新を傍受する
- 9. WebViewの傍受
- 10. Visual Studio - ソリューションとプロジェクトの作成時に傍受とパスを変更する
- 11. XMLHttpRequestを傍受してresponseTextを変更します
- 12. 着信SMSメッセージを傍受して変更する
- 13. 傍受ログメッセージslf4j
- 14. Autofac 2.6.1 AOP傍受
- 15. iPhone sdkコール傍受
- 16. ウィンドウを傍受するウィンドウを傍受する
- 17. ネームスペースレベルでのNinject傍受?
- 18. ユニティ - WCFサービスクラスの傍受?
- 19. メッセージを傍受するために既存のC#キーボードリスナーコードを変更します
- 20. WCFと傍受を伴うNinject(AOP用)
- 21. WebRTCとセキュリティ - 接続を傍受する?
- 22. Sitefinity、ページングイベントを傍受する
- 23. 傍受されたテキストメッセージandroid
- 24. エラーを傍受して
- 25. XHRを傍受する
- 26. 注射を傍受する
- 27. ユニティ傍受し、WCF RIAドメインサービス
- 28. C#JSON deserialization:デシリアライズを傍受し、オプションで結果を変更できますか?
- 29. 受信メッセージの場所/受信メッセージを傍受する
- 30. SDL_net UDPパケットデータ
あなたは、彼らがネットワークスタックを通過するタッププログラムがパケットを変更することができますように、ネットワークスタックを活用サポートし、使用しているものは何でもOSにいくつかのメカニズムを、見つける必要があります。 – user270398
ありがとう、私はまだ非常にはっきりしていません.. "scapy"や "nemesis"のようなフレームワークはほとんどないようです...彼らはパケットを "手作り"して "注入"できます。既存のパケットのペイロードを変更する方法や、既存の接続用のTCPパケットを挿入する方法を見つけることができます。あなたは "netfilter"がLinux/BSDでこのような仕組みを提供すると思いますか? – user270398
あなたがそれをサポートしていないので、それを見つけることができませんでした。 TCPに到達する前に受信したパケットをキャッチして変更したパケットをTCPに渡すのではなく、ネットワーク上でパケットを送信してパケットを「注入」します。 Netfilterは、Linux上であなたが望むことを可能にするかもしれません。 ipfirewallまたはPFはあなたが* BSDでそれをさせるかもしれません。 –