我试图通过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文件中一样?
1条答案
按热度按时间niknxzdl1#
这可能有帮助:
sudo setcap cap_net_raw,cap_net_admin=eip /path/to/your-app
此命令赠款您的Electron应用程序CAP_NET_RAW和CAP_NET_ADMIN功能,允许它捕获网络数据包。