问题标签 [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.
c - 为什么 Linux TAP 设备不处理 ARP 或 ICMPv6 数据包
我正在使用打开一个 TAP 设备
我面临的问题是,当应用程序(例如 mozilla)想要通过 tap 设备发送数据包时,它需要获取 dst mac 地址。所以内核发出一个ARP请求。我正在编写的应用程序转发 arp 请求(通过物理 eth 设备上的原始套接字)并获得 arp 回复。这个 arp 回复被转发回 tap 设备,但内核拒绝接受。如果我手动添加 arp 条目,则不会生成 arp 请求,并且有两种方式的 ip 数据包交换(mozilla 很高兴)。
Wireshark 能够接收数据包并且没有发现错误。ICMPv6 数据包(邻居请求和广告)也是如此。在设备上侦听的任何应用程序都会完整地获取数据包。但是内核不会为 ARP/ICMP 处理它。
我的问题是,为什么内核不接受 arp 回复/ICMPv6 msgs?我们需要调用一些 ioctl 调用吗?
编辑:
这是在分接设备“ethgress”上捕获的数据包(tshark 输出)的详细信息
这是“ethgress”的 ifconfig 输出
可以看出,内核拒绝接受收到的 ICMPv6 数据包。但是 tx 数据包会增加。
Tap 设备“ethgress”配置了 IPv6 地址 fc00:1::2,应用程序想要与 fc00:1::1 通信。fc00:1::1 与 fc00:1:100 位于同一接口,后者使用正确的 MAC 地址响应邻居广告(该数据包中的目标 IP 是 fc00:1::1)。Tcpdump 能够捕获它,而 wireshark/tshark 能够在没有它的情况下对其进行解码,并说它是一个格式正确的数据包。但内核不会增加 Rx 计数器,也不会更新其 arp 缓存。ARP 数据包也是如此。
编辑2:
网络看起来像这样。有两个外部盒子被配置为冗余。其中只有一个会处于活动状态。它们每个都通过一个物理网卡连接到一台电脑。我正在编写的应用程序在这台电脑上运行,并在每个 NIC 上打开一个原始套接字。它还会打开一个 TAP 设备。NIC 未配置 IP 地址。TAP 设备配置了 IPv4 和 IPv6 地址。一个标准应用程序,比如 mozilla,通过 tap 设备打开一个套接字并希望连接到活动框。为此,内核会在 Tap 设备上生成 ARP 请求/邻居请求消息。应用程序读取此消息并将其转发到两个 NIC。活动框使用 ARP 回复响应 ARP 请求,应用程序读取该回复并将其写入 TAP 设备。这个arp回复包被tcpdump捕获,但内核不会更新其 arp 缓存。网卡和TAP设备的mac地址相同。
要求的其他参数。
winsock - 我可以使用Winsock构造和发送ARP包,或者接收ARP包吗?如何?
我在WINDOWS XP上尝试(但这不是重点),虽然我认为我无法使用Raw Winsock发送或接收ARP数据包,但互联网上的一些论文说是的,如果是这样,如何设置Winsock功能?
dns - ARP 欺骗/DNS 欺骗 - 区别
ARP Spoofing 和 DNS Spoofing 之间是否有区别,或者它们是一回事?
arp - 如何在网络中修改和重新发送数据包
我正在做一个练习 ARP 嗅探。
我想模拟像中间人这样的攻击。我一直在向攻击者 PC 发送 arp 以更改方式数据包。但我不知道如何将我收到的这个数据包从 A 转发到 B。
我怎么做?我可以用 LibIPQ 或 Libnet 来做吗?
linux - 如何从arptables将arp数据包发送到队列
我的目标是找到一种方法来处理(丢弃、接受、转发等)来自第 2 层的数据包......
我知道 *inux 中的“iptables”允许我们将数据包发送到“NFQUEUE”以进行进一步的数据包处理....
但它支持第 3 层数据包......这意味着它不会检测来自第 2 层的数据包......
尽管“arptables”检测到发往第 2 层的数据包,但我找不到将其发送到“NFQUEUE”的方法
有什么方法可以让我们选择是否应该接受/丢弃/继续层数据包?
c - ohrwurm 如何使用 libpcap 和 arpspoof 来破坏 RTP 流量?
我正在尝试评估一个名为ohrwurm的工具,它声称能够破坏两个 SIP 端点之间的 RTP 流量。通过阅读它的源代码,我不相信它有效,并且在我尝试之前想听听其他人的意见。
它的前提很简单:
- 假设端点 A 的 IP 地址为 192.168.0.11,端点 B 的 IP 地址为 192.168.0.22。
- 在与 A 和 B 位于同一子网的第三个框 C 上,在两个 SSH 会话中执行以下命令:
- arpspoof 192.168.0.11
- arpspoof 192.168.0.22
- 执行 ohrwurm。
查看ohrwurm 的源代码,它执行以下操作:
- 将 /proc/sys/net/ipv4/ip_forward 设置为 1。
- 在混杂模式下使用 libpcap 来拦截上面两个框之间的所有 IP 数据包。
- 对于那些是 SIP 的数据包,获取 RTP 端口号。
- 对于之前抓取的两个 RTP 端口之间的 UDP 数据包,模糊 RTP 内容。
这是我不明白的。我接受 arpspoofing 将导致 A 和 B 之间的所有 IP 流量通过 C 传输。此外,通过将 /proc/sys/net/ipv4/ip_forward 设置为 1,我们让内核正确转发此 IP 流量我们。
但我认为 libpcap 是只读的?如何就地修改我们在混杂模式下嗅探到的数据包?您会在ohrwurm.c 第 401 行注意到我们甚至试图丢弃 RTCP 数据包!这可能吗?
我对 libpcap 一无所知,很想知道更多!请教育我。谢谢。
c# - 如何将IP地址转换为MAC地址字节数组?
我正在尝试将 IP 地址转换为 MAC 地址,然后将其转换为字节数组。我被困在第一部分,不知道该怎么做。我看到一些搜索结果在谈论System.Net.NetworkInformation.NetworkInterface
但不知道如何使用它。
这是我需要 MAC 字节数组的代码。这个怎么做?
c# - 使用 ARP ping 总是使主机脱机
我正在尝试使用代码来检查网络上的计算机是否在线,该代码应该使用 ARP 数据包来检查它。
即使我确定它在线,我总是收到主机离线的消息。我检查了我的本地主机 IP 和一些始终工作的 IP,例如谷歌。
这段代码可能有问题吗?
通过使用以前的代码,我基本上是在尝试执行类似以下代码的操作。但是这段代码的问题是,当主机关闭时,需要大约 2 秒才能获得我想要消除的响应。有人建议使用 ARP ping:
bash - Linux/Bash ARP 查找
很简单,我希望获取特定子网上所有设备的列表,以便识别他们的 mac 地址,以查找该网络上特定供应商的所有设备。
目前我正在使用nmap
它来完成此操作,但是它使我指定了一个主机 example 10.0.0.0/24
,这对10.0.0.0
地址很有用,但是我也希望能够获取10.0.1.0
设备和10.1.1.0
设备。
有任何想法吗?
networking - 使用 traceroute 检测 ARP 欺骗
我正在制作可以检测 arp 欺骗的应用程序:]
我的想法是,如果子网中有攻击者,并且他尝试使用 arp 中毒 MITM,那么我执行 traceroute 到默认网关(或更改 arp 缓存条目,等等)。
因为我所有的数据包都通过攻击者的 PC,所以 traceroute 会出现一些迹象。
我的想法有问题吗?合适吗?或不?