Electron无法通过Node_API执行C++库(libpcap)

hs1rzwqc  于 2023-06-04  发布在  Electron
关注(0)|答案(1)|浏览(245)

我试图通过NodeJS的node_API在Electron中使用pcap(Linux中的libpcap库)。下面是C++中的关键代码块。

static napi_value RunCallback(napi_env env, const napi_callback_info info)
{
    char errBuf[PCAP_ERRBUF_SIZE];
    //network device name
    char *devName = "wlo1";

    pcap_t *device = pcap_open_live(devName, 65535, 1, 0, errBuf);
    .......
}

绑定.gyp:

{ 
 "targets":[
    {
      "target_name":"net",
      "sources": [ "./code/net.cpp" ],
       "libraries": [
            "-lpcap"
        ],
    }
  ]
}

日志在这里:

> my-electron-app@1.0.0 start
> electron .

Error: wlo1: You don't have permission to capture on that device (socket: 不允许的操作)

我试过使用sudo -E npm start,但它不适合我。但是我可以简单地运行像pcap_open_live()这样的代码,在一个由g++编译的文件中,比如sudo ./test。所以我想知道是否有任何设置我应该在Electron或Node.JS中做,就像在binding.gyp或js文件中一样?

niknxzdl

niknxzdl1#

这可能有帮助:

sudo setcap cap_net_raw,cap_net_admin=eip /path/to/your-app
此命令赠款您的Electron应用程序CAP_NET_RAW和CAP_NET_ADMIN功能,允许它捕获网络数据包。

相关问题