2

这个问题可能听起来很傻,因为我知道有很多框架可以为你做这件事。我真正想要的是深入接触低级 C API,并能够编写一个位于计算机上并拦截本地机器和外部空间之间的数据包的程序。我试图通过查看开源代码(即 tcpdump)来弄清楚它,但我很难找出哪个文件实际执行网络嗅探。任何建议,将不胜感激 !

4

2 回答 2

3

您必须使用原始套接字。这是一个例子。至少对于 Linux 和 Unix 之类的操作系统而言。我不知道Windows。

于 2011-09-22T19:42:26.557 回答
1

如果您使用的是基于 UNIX 的系统[*],那么最简单的机制是libpcap,它是tcpdump项目的一部分。

您的进程将需要 root 权限才能访问网络接口(原始套接字也是如此)。

通常您最终不得不自己解码以太网帧、IP 标头等,尽管对于大多数协议来说这并不

[*] 它实际上也适用于 Win32,但我自己没有在 Windows 下使用它。

于 2011-09-22T19:47:51.573 回答