禁止某个app联网

本文涉及的产品
云防火墙,500元 1000GB
简介: 禁止某个app联网
//作者: 家  QQ203118908
//本来打算用iptables-restore用文件形式更新防火墙规则,
//可是iptables-restore出现了bug,2013年就有人提过这个bug
//https://linux.debian.bugs.dist.narkive.com/J0hbJiR6/bug-710379-xtables-addons-common-quota2-module-iptables-save-creates-invalid-record
//又得改,坑爹
//马丹,iptables -D INPUT -lineNumber也有BUG,
//提示 index of deletion too big
//日了够了
//又得改,坑爹
// sudo iptables -D OUTPUT 1 -t nat
//
// uid=`cat /data/system/packages.list | grep com.sohu.inputmethod.sogou | busybox awk '{print $2}'`
// iptables -t filter -A OUTPUT -m owner --uid-owner=$uid -j DROP
// 以上是android iptables 屏蔽某个app网络访问的内容,
function 联网控制(appName) {
  // -A OUTPUT -m owner --uid-owner 10105 -j ACCEPT
  // -A OUTPUT -m owner --uid-owner 10105 -j DROP
  this.等待shell执行完毕的时间 = 0
  this.防火墙规则路径 = '/sdcard/iptables.txt'
  this.uid路径 = '/sdcard/' + appName + 'uidOwner.txt'
  this.appName = appName
  this.packageName = getPackageName(this.appName)
  this.执行shell = (cmd) => {
    var result = shell(cmd, true);
    console.show();
    log(result);
    if (result.code == 0) {
      toastLog("执行成功");
    } else {
      toastLog("执行失败!请到控制台查看错误信息");
    }
    sleep(this.等待shell执行完毕的时间)
  }
  this.uid = () => {
    var cmd = 'cat /data/system/packages.list | grep ' + this.packageName + ' > ' + this.uid路径
    log('cmd=', cmd)
    this.执行shell(cmd)
    // cat /data/system/packages.list | grep com.tencent.mobileqq > /sdcard/QQuidOwner.txt
    var 包含uid的文本 = files.read('/sdcard/' + appName + 'uidOwner.txt')
    log('包含uid的文本=', 包含uid的文本)
    var uidReg = new RegExp(this.packageName + '\\s*(\\d+)')
    log('uidReg=', uidReg)
    var uid = 包含uid的文本.match(uidReg)[1]
    log(uid)
    return uid
  }
  this.允许联网规则 = 'iptables -t filter -A OUTPUT -m owner --uid-owner ' + this.uid() + ' -j ACCEPT'
  this.禁止联网规则 = 'iptables -t filter -A OUTPUT -m owner --uid-owner ' + this.uid() + ' -j DROP'
  this.允许 = () => {
    this.清空该app的防火墙规则()
    this.将防火墙规则写入系统(this.允许联网规则)
  }
  this.禁止 = () => {
    this.清空该app的防火墙规则()
    this.将防火墙规则写入系统(this.禁止联网规则)
  }
  this.将防火墙规则写入系统 = (防火墙规则) => {
    var cmd = 防火墙规则
    this.执行shell(cmd)
  }
  this.导出防火墙规则 = () => {
    var cmd = 'iptables-save > ' + this.防火墙规则路径
    this.执行shell(cmd)
  }
  this.防火墙规则 = () => {
    this.导出防火墙规则()
    var 防火墙规则 = files.read(this.防火墙规则路径)
    log('防火墙规则=', 防火墙规则)
    return 防火墙规则
  }
  this.清空该app的防火墙规则 = () => {
    var 防火墙规则 = this.防火墙规则()
    // stringObject.replace(regexp/substr,replacement)
    // -A OUTPUT -m owner --uid-owner 10105 -j ACCEPT
    // -A OUTPUT -m owner --uid-owner 10105 -j ACCEPT
    // -A OUTPUT -m owner --uid-owner 10105 -j DROP
    // -A OUTPUT -m owner --uid-owner 10105 -j ACCEPT
    // -A OUTPUT -m owner --uid-owner 10105 -j ACCEPT
    // 删除之前添加的规则(iptables -A INPUT -s 192.168.1.5 -j DROP):
    // [root@test ~]# iptables -D INPUT -s 192.168.1.5 -j DROP
    // iptables -t filter -A OUTPUT -m owner --uid-owner=$uid -j DROP
    var 要删除的规则reg = new RegExp('-A (OUT|IN)PUT -m owner --uid-owner ' + this.uid() + ' -j (ACCEPT|DROP)', 'g')
    // 要删除的规则reg= /-A OUTPUT -m owner --uid-owner 10105 -j (ACCEPT|DROP)/
    // -A OUTPUT -m owner --uid-owner 10105 -j (ACCEPT|DROP)
    // iptables -D OUTPUT -m owner --uid-owner 10105 -j ACCEPT
    log('要删除的规则reg=', 要删除的规则reg)
    var new防火墙规则 = 防火墙规则.match(要删除的规则reg, '')
    log('new防火墙规则=', new防火墙规则)
    // new防火墙规则= [
    //   '-A OUTPUT -m owner --uid-owner 10105 -j ACCEPT',
    //   '-A OUTPUT -m owner --uid-owner 10105 -j DROP'
    //               ]
    if(new防火墙规则){
      for (let i = 0; i < new防火墙规则.length; i++) {
        var 规则 = new防火墙规则[i]
        规则 = 规则.replace('-A', '-D')
        var cmd = 'iptables ' + 规则
        this.执行shell(cmd)
      }
    }
    log('清空了指定app的防火墙规则')
  }
}
// var appName = 'QQ'
// var appName = '哔哩哔哩'
var appName = '微信'
var app联网控制 = new 联网控制(appName)
// app联网控制.禁止()
app联网控制.允许()


