Android 13 动态启用或禁用IPV6

介绍

客户想要通过APK来控制IPV6的启用和禁用,这里我们通过广播的方式来让客户控制IPV6。

效果展示

adb shell

ifconfig

这里我们用debug软件,将下面节点置为1 如图ipv6已被禁用了 

echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6

修改

接下来我们通过代码控制,动态注册广播

custom.action.intent.ipv6.on   //禁用ipv6

custom.action.intent.ipv6.off   //启用ipv6

路径:frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

//*/soda water.20232328.ipv6 switch
import java.io.BufferedWriter;
import java.io.FileWriter;
//*///我们在 init 中动态注册广播public void init(Context context, IWindowManager windowManager,WindowManagerFuncs windowManagerFuncs) {//*/soda water.20232327.ipv6 switchfilter = new IntentFilter();filter.addAction("custom.action.intent.ipv6.on");filter.addAction("custom.action.intent.ipv6.off");context.registerReceiver(Ipv6Receiver, filter);//*/}//此处我们监听广播 这里定义广播//*/soda water.20232327.ipv6 switchBroadcastReceiver Ipv6Receiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {if ("custom.action.intent.ipv6.on".equals(intent.getAction())) {setIpv6(true);Log.d("soda water","on");}else if ("custom.action.intent.ipv6.off".equals(intent.getAction())){setIpv6(false);Log.d("soda water","off");}}};private static void setIpv6(Boolean commod) {BufferedWriter bufWriter;try {bufWriter = new BufferedWriter(new FileWriter("/proc/sys/net/ipv6/conf/all/disable_ipv6"));Log.d("soda water","one");bufWriter.write(commod?"1":"0");Log.d("soda water","two");bufWriter.close();} catch (IOException e) {e.printStackTrace();}}//*/

接下来我们尝试用apk发送广播

public class MainActivity extends AppCompatActivity {private ToggleButton tg_button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tg_button = findViewById(R.id.bt_switch);tg_button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton compoundButton, boolean b) {Intent intent = new Intent();if (b) {intent.setAction("custom.action.intent.ipv6.on");sendBroadcast(intent);} else {intent.setAction("custom.action.intent.ipv6.off");sendBroadcast(intent);}}});}
}

验证发现缺少avc写入的权限

adb shell

logcat | grep avc

12-26 19:52:25.616  1310  1310 W system_server: type=1400 audit(0.0:193): avc: denied { write } for name="disable_ipv6" dev="proc" ino=27000 scontext=
u:r:system_server:s0 tcontext=u:object_r:proc_net:s0 tclass=file permissive=0

上面显示 proc_net 在 system_server 中没有 write 权限

在如下路径补上如下代码 此时在此发送广播发现可以动态控制ipv6的启用和禁用了

路径:system/sepolicy/private/system_server.te

allow system_server proc_net:file {open write getattr};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/583196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法学习系列(十五):最小堆、堆排序

目录 引言一、最小堆概念二、堆排序模板(最小堆)三、模拟堆 引言 这个堆排序的话,考的还挺多的,主要是构建最小堆,并且在很多情况下某些东西还用得着它来优化,比如说迪杰斯特拉算法可以用最小堆优化&#…

Spring Boot学习随笔- Jasypt加密数据库用户名和密码以及解密

学习视频:【编程不良人】2021年SpringBoot最新最全教程 第十九章、Jasypt加密 Jasypt全称是Java Simplified Encryption,是一个开源项目。 Jasypt与Spring Boot集成,以便在应用程序的属性文件中加密敏感信息,然后在应用程序运行…

Openslide安装

文章目录 安装open-slide python下载openslide二进制文件解压到Anaconda的library目录下配置环境变量在py文件中添加以下语句即可 官网链接 安装open-slide python 表面上这样就可以导入了但事实上会遇到 Couldn’t locate OpendSlide DLL的问题,openslide必须独立安…

VSCODE : SSH远程配置+免密登录

SSH基础配置 填入地址,回车 ssh userhost-or-ip 然后选择默认的配置,回车,得到以下结果: 点击链接 选择远程的系统 输入密码 免密登录 生成SSH密钥: 首先,确保你已经在本地生成了SSH密钥。你可以使…

为什么要建设日志分析平台?

建设日志分析平台有多个重要原因,这些原因通常与提高系统性能、提升安全性、优化用户体验和满足合规要求等方面有关: 1. 系统监控与性能优化: - 日志分析平台可以帮助监控系统性能,及时发现并解决性能瓶颈。 - 通过分析日志…

vuereact中的副作用

前言 副作用(side effect)是指在函数或组件中,除了返回值或渲染结果之外,对外部产生的影响。即一个动作引起的其他关联的动作,例如,修改全局变量、发送网络请求、操作DOM、打印日志等,都是副作用…

nodejs+vue+微信小程序+python+PHP的艺术展览馆艺术品管理系统-计算机毕业设计推荐

