【问题标题】:capturing network packet in c在c中捕获网络数据包
【发布时间】:2011-09-22 19:38:22
【问题描述】:

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

【问题讨论】:

标签: c networking packet low-level-api


【解决方案1】:

你必须使用原始套接字。这是example。 至少对于 Linux 和 Unix 之类的操作系统而言。我不了解 Windows。

【讨论】:

    【解决方案2】:

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

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

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

    [*] 其实Win32也是可以的,不过我自己没有在Windows下用过。

    【讨论】:

    • 是的,除非您的操作系统具有更细粒度的权限,允许特定用户帐户访问通常具有特权的 API 调用。
    猜你喜欢
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    • 2022-01-13
    • 1970-01-01
    • 2011-12-12
    相关资源
    最近更新 更多