【发布时间】:2015-02-16 12:54:58
【问题描述】:
我正在寻找有关制作小型网络嗅探器和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);
}
有理:
在 recvfrom 循环中的原始套接字接收所有传入的数据包。 这是因为它没有绑定到特定的地址或端口。
在我看来,这只会监控进出我自己计算机的网络流量,而不是整个 LAN。测试运行证实了我的直觉。
正确吗?这种方法只能嗅探进出我的笔记本电脑的数据包吗?
我应该采用哪种方法来嗅探所有网络流量(即:netsniff-ng、Wireshark)?
我想避免在这种情况下使用 libpcap。
【问题讨论】:
-
您无法监控不是源自您的 NIC 的流量,或者最终进入其中的流量。没有现有的工具可以帮助您。
标签: c linux sockets networking