gpt4 book ai didi

ethernet - 发送/接收原始以太网帧

转载 作者:行者123 更新时间:2023-12-01 05:20:58 25 4
gpt4 key购买 nike

我必须在 Linux 上编写一个应用程序,该应用程序需要与具有自定义以太网类型的设备进行通信。甚至在如何编写这样的应用程序中也有很多解决方案。一个缺点是需要 root 访问权限(AFAIK)。之后释放 root 权限可能是一种选择,但它提出了程序是在 IDE 中开发的问题,我不喜欢以 root 身份运行。在我的特殊情况下,主应用程序是用 Python 编写的,这意味着授予对整个 Python 解释器的 root 访问权限。我正在寻找可能的替代方案。例如。

  • 编写一个微型 UDP/TCP 服务器,通过 TCP/UDP 重定向每个原始数据包。这也可以用 Python 编写。只有这个小应用程序需要 root 权限。
  • 使用 socat 进行重定向,不幸的是,我找不到只关心一种以太网类型而不会被 IP 数据包溢出的选项。
  • 还有其他想法吗?
  • 最佳答案

    我认为您只需要成为 root 或拥有 CAP_NET_RAW 即可打开套接字。一旦套接字打开,您就可以成为任何您喜欢的用户。

    所以有:

  • 一个 setuid 帮助程序,它打开一个原始套接字,绑定(bind)它(如果需要),然后放弃它的 root 权限并执行你的主程序,保持套接字打开并以某种方式传递文件描述符号(命令行?环境变量?)
  • 一个 setuid 助手,它将使用另一种机制(例如 unix 套接字)传递打开的文件描述符
  • 一个根拥有的守护进程,它根据请求将这样一个打开的套接字描述符传递给其他程序
  • 关于ethernet - 发送/接收原始以太网帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16701821/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com