OpenHarmony开发者论坛

标题: 网络抓包APP开发,报错:eth0: You don't have permission to perform this capture on that device (socket: Operation not permitted) [打印本页]

作者: yuhaoooooooo    时间: 2024-9-11 18:45
标题: 网络抓包APP开发,报错:eth0: You don't have permission to perform this capture on that device (socket: Operation not permitted)
[md]### 【问题描述】

1. 使用libpcap.so,编写native代码调用
2. ```
   pcap_t *handle = pcap_open_live(device->name, BUFSIZ, 1, 1000, errbuf);
           if (handle == NULL) {
               OH_LOG_ERROR(LOG_APP, "Open - pcap_open_live failure %{public}s", errbuf);
               return -1;
           }

   ```
3. Open - pcap_open_live failure eth0: You don't have permission to perform this capture on that device (socket: Operation not permitted)
4. 把网络相关的权限都配置了

   ```
   "requestPermissions": [
               {
                   "name": "ohos.permission.INTERNET", //socket权限
                   "usedScene": {
                       "abilities": [
                           "MainAbility"
                       ],
                       "when":"always"
                   }
               },
               {
                   "name" : "ohos.permission.GET_NETWORK_INFO",
                   "usedScene": {
                       "abilities": [
                           "MainAbility"
                       ],
                       "when":"always"
                   }
               },
               {
                   "name" : "ohos.permission.GET_WIFI_INFO",
                   "usedScene": {
                       "abilities": [
                           "MainAbility"
                       ],
                       "when":"always"
                   }
               },
               {
                   "name" : "ohos.permission.MANAGE_NET_STRATEGY",
                   "usedScene": {
                       "abilities": [
                           "MainAbility"
                       ],
                       "when":"always"
                   }
               },
               {
                   "name" : "ohos.permission.CONNECTIVITY_INTERNAL",
                   "usedScene": {
                       "abilities": [
                           "MainAbility"
                       ],
                       "when":"always"
                   }
               },
               {
                   "name" : "ohos.permission.NETSYS_INTERNAL",
                   "usedScene": {
                       "abilities": [
                           "MainAbility"
                       ],
                       "when":"always"
                   }
               },
               {
                   "name" : "ohos.permission.ENTERPRISE_GET_NETWORK_INFO",
                   "usedScene": {
                       "abilities": [
                           "MainAbility"
                       ],
                       "when":"always"
                   }
               },
               {
                   "name" : "ohos.permission.ENTERPRISE_SET_NETWORK",
                   "usedScene": {
                       "abilities": [
                           "MainAbility"
                       ],
                       "when":"always"
                   }
               },
               {
                   "name" : "ohos.permission.ENTERPRISE_MANAGE_NETWORK",
                   "usedScene": {
                       "abilities": [
                           "MainAbility"
                       ],
                       "when":"always"
                   }
               },
               {
                   "name" : "ohos.permission.RUN_ANY_CODE",
                   "usedScene": {
                       "abilities": [
                           "MainAbility"
                       ],
                       "when":"always"
                   }
               },
               {
                   "name" : "ohos.permission.SET_NETWORK_INFO",
                   "usedScene": {
                       "abilities": [
                           "MainAbility"
                       ],
                       "when":"always"
                   }
               },
               {
                   "name" : "ohos.permission.GET_NETWORK_STATS",
                   "usedScene": {
                       "abilities": [
                           "MainAbility"
                       ],
                       "when":"always"
                   }
               }
           ]
       }
   ```
5. 可以正常网络包

### 【运行环境】

硬件:RK3568
ROM版本:4.0.10
DevEvoStudio版本:4.0
SDK版本:10
[/md]
作者: 深开鸿_王石    时间: 2024-9-18 16:53
看看 selinux 和 应用权限(是不是系统应用)
作者: kuaile    时间: 2024-9-26 15:54
只有root可以使用tcpdump
作者: yuhaoooooooo    时间: 2024-9-30 15:54
回复 kuaile: 但是ohos的机制,app不是root运行的,而是uid 100。改如何破局?
作者: yuhaoooooooo    时间: 2024-9-30 15:55
回复 深开鸿_王石: selinux 是关闭的,应用权限对libpcap不起作用。感觉是linux内核机制只有root才可以抓包
作者: 深开鸿_王石    时间: 2024-10-8 17:55
回复 yuhaoooooooo: 系统应用啊,或者自己改对应的权限:)
作者: 深开鸿_王石    时间: 2024-10-14 09:26
回复 yuhaoooooooo: 你这里是直接用app去open一个设备节点,所以你要看看这个节点权限是啥,他是不是能被用户账号访问,还是只能root访问,简单改法呢就是chmod,要不就是你把应用改成系统应用




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5