問題タブ [arp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - Connect() ios から同じサブネット内の ios デバイスへ
私は、ある iPhone (または iPod) から別の iPhone (または iPod) への標準の TCP 接続を確立する必要がある IOS アプリを開発しています。接続は、シミュレーターとデバイス上のアプリ間、および 2 つのシミュレーター間でうまく機能します。
アプリケーションは posix connect() を使用しており、他のモジュールは純粋な C であるため、この方法に固執する必要があります。
connect() アプリケーション ブロックを呼び出すと、タイムアウト エラーが返されます。通信はLAN内のwifi経由です
トラフィックを盗聴したところ、シミュレーターに接続した後、デバイスが ARP を送信し、応答後、標準の TCP ハンドシェイクが進行し、セッションが確立されることがわかりました。
iPhone の場合と同じケース<>別の iPhone が応答しないため、ARP 要求の後に iPhone が停止します。さらに、iOS は gratuitous ARP のみを送信します (MAC IP ペアであることを通知します)。MAC の ARP テーブルには iPhone レコードがあり、別の iPhone では機能しないため、このリクエストを処理しているようです。
bonjour サービスを試してみましたが、シミュレータ <> デバイスでしか動作しません。
私の質問: そのような通信を許可する方法はありますか? 私のiPhoneだけに問題がある可能性はありますか?OSにarpsの応答を送信するように指示する明示的な方法はありますか、それともトラフィックios<>ios通信に対して何らかの方法でブロックされていますか。
networking - 2 台のマシンのネットワークでの ARP ヘッダー データ
ネットワークケーブルを介して2台のマシンを接続しました。Wireshark 経由で ARP 要求データを取得する必要があります。他のマシンの IP に ping を実行すると、Wireshark で ARP 要求を受け取ります。しかし、それはメッセージをブロードキャストしていません。ping された IP アドレスを直接ターゲットにします。マシンが 2 台しかない LAN では、ブロードキャストを行う必要はないと思います。私は正しいですか?誰でもこれを説明できますか?
c# - システム コール GetIpNetTable からの物理アドレスが (6 バイトではなく) 8 バイトになるのはなぜですか?
私の最新のプロジェクトでは、.NET を使用して C# から Windows ARP テーブルにアクセスするために GetIpNetTable を使用しています。
MAC アドレスを見ると、エントリの最後の 2 バイト (7 と 8) が変化し続けていることに気付きました。MAC アドレスは通常 6 バイトしかないため、この 2 バイトには何が含まれているのだろうか...
http://msdn.microsoft.com/en-us/library/cc704859%28v=prot.10%29.aspxを参照してください。
networking - イーサネットヘッダーから抽出できる場合、返信/要求ARPパケットでのMACアドレスの使用は何ですか
イーサネットヘッダーから抽出できるのに、なぜARPパケットにMACアドレスが必要なのか混乱しています。IP アドレスとその他のフィールドはそのままにして、MAC アドレスを削除します。それらをイーサネットから抽出できます。AM 私は自分の考えに何かが欠けています。
ありがとう。
networking - arp ポイズニング、MAC スプーフィング、IP スプーフィング用のソフトウェア
最近、Ccna コース (Cisco) を開始しましたが、ホーム ネットワークでこれらのハックのいくつかを試してみたいと思っています。
誰かがこれのためのクールなソフトウェアを教えてくれますか?
また、これをプログラムで行う方法も知りたいので、チュートリアルがあれば教えてください:)
どうもありがとう!
編集:Windows用の何か?
c - Filter packets in network stack while sniffing packets on Linux?
I have a question for the Low-level networking/Linux gurus,
I have to build two tools for a security project at my university. The first tool is an ARP Poisonning attacker which will poison the ARP cache from a remote host in order to retrieve the data he is sending to another host. I wrote this tool in C using RAW sockets and it works perfectly, i am able to intercept the data transmitted from a host A to a host B and from the host B back to the host A.
The problem comes when writing the second tool which is a sniffer whose purpose is to read/edit/drop packets coming from host A or host B. I imagined a system where when I spot a packet coming from one of those hosts, my program will ask me if I want to let this packet pass, if I want to modify it or if I simply want to drop it. I activated the IP forwarding in linux using
and i am able to read all the data travelling between the two hosts. But i don't know how to edit/drop those packets since it is the role of linux's network stack to manage the input and the output of the packets coming from my network interface. I'm acting only as a passive attacker if you want.
My first idea was to disable the ip forwarding and manage the routing of the packets myself. But when I disable the ip forwarding, I am simply not able to get any data coming from A or B, this is because the linux's network stack drops automatically the packets in kernel mode which IP address is not destined to my computer.
I tried then to activate the promiscuous mode, but this was unecessary since this mode only operates on the physical layer (sees if the target MAC address in the Ethernet received packet matches the MAC address on the local interface). So basically, promiscuous mode helps us to avoid the physical filter of the linux's stack but not the logical one (the target IP address in the packet I am receiving is B's IP address and not mine, so linux's network stack simply drops the packet).
So my question is, how can I manage to edit the packets I am receiving and send them back or simply dropping them if I want to. I know this is a tricky question, I have made some research to find the solution on my own but I didn't find a satisfying answer.
I know there is a solution with iptables, we can ask him to let pass some packets from a certain IP address, but I don't want a solution involving a third-party tool, I want to encapsulate everything in my program.
For information, the development environment is Linux/Ubuntu Kernel 3.0.0-16, and everything is made using the C language.
.net - ARP キャッシュを無視して、IP から ping / MAC アドレスを取得する
さまざまな組み込みデバイスの構成ソフトウェアの場合、IP アドレスでデバイスを見つける必要があります。特定の IPv4 アドレスに対して、次のことを行う必要があります。
- MACアドレスを見つけます(MACアドレスはフィルタリングできるため)
- デバイスが到達可能かどうかを調べます。つまり、ping を実行します。
これを行う最善の方法が何であるかはわかりません。最初は、呼び出しだけを試みましたSendARP
が、非常にうまく機能しましたが、IP アドレスが既にそこにある場合はキャッシュのみを使用し、これを回避する方法はないようです (キャッシュ全体をフラッシュする以外に、特権操作)。これは、2 番目のステップを実行してデバイスに ping を実行する必要があることを意味します (最初にデバイスに ping を実行し、次にSendARP
到達可能かどうかを呼び出す必要があると思います) が、デバイスが到達可能である場合、それは何らかのステップが多すぎるように思われます。または、ping が成功した場合、正しいアドレスは既に ARP キャッシュに存在しますか? さまざまなデバイスが別のネットワークに接続されているため、IP アドレスは対応する MAC アドレスを比較的頻繁に変更する可能性があるため、実際の ARP 要求を強制する必要があると思います。
私が考えることができる別の方法は、ResolveNeighbor
/を呼び出すことResolveIpNetEntry2
です。少なくとも後者のドキュメントが必要なようです (この IP アドレスの ARP キャッシュをクリアし、実際の要求を送信します) が、Vista 以降のみです。XP では、 を呼び出す必要がありますResolveNeighbor
。これはより単純ですが、ドキュメント化されていません。これには、適切な関数のチェックが含まれます (または単に を呼び出しResolveNeighbor
、失敗した場合は、Vista 以降で行うように文書化されているので、 を呼び出しますResolveIpNetEntry2
)。
最善の方法が何であるか、または何かが欠けているかどうかはわかりません。あなたは何をお勧めします?ある場合は、純粋な.NETソリューションも使用することに注意してください;)
更新:
文書化されているにもかかわらず、ResolveNeighbor は Windows XP には存在しないようです。少なくとも IPhlpapi.dll には存在しません。XPではその機能が利用できないということですか?
これを明確にするために、私はデバイスも展開プロセスも設計していません。この問題については、
- すべてのデバイスにはすでに IP アドレスがあり、
- コンピュータは同じサブネットにありますが、必ずしもネットワークに属しているとは限りません (つまり、技術者のポータブル コンピュータです)。
- ツールの起動時に IP アドレスが認識されます。つまり、ユーザーは IP アドレスを入力するか、構成ファイルから読み取ることができます。
- おそらくツールを再起動しなくても、同じコンピューターがほんの数秒前に使用され、まったく同じ IP アドレスを持つまったく異なるネットワーク (たとえば、同じレイアウトの別の建物) に接続されました。
これは、建物 A に MAC アドレス A である IP 192.168.0.100 があり、コンピューターを建物 B に接続する可能性があることを意味します。建物 B にも IP 192.168.0.100 がありますが、今回は MAC アドレス B です。ユーザーは「接続192.168.0.100" に接続し、192.168.0.100 が到達可能であるだけでなく、実際には MAC A ではなく MAC B であることを確認する必要があります。これに代わるものではないようです。
他にどうすればこの点を理解できるかわかりません。重要なのは、デバイスを検出またはインストールする方法ではありません。
duplicates - 同じ MAC アドレスと同じ IP アドレスを持つコンピュータも検出する
LAN 上で、同じ MAC アドレスと同じ IP アドレス (DHCP によって与えられる) を持つコンピュータを検出するにはどうすればよいですか?
私の LAN では、VM のクローン作成が常に行われているため、これはよくある問題です。
これまで私が試したこと:
scapy を使用して、MAC が同じで IP アドレスが異なるコンピューターを検出するスクリプトが既にあります。
windows - 起動時の Windows マシンでの IP アドレスの設定
私はLinuxの男です。Windowsボックスで解決しようとしているかなり具体的な問題があるので、ここで私の無知を許してください。
問題 (これは再定義できません): 3 つの NIC を持つ Windows マシンがあります。起動するたびに、その IP アドレスを動的かつ自動的に設定する方法が必要です。このマシンは起動するたびに、異なるアドレス情報を持ちます。マシンには、起動時にアクセス可能な名前と値のペアで構成されるファイルがあります (つまり、「=」エントリでいっぱいのファイル)。バッチ ファイルから実行される標準の Windows コマンド プロンプト コマンドを使用して、これらすべてのタスクを実行する必要があります。VB など、利用できるものはありません。
最大の問題: Windows がそのネットワーク インターフェイスの命名に関して決定論的である場合、これははるかに簡単になると思います。そうであれば、このファイルを解析して、netsh を使用して「ローカル エリア接続 2」の IP アドレスを簡単に設定できます。ただし、現状では、Windows は物理 NIC に使用する名前を変更することがあります。今日の「ローカル エリア接続 2」は、明日は「ローカル エリア接続」になるかもしれません。そのため、MAC アドレスを使用して対応する NIC を見つけることにより、起動時にこれらのことを判断する方法を見つける必要があります。grep や awk などがなければ、ipconfig の出力からこの情報を取得することはますます困難になっています。
試したこと/達成したこと: (1) ローカル グループ ポリシー エディターを使用して Windows 設定スタートアップ スクリプトを追加することにより、Windows の起動時にバッチ ファイルを開始する方法を見つけました。(2) バッチ ファイルから、名前と値のペア ファイルを解析し、トークンを取得する方法を見つけました。(3) arp コマンドを使用して IP マッピングを設定しようとしました。これは、明らかなように、パケットをインターフェイスに正しくルーティングするだけです。ただし、パケットがインターフェイスに到達すると、パケットは NIC が属していないネットワークを対象としているため、破棄されます。これは私には何の役にも立ちません。NIC の IP アドレスを設定する必要があります。
現在の計画 / サポートが必要なこと: (1) 名前と値のペア ファイルを解析する (2) 名前と値のペア ファイルで、MAC アドレスに対応するネットワーク カードの名前を見つける (3) netsh を使用して設定するこれらのカードの IP アドレス (4) これはすべてバッチ ファイルから実行します (5) Linux ボックスを使用していないことについて文句を言わないようにしてください :-)
どんな助けでも大歓迎です。
c - データ転送中は ARP を無効にする
PC1 経由で PC2 にデータを送信しています。どちらも Linux 2.6 カーネル マシンです。この転送には数時間かかります。ARP キャッシュの古いタイムアウトは、PC1 で 50 秒に設定されています。したがって、データ転送中、PC1 は 50 秒ごとに ARP 要求を PC2 に送信します (PC1 で arp キャッシュが期限切れになるため)。しかし、理論的には、データ転送が進行中なので、ARP 要求を PC2 に送信する必要はありません (PC1 は PC2 がまだそこにあることを知っているため)。
PC1 内の PC2 の ARP エントリの有効期限を無効にするにはどうすればよいですか (PC2 へのデータ転送がまだ進行中の場合)。
注: PC2 への転送中に、PC2 ARP キャッシュ エントリに対してのみ arp-cache の有効期限を無効にしたいと考えています。転送後、ARP エントリの有効期限が切れます。