gpt4 book ai didi

c - 嗅探 C 中的所有网络流量

转载 作者:太空宇宙 更新时间:2023-11-04 08:30:35 30 4
gpt4 key购买 nike

我一直在寻找关于制作小型网络嗅探器和 found this one 的最直接的教程.我跟着它,但建议嗅探数据包的方法是:

sock_raw = socket( AF_PACKET , SOCK_RAW , htons(ETH_P_ALL)) ;;
while(1)
{
data_size = recvfrom(sock_raw , buffer , 65536 , 0 , &saddr , &saddr_size);
}

有了理性:

A raw socket when put in recvfrom loop receives all incoming packets. This is because it is not bound to a particular address or port.

在我看来,这只会监控进出我自己计算机的网络流量,而不是整个 LAN。试运行证实了我的直觉。

是否正确?这种方法只能嗅探进出笔记本电脑的数据包吗?

我应该采用哪种方法来嗅探所有网络流量(即:netsniff-ng、Wireshark)?

我想避免在这种情况下使用 libpcap。

最佳答案

这取决于您的网络,尤其是连接一切的路由器和交换机的类型和配置。在大多数安装中,计算机之间并不直接相连。相反,他们与开关交谈。开关只会向您发送用于您的计算机的数据包 - 理由是开关精心地将电子推向您是没有意义的,而您只会扔掉这些电子。

但是计算机可以告诉开关进入“promiscuous mode”。这会将您的交换机端口配置为向您发送交换机看到的每个数据包的副本。有两个问题:

  1. 交换机仍然看不到其他交换机/路由器未发送给它的数据包。混杂模式不会传播 - 否则,您将很快获得通过 Internet 发送到任何地方的每个数据包的副本。甚至 Google 或 NSA 也无法处理这种流量。

  2. 如果您的交换机不是即插即用类型,您的系统管理员将禁用此功能。

[编辑] Wireshark 使用 libpcap,这是一个低级库,它可以完成从配置网络设备到获取和过滤它可以看到的数据包的所有工作。所以你应该尝试找到这个库的源代码,以便更好地理解它是如何完成的。

相关:

  • FedEx Bandwidth :互联网的带宽何时(如果有的话)会超过 FedEx 的带宽吗?

关于c - 嗅探 C 中的所有网络流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28541879/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com