2017-03-05 13 views
0

ループバックインターフェイスをサポートするnpcapドライバをインストールしました。私はそれをインストールしました。なぜなら、ループバックインターフェイスにパケットを読み込ませ、そこからそれらを読み取る必要があるからです。私は簡単に "pcap_next_ex"でループバックのパケットを読むことができますが、イーサネットインターフェイスでwinpcapで行うことができますが、パケットを "pcap_sendpacket" dosentでループバックする必要があり、関数は0(成功)を返します。pcap_sendpacket dosentは "Npcap Loopback Adapter"で動作します

私はパケットを見ることができますが、イーサネットインターフェイスでpcap_sendpacketを使用すると、wiresharkを開いてパケットを監視することでこれを確認しましたが、ループバックではそれらを注入しようとしたときに表示されません。どうして?

//The array which contains the data of the test package 

UCHAR packet[] = "\x.."; 

//loopback adapter is already opened here 

for (int i = 0; i < 100; i++) 
    printf("%d ", pcap_sendpacket(loopbackAdapter, packet, sizeof(packet))); 

私は、ループバックインターフェイスとdidntの仕事にこのコードを使用します(しかしpcap_sendpacketは常に成功を返した)、wiresharkのにパケットが表示されdidntのため、しかし、イーサネットで注入が成功したのインタフェース。

npcapはループバックパケットの検査をサポートしていますか?

ありがとうございます。

答えて

0

すべてのネットワークパケット(ループバックの場合もあります)には、送信パス(Tx)または受信パス(Rx)の方向があることを理解する必要があります。通常、パケットをNpcap Loopback Adapterに送信すると、実際にはWindows TCP/IPスタックのTxパスにパケットが送信されます。 Txパケットを送信するときは、通常、ローカルホストアプリケーション(またはプロトコル、ドライバなど)が応答するのを待ちます。

なぜあなたはinject packets to loopback interface and read them from itにしたいのですか?この部分のNpcapの低レベルロジックは、現在のセッション(pcap_t)がこのセッションが挿入するパケットを受信させないだけです。しかし、他のセッションでそれらを見ることができます。このためWiresharkはあなたが注入するパケットを見ることができます。

なぜこれを行うのか分かりません。他のアプリケーションがこれらのパケットに応答しないように思えます。しかし、回避策として、パケットをRxパスに注入することで、あなたが望むものを得ることができると思います。 Rxにパケットを送ることによって、これらのパケットが外部から受信されたとWindowsに信じさせることを意味します。私はそれを実装する方法を覚えていませんが、同じセッションではRxでこれらのパケットを見ることができるはずです。

Rx機能を非常にはっきりと文書化していません。リリースにはいくつかの説明があります:v0.05-r6v0.05-r7、ここでの例はhttps://github.com/hsluoyz/UserBridgeです。最新のNpcapでも動作するはずです。

+0

答えをありがとう、それは私に消化する時間がかかりました。まず、あなたはnpcapの開発者としての私の敬意をすべて持っています。私は自分の問題を解決しましたwireshark上のパケットを見ることができませんでした。なぜなら、彼らが働いていたパケットの先頭にこのバイトを置くと、 "null/loopback"ヘッダ(0x02000000)で始まらなかったからです。私はルータとのイーサネットインターフェイスでそれを行うのに問題があったので、私はループバックでプロキシサーバをやろうとしています。私はループバックをたくさん研究しなければなりません。 – KaxperdayTrolling

+0

メイト今、私はループバックに問題があります。私はローカルホストのサーバにイーサネットインタフェースからパケットを送ります。このパケットはipv4であり、イーサネットインタフェースのホストからのIPから192.168.1.145のようなものが来ています。そのようなIPソースから私のlocalhostサーバーに127.0.0.1では、私のサーバーのdosentは、SYN/ACKでそれらを無視する彼らは無視しますか?localhostはlocalhost IPソースからのパケットしか受信できませんか?はい、これは私の計画を台無しにしたので、私はNATのカムバックを行うためにIPを送信する必要があります – KaxperdayTrolling

+0

多分あなたは私をここで助けることができます:http://networkengineering.stackexchange.com/questions/39501/establish-tcp-connection -to-localhost-from-local-network-with-nat – KaxperdayTrolling

関連する問題