声明

部分内容来自网络

相关文章
|
Web App开发 安全 iOS开发
TrollStore巨魔商店永久安装APP 可实现IOS应用双开 安装任意APP
TrollStore 是一个永久签名的监禁应用程序,可以永久安装您在其中打开的任何 IPA。
|
安全 数据安全/隐私保护 Python
Crack App | 某赢+ 二手车 App 登录参数加密逻辑分析
Crack App | 某赢+ 二手车 App 登录参数加密逻辑分析
114 0
|
小程序 数据安全/隐私保护 开发者
uni-app进行小程序隐私协议开发
为规范开发者的用户个人信息处理行为,保障用户合法权益,小程序、插件中涉及处理用户个人信息的开发者,均需补充相应用户隐私保护指引。
296 0
|
前端开发
通过用户使用Pc端还是APP端来选择不同效果
通过用户使用Pc端还是APP端来选择不同效果
|
Java Android开发
autojs使用未安装的app资源
牙叔教程 简单易懂
165 0
|
JavaScript Linux
uni-app苹果手机网络不给力问题
本文介绍解决uni-app苹果手机网络不给力问题的方法。
562 0
uni-app苹果手机网络不给力问题
|
人工智能 自然语言处理 vr&ar
疑惑?学生的手机中到底需要安装哪些APP
疑惑?学生的手机中到底需要安装哪些APP
182 0
疑惑?学生的手机中到底需要安装哪些APP
|
Android开发
Android开发出来的APP在手机的安装路径是?
Android开发出来的APP在手机的安装路径是?
229 0
Android开发出来的APP在手机的安装路径是?
|
Web App开发 移动开发 小程序
微信不再提供小程序打开App?借助H5为App引流的方式你必须知道!
2021年5月14日App开发者领域发布了一条重要消息:微信开放平台为了提升用户体验,将于2021年5月20日(后来延期到2021年5月27日)起不再提供“小程序打开App技术服务”,现在能够实现从微信打开App的方式只有H5页面唤起App了。
微信不再提供小程序打开App?借助H5为App引流的方式你必须知道!
|
安全 iOS开发
苹果禁止iPhone黑客访问App Store应用商店
据国外媒体报道,苹果近日对曾经入侵iPhone手机操作系统的黑客采取了较为严历的打击措施,即禁止已被苹果所确认iPhone黑客们访问该公司的App Store应用商店。 谢里夫·哈希姆(Sherif Hashim)就是被苹果“封杀”的外部开发人员之一。
1105 0

热门文章

最新文章

下一篇
开通oss服务