选择轻量级的关系型MySQL数据库存储数据。接着进行系统的需求分析、功能设计、数据库设计,最后进行编码实现。具体如下: 1)网站首页:艺术品浏览展示,艺术品作者线下。供会员浏览查看。 2)注册登录&#xff…

OpenCV-Python(21):OPenCV查找及绘制轮廓

1.认识轮廓 1.1 目标 理解什么是轮廓学习掌握找轮廓、绘制轮廓等学习使用cv2.findContours()、cv2.drawContours()函数的用法 1.2 什么是轮廓 在OpenCV中,轮廓是图像中连续的边界线的曲线,具有相同的颜色或者灰度,用于表示物体的形状。轮廓…

数据库索引简析

文章目录 前言一、索引是什么二、索引的有什么用三、索引的分类四、索引的数据结构总结 前言 在我们使用数据库的过程中,往往会碰到一个叫做索引的东西,不管是表的设计,还是数据库性能的优化往往都会涉及到索引。那么他是个什么东西&#xff…

vue中使用echarts实现省市地图绘制,根据数据显示省市天气图标及温度信息

一、实现效果 使用echarts实现省市地图绘制根据数据显示省下市的天气图标根据数据显示省下市的温度信息 二、实现方法 1、安装echarts插件 npm install echarts --save2、获取省市json数据 https://datav.aliyun.com/portal/school/atlas/area_selector 通过 阿里旗下的高…

记录华为云服务器(Linux 可视化 宝塔面板)-- Nginx配置出现403错误记录(四种情景)

文章目录 第一种、配置文件index指定文件找不到第二种、root配置问题第三种、文件操作权限第四种、防火墙问题 最近配置多页项目,需指定根目录为某个页面 配置nginx出现了403的情况 location / {# autoindex on;root AuditAndInspection/;index index.html;try_file…

简述Redis备份策略以及对应的实现机制

引言 Redis作为高性能的内存数据库,数据的安全性至关重要。一旦数据丢失,可能会对业务造成重大影响。因此,备份Redis数据是每个Redis使用者都必须考虑的问题。本文将介绍Redis的备份策略以及对应的实现机制。 一、备份策略 1.1 定期备份 …

easycython和cython将py编译为pyd对比

前提了解 为了实验的准确性,在全过程使用的python环境版本都为同一版本 easycython和cython编译为pyd文件的不同在于,easycython编译的原始文件后缀为pyx,cython编译的原始文件为py 1.cython 1.1原始文件 def ZWHCythonTest():print(&qu…

QT+OSG/osgEarth编译之六十三:bvh+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_bvh)

目录 1、bvh介绍 2、文件分析 3、pro文件 4、编译实践 1、bvh介绍 BVH(BioVision Hierarchy)是BioVision等设备对人体运动进行捕获后产生数据文件,它存储了角色的骨骼和肢体关节旋转数据。BVH是一种通用的人体特征动画文件格式,广泛地被当今流行的各种动画制作软件(如…

怎么用Facebook找客户?Facebook开发客户攻略分享

跨境人最了解的电商平台之一就是Facebook了,说到Facebook,它拥有超过20亿的活跃用户,所以你可以在这个平台上面找到更多的潜在客户。今天的文章就主要分享用Facebook开发客户的方法,全是干货,建议收藏! 一、…

2024 年政府和技术预测

新的一年即将来临,这意味着专家、技术专家和专栏作家应该尝试预测 2024 年政府和技术即将出现的一些最大趋势。今年可能使这些预测变得更加困难的是事实上,许多技术正在以惊人的速度向前发展。在某些情况下,过去需要多年才能慢慢发生的变化现…

LLM之RAG实战(九)| 高级RAG 03:多文档RAG体系结构

在RAG(检索和生成)这样的框架内管理和处理多个文档有很大的挑战。关键不仅在于提取相关内容,还在于选择包含用户查询所寻求的信息的适当文档。基于用户查询对齐的多粒度特性,需要动态选择文档,本文将介绍结构化层次检索…

二维数组调整

前言 NWAFU 2021阶段二 B 一、题目描述 题目描述 编写Adjust_Arr函数,对动态二维数组中的每一行做数据位置调整。将偶数行(行号从0开始,并计作偶数行)中最大元素与最前一个元素做交换,最小元素与最后一个元素做交换&#xff0c…

腾讯云轻量服务器和云服务器区别对比(超详细)

腾讯云轻量服务器和云服务器CVM该怎么选?不差钱选云服务器CVM,追求性价比选择轻量应用服务器,轻量真优惠呀,活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三…

数据挖掘 K-Means聚类

未格式化之前的代码: import pandas as pd#数据处理 from matplotlib import pyplot as plt#绘图 from sklearn.preprocessing import MinMaxScaler#归一化 from sklearn.cluster import KMeans#聚类 import os#处理文件os.environ["OMP_NUM_THREADS"] …