窥探IGMP流量

本文关键字:流量 IGMP 窥探 | 更新日期: 2023-09-27 18:11:07

我建立了一个库来做IGMP的事情。现在,愚蠢的事情是,我的库也进行状态监控,以确保其他人仍然是组的一部分。

IGMP在较低水平上做完全相同的事情。离别信息,轮询路由器它仍然是同一组的一部分,所有的事情。我只是重复了所有相同的工作,它可能不那么健壮。

如果我能利用这些信息包,我就能让一切变得更干净(我就不会重新发明轮子了)。

有人有这样做的经验吗?或者创造一些疯狂的插座?我不想使用libpcap。我认为语言无关紧要,只要在Windows/Linux上使用Sockets就行

窥探IGMP流量

好吧,我找到办法了。由于我必须手动提取所需的信息,因此现在它非常脏,但这实际上是您在接口上提取IGMP数据的方式(注意,您需要具有提取原始数据的管理员权限):

var buffer = new byte[65536];
var s = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Igmp); // filter out non IGMP
byte[] one = BitConverter.GetBytes(1);
s.Bind(new IPEndPoint(IPAddress.Parse("192.168.1.148"), 0)); // Which interface to listen on
s.IOControl(IOControlCode.ReceiveAll, one, one); // enter promiscuous mode
s.Recieve(buffer); // get yourself some data (BeginRecieve didn't seem to work here)

则对所述缓冲区执行操作。如果你打开wireshark你可以看到数据包分解