c++ - 在 C++ 中嗅探

标签 c++ windows sockets

我正在尝试使用 Winsock 嗅探 CPP 中的数据包,但有一个问题。
当我创建一个套接字时,它需要是一个“原始套接字”,以便它可以被转移到“嗅探模式”:sniffer = socket(AF_INET, SOCK_RAW, IPPROTO_IP);但是当我创建那个套接字时,程序需要处于管理模式。

我想知道是否有办法绕过它,或者有另一种方法可以在 CPP 中嗅探数据包而无需管理员模式。
谢谢!

最佳答案

该操作具有特权,在某些平台上根本不可用。在 POSIX 平台上,用户可能需要在某个组中,而不是 root,在 Linux 上您可以运行 ls -l针对代表网络接口(interface)的相应设备节点找出正确的用户组(它仍然可能是 root)。

通常,您需要一个带有内核空间驱动程序\模块的数据包捕获库来实际绕过它。此类库的示例是 Wireshark 使用的全能 libpcap。有其他系统的端口,包括 Windows,称为 WinPCap。

关于c++ - 在 C++ 中嗅探,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60677244/

相关文章:

c++ - std::move() 与 priority_queue.top()

c# - 如何将抛出的异常映射到事件 ID 以进行日志记录?

C++/Windows : How to report an out-of-memory exception (bad_alloc)?

php - 页面发布登录因等待 PHP 中的监听套接字而被阻止

c++ - 如何安全地将变量的值传递给 C++ 方法,该方法只会将 void* 作为参数?

c++ - 安全 move 在访问其他成员的成员线程中运行 lambda 的对象

c++ - cmake 找不到 boost 库,因为它查找了错误的文件名

windows - Windows 中 Activestate Perl 中的 @INC 不正确

sockets - 使用clip下载网站

php - 使用 PHP(或其他语言)流式传输数据(例如音乐)