当前位置: 首页 > 面试题库 >

Golang的原始套接字嗅探

百里金林
2023-03-14
问题内容

我有一个关于使用golang嗅探tcp数据包的问题。我们编写了一个小工具,可以捕获来自光纤分接头的所有传入TCP数据包。

当前的实现在Linux下使用libpcap包装器。我们需要将此工具移植到Windows。当然,目前尚不可能。

所以我的问题是,是否存在用于嗅探数据包的跨平台解决方案?我们只需要TCP数据包,IP标头,没有以太网数据,并且不需要libpcap的所有功能。

如果没有跨平台的解决方案,那么两个Code的实现也是可以的。我知道人们可以在Linux下使用原始套接字(并且在Windows下有一些限制)。Golang是否支持原始套接字,是否有使用套接字嗅探数据包的示例实现?

坦克!:-)


问题答案:

您应该能够使用来自go.net的ipv4软件包。

程序包ipv4为Internet协议版本4实现IP级套接字选项。

该ipv4.RawConn类型和它的相关方法应跨平台工作。

RawConn代表使用IPv4传输的分组网络终结点。它用于控制多个IP级套接字选项,包括IPv4标头操作。它还提供了特定于IPv4和直接处理IPv4数据报的高层协议(例如OSPF,GRE)的基于数据报的网络I
/ O方法。

ipv6也有一个等效的软件包。



 类似资料:
  • 问题内容: 我需要在Linux中编写一个数据包嗅探器,以检测发送的HTTPS数据包并保存请求中的url。我在security- freak中 找到了用于此的代码并运行了它。此代码运行,并且仅嗅探接收到的数据包,但我需要在嗅探器中获取发送的数据包。如何获得此代码中发送的数据包? 我不能使用任何类似libcap的库(禁止使用)。代码是:sniffer.c 问题答案: 您应该使用ETH_P_ALL而不是

  • 问题内容: 对于linux c编程原始套接字,这是一个快速的问题。如果我只想使用原始套接字来监听任何接口,我是否真的必须绑定到ip地址或接口来监听流量?据我了解,我觉得我应该能够只调用sock();。然后启动recvfrom()流量。也许我错了,但是我看过一些不使用它的程序。 问题答案: 没错,您唯一需要做的就是打电话给then 。不过请注意,使用收听存在一些限制。 如果您不是在“发送后忘记”的基

  • 当我进行套接字编程时,我无法清楚地理解。 我的理解是 如果我使用此选项打开套接字,表示我可以在header之前创建自己的header,但最终数据以 /code>协议的格式发送。我的理解是正确的。如果错了,可以一些解释。 谢谢

  • 我正在编写原始套接字客户端(成功发送UDP数据包)和一个服务器套接字,问题出在服务器部分。 Im按以下方式创建套接字:

  • 本文向大家介绍Python原始套接字编程实例解析,包括了Python原始套接字编程实例解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Python原始套接字编程实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在实验中需要自己构造单独的HTTP数据报文,而使用SOCK_STREAM进行发送数据包,需要进行完整的TCP交互。

  • 问题内容: 我希望能够构造一个原始的HTTP请求并使用套接字发送它。显然,您希望我使用urllib和urllib2之类的东西,但我不想使用它。 它必须看起来像这样: 显然,您还必须请求页面/文件并获取和发布参数 问题答案: 您需要了解的大多数内容都在HTTP / 1.1规范中,如果您想推广自己的HTTP实现,则应该进行以下研究:http : //www.w3.org/Protocols/rfc26