Board logo

标题: [网络连接] 批处理如何阻止与解除某个exe进程的联网? [打印本页]

作者: wh123wh123    时间: 2021-7-21 21:33     标题: 批处理如何阻止与解除某个exe进程的联网?

本帖最后由 wh123wh123 于 2021-7-22 00:03 编辑

批处理如何阻止与解除某个exe进程的联网(假如程序名称为:AAA.exe,不是结束进程,只是暂时阻止联网即可)?
想通过BAT或VBS实现,间隔5秒钟阻断一次exe联网,然后过8秒钟解除允许联网,再过5秒钟再次阻断联网,以此类推循环执行。
能不能实现这样的功能?求完整代码。
最好有显示执行情况,也就是显示当前循环执行第几次了
作者: newswan    时间: 2021-7-21 22:24

回复 1# wh123wh123

先找下防火墙里有没有这个程序的规则,如果有,就不用第一句了
  1. New-NetFirewallRule -DisplayName "aaa" -Program "notepad.exe" -Action Allow
  2. do
  3. {
  4.     Enable-NetFirewallRule -DisplayName "aaa"
  5.     start-sleep 5
  6.     disable-NetFirewallRule -DisplayName "aaa"
  7.     start-sleep 8
  8. }
  9. while {$true}
复制代码

作者: wh123wh123    时间: 2021-7-21 23:50

本帖最后由 wh123wh123 于 2021-7-21 23:51 编辑

回复 2# idwma
不得结束进程,只要求暂时阻止联网即可,过几秒钟再放行,循环的,另外能不能增加显示第几次循环执行命令?exe程序名称怎么加入到代码里?
作者: wh123wh123    时间: 2021-7-21 23:55

回复 3# newswan


    aaa是啥?是程序名称吗?能不能显示当前执行第几次?
作者: wh123wh123    时间: 2021-7-21 23:56

回复 3# newswan


    脚本:        C:\Users\Administrator\Desktop\新建文本文档.vbs
行:        1
字符:        1
错误:        缺少语句
代码:        800A0400
源:         Microsoft VBScript 编译器错误
作者: wh123wh123    时间: 2021-7-21 23:58

回复 2# idwma


    为什么运行后闪一下就窗口消失了?
作者: wh123wh123    时间: 2021-7-22 00:25

回复 9# idwma
新建.ps1这样?运行后直接打开的是代码啊,并没有实际运行,能不能弄成bat或vbs的
作者: wh123wh123    时间: 2021-7-22 00:53

本帖最后由 wh123wh123 于 2021-7-22 00:57 编辑

回复 2# idwma

为什么运行后所有程序都无法联网了?我只要求阻止某一个程序,例如AAA.exe

另外代码里面的  netsh advfirewall firewall add rule name="阻断一次" dir=out action=allow program="d:\阻断一次.exe" enable=yes
"d:\阻断一次.exe"这个是啥?是代码自动生成的阻断程序还是要阻断的程序路径名称?
name="阻断一次" 是代表进程名称?还是啥意思
能不能显示当前执行第几次,间隔时间等?
作者: newswan    时间: 2021-7-22 01:02

回复 11# wh123wh123


恢复默认
  1. netsh advfirewall set domainprofile firewallpolicy blockinbound,AllowOutbound
  2. netsh advfirewall set privateprofile firewallpolicy blockinbound,AllowOutbound
  3. netsh advfirewall set publicprofile firewallpolicy blockinbound,AllowOutbound
复制代码

作者: newswan    时间: 2021-7-22 01:03

回复 11# wh123wh123


一般防火墙里都有程序的规则,先去找到这个规则的名字,如果没有再创建一个
作者: wh123wh123    时间: 2021-7-22 01:03

在线期待老师完整代码
作者: wh123wh123    时间: 2021-7-22 01:13

回复 13# newswan

能不能弄成可以控制的(因为运行后无法控制,只能结束进程和关闭防火墙才行),可以设定例如AAA.exe某一个程序而不影响其他程序的联网的那种,
作者: wh123wh123    时间: 2021-7-22 01:18

回复 13# newswan

高级安全防火墙里的出站规则里没有要阻止的程序名称,求完整代码
作者: wh123wh123    时间: 2021-7-22 01:21

间隔5秒钟阻断一次exe联网,阻断等待8秒钟再解除允许联网,再过5秒钟再次阻断联网,以此类推循环执行。
作者: newswan    时间: 2021-7-22 01:29

回复 15# wh123wh123


没有,一般都有的啊
作者: newswan    时间: 2021-7-22 01:42

  1. $program = "D:\program files\mobaxterm\root\slash\bin\xwin_mobax.exe"
  2. New-NetFirewallRule -DisplayName "bbb" -Profile Private,Public -Direction Outbound -Program $program -Action block
  3. $count = 0
  4. do
  5. {
  6.     $count += 1
  7.     write-host "count:" $count
  8.     Enable-NetFirewallRule -DisplayName "bbb"
  9.     start-sleep 5
  10.     disable-NetFirewallRule -DisplayName "bbb"
  11.     start-sleep 8
  12. }
  13. while {$true}
复制代码

作者: wh123wh123    时间: 2021-7-22 01:52

本帖最后由 wh123wh123 于 2021-7-22 01:53 编辑

回复 19# newswan

$program = "D:\program files\mobaxterm\root\slash\bin\xwin_mobax.exe"这是需要阻止的程序名称吗?是不是只需修改这里即可?
DisplayName "bbb"下面的这2处bbb是啥?需要修改吗?
作者: newswan    时间: 2021-7-22 01:52

回复 20# wh123wh123


    是
作者: wh123wh123    时间: 2021-7-22 01:54

回复 21# newswan

DisplayName "bbb"下面的这2处bbb是啥?需要修改吗?
作者: wh123wh123    时间: 2021-7-22 01:58

回复 21# newswan

代码保存为:新建文本文档.ps1  这样吗?为什么运行后闪了一下就消失了,需要阻止的程序依然正常联网,没效果
作者: newswan    时间: 2021-7-22 02:03

本帖最后由 newswan 于 2021-7-22 02:23 编辑

回复 23# wh123wh123


    bbb 是规则名 ,
插入为第一行保存为bat,管理员运行
  1. @powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" & pause & exit
复制代码
其他方式去去看其他帖子
作者: newswan    时间: 2021-7-22 02:24

先头一段时间进不了论坛
作者: wh123wh123    时间: 2021-7-22 02:31

本帖最后由 wh123wh123 于 2021-7-22 02:35 编辑

回复 24# newswan

你的意思是加入第一行后把下面代码保存为bat?然后运行即可只对D:\AAA.exe阻止和放行?

    @powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" & pause & exit
$program = "D:\AAA.exe"
New-NetFirewallRule -DisplayName "bbb" -Profile Private,Public -Direction Outbound -Program $program -Action block
$count = 0
do
{
    $count += 1
    write-host "count:" $count
    Enable-NetFirewallRule -DisplayName "bbb"
    start-sleep 5
    disable-NetFirewallRule -DisplayName "bbb"
    start-sleep 8
}
while {$true}
作者: wh123wh123    时间: 2021-7-22 02:39

回复 24# newswan

提示错误
作者: newswan    时间: 2021-7-22 02:44

回复 27# wh123wh123


什么错?   
http://www.bathome.net/thread-31071-1-1.html
作者: wh123wh123    时间: 2021-7-22 02:52

本帖最后由 wh123wh123 于 2021-7-22 02:53 编辑

回复 28# newswan

能不能把下面代码完善一下,只正对AAA.exe阻断和放行,并且显示正在执行第几次

@echo off
title=恢复默认
netsh advfirewall set domainprofile firewallpolicy blockinbound,AllowOutbound
netsh advfirewall set privateprofile firewallpolicy blockinbound,AllowOutbound
netsh advfirewall set publicprofile firewallpolicy blockinbound,AllowOutbound
pause

@echo off
title=批处理阻止与解除某个exe进程的联网
netsh advfirewall set domainprofile firewallpolicy blockinbound,blockoutbound
netsh advfirewall set privateprofile firewallpolicy blockinbound,blockoutbound
netsh advfirewall set publicprofile firewallpolicy blockinbound,blockoutbound
:loop
ping -n 6 127.0.1 >nul
echo 已断开
netsh advfirewall firewall delete rule name="阻断一次"
ping -n 9 127.0.1 >nul
echo 已连接
netsh advfirewall firewall add rule name="阻断一次" dir=out action=allow program="D:\AAA.exe" enable=yes
goto :loop
作者: newswan    时间: 2021-7-22 03:11

回复 29# wh123wh123


netsh 不熟悉了,要试试
作者: newswan    时间: 2021-7-22 03:23

netsh方式
  1. set %program%="D:\Program Files\realVNC\VNC-Viewer.exe"
  2. netsh advfirewall firewall add rule name="bbb" profile=public,private dir=out program=%program% action=block
  3. set count=0
  4. :Loop
  5. set /a count+=1
  6. echo count: %count%
  7. netsh advfirewall firewall set rule name="bbb" new enable=no
  8. choice /t 5 /d y /n >nul
  9. netsh advfirewall firewall set rule name="bbb" new enable=yes
  10. choice /t 8 /d y /n >nul
  11. goto :Loop
复制代码

作者: wh123wh123    时间: 2021-7-22 10:12

本帖最后由 wh123wh123 于 2021-7-22 10:16 编辑

回复 31# newswan

保存为.bat?运行提示语法不正确

命令语法不正确。
一个或多个重要的参数没有输入。
请验证需要的参数,然后再次输入。

count: 1

没有与指定标准相匹配的规则。


没有与指定标准相匹配的规则。

已断开

已删除 1 规则。
确定。

已连接
确定。

count: 2

没有与指定标准相匹配的规则。


没有与指定标准相匹配的规则。

已断开

已删除 1 规则。
确定。

已连接
确定。

count: 3

没有与指定标准相匹配的规则。


没有与指定标准相匹配的规则。

已断开

已删除 1 规则。
确定。

已连接
确定。

count: 4

没有与指定标准相匹配的规则。


没有与指定标准相匹配的规则。

已断开

已删除 1 规则。
确定。

已连接
确定。

count: 5

没有与指定标准相匹配的规则。
作者: cmd1152    时间: 2021-7-22 11:16

回复 6# wh123wh123


    这不是Vbs脚本...
作者: wh123wh123    时间: 2021-7-22 12:08

回复 33# cmd1152

求完整有效功能的代码
作者: wh123wh123    时间: 2021-7-22 12:14

netsh方式
newswan 发表于 2021-7-22 03:23


这个好像无实际效果,在防火墙里能看到灰色和绿色以及删除添加的变化,但是程序并没有因此而跟随变化
作者: wh123wh123    时间: 2021-7-22 12:23

@powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" & pause & exit
$program = "D:\AAA.exe"
New-NetFirewallRule -DisplayName "阻断一次" -Profile Private,Public -Direction Outbound -Program $program -Action block
$count = 0
do
{
    $count += 1
    write-host "count:" $count
    Enable-NetFirewallRule -DisplayName "阻断一次"
    start-sleep 5
    disable-NetFirewallRule -DisplayName "阻断一次"
    start-sleep 8
}
while {$true}

提示错误
作者: cmd1152    时间: 2021-7-22 12:41

回复 34# wh123wh123


    我不会
作者: newswan    时间: 2021-7-22 12:53

本帖最后由 newswan 于 2021-7-22 12:55 编辑

回复 36# wh123wh123


    😓,刚才注意到,低级错误
  1. while ($true)
复制代码
另外,保存为ansi,否则中文会导致出错
作者: newswan    时间: 2021-7-22 12:57

本帖最后由 newswan 于 2021-7-22 13:01 编辑

回复 35# wh123wh123


有的程序用这种方式不行,要找到实际联网的那些。
你手动操作防火墙,看看怎么能阻止。
作者: wh123wh123    时间: 2021-7-22 13:24

回复 38# newswan

您发完整代码,看不懂刚才这是啥意思啊
作者: newswan    时间: 2021-7-22 13:30

回复 40# wh123wh123
  1. while {$true}
复制代码
改为
  1. while ($true)
复制代码

作者: wh123wh123    时间: 2021-7-22 13:50

回复  wh123wh123 改为
newswan 发表于 2021-7-22 13:30



    这不是一样嘛?
作者: newswan    时间: 2021-7-22 13:55

回复 42# wh123wh123


    () 和 {}
作者: wh123wh123    时间: 2021-7-22 13:56

本帖最后由 wh123wh123 于 2021-7-22 14:08 编辑

回复 43# newswan

.ps1这样的后缀名?没法运行啊,闪一下就消失了
作者: wh123wh123    时间: 2021-7-22 14:27

回复 43# newswan

@if(0)==(0) echo off
@powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" & pause & exit
$program = "D:\AAA.exe"
New-NetFirewallRule -DisplayName "阻断一次" -Profile Private,Public -Direction Outbound -Program $program -Action block
$count = 0
do
{
    $count += 1
    write-host "count:" $count
    Enable-NetFirewallRule -DisplayName "阻断一次"
    start-sleep 5
    disable-NetFirewallRule -DisplayName "阻断一次"
    start-sleep 8
}
while ($true)

BAT没法正常运行啊,后缀改为.ps1闪一下消失了
作者: wh123wh123    时间: 2021-7-22 20:16

在线期待老师给个完整完美版的代码,先谢谢各位老师
作者: wh123wh123    时间: 2021-7-22 20:18

回复 2# idwma

在线等老师
作者: wh123wh123    时间: 2021-7-22 22:17

本帖最后由 wh123wh123 于 2021-7-22 22:36 编辑

回复 48# idwma
不是阻断所有程序,而是只阻断某一个,例如D:/AAA.exe,阻断AAA.exe联网后不影响其他程序正常联网的那种,也就是只针对一个例如AAA.exe控制
作者: wh123wh123    时间: 2021-7-22 22:52

回复 50# idwma

正在测试,有效果,但是发现阻断网络好像和拦截效果是不是不一样?拦截的话是不是等放行后数据会一次性到?而阻断的话相当是丢包?
作者: wh123wh123    时间: 2021-7-22 22:59

回复 48# idwma
   @echo off
    netsh advfirewall set domainprofile firewallpolicy blockinbound,blockoutbound
    netsh advfirewall set privateprofile firewallpolicy blockinbound,blockoutbound
    netsh advfirewall set publicprofile firewallpolicy blockinbound,blockoutbound
netsh advfirewall firewall add rule name="允许所有" dir=out action=allow  enable=yes
    :loop
set/a n+=1
    ping -n 6 127.0.1 >nul
    echo 已断开%n%
netsh advfirewall firewall add rule name="阻断一次" dir=out action=block program="d:\阻断一次.exe" enable=yes
    ping -n 9 127.0.1 >nul
    echo 已连接%n%
netsh advfirewall firewall delete rule name="阻断一次"
    goto :loop

如果只允许AAA.exe联网,而阻断和放行其他所有联网的话怎么修改?
作者: cmd1152    时间: 2021-7-22 23:37

回复 6# wh123wh123


    这不是VBS代码
作者: newswan    时间: 2021-7-23 00:49

回复 45# wh123wh123

怎么使用powershell
http://www.bathome.net/thread-59270-1-1.html
作者: newswan    时间: 2021-7-23 00:54

本帖最后由 newswan 于 2021-7-23 01:02 编辑

回复 39# newswan


netsh 和 ps 的完全等效
你这个 aaa.exe 本身并不联网,他会启动 aaa1.exe aaa2.exe 用这些程序联网
所以,你必须找到实际联网的那个程序,才能阻止
作者: wh123wh123    时间: 2021-7-23 01:10

回复 54# idwma

如果只允许AAA.exe联网,而阻断和放行其他所有联网的话怎么修改?
    老师,您发完整代码,我比对一下才能看明白哪里不同
作者: wh1234567    时间: 2021-7-23 19:54

回复 58# idwma
::阻断除AAA.exe之外的其他程序联网后不影响AAA.exe正常联网,也就是只允许AAA.exe联网,间断性阻断和放行其他程序联网    下面代码对不对?求修正
@echo off
title=批处理阻止与解除某个exe程序的联网
netsh advfirewall set domainprofile firewallpolicy blockinbound,blockoutbound
netsh advfirewall set privateprofile firewallpolicy blockinbound,blockoutbound
netsh advfirewall set publicprofile firewallpolicy blockinbound,blockoutbound
netsh advfirewall firewall add rule name="禁止所有" dir=out action=block  enable=yes
:loop
set/a n+=1
ping -n 6 127.0.1 >nul
echo 已断开%n%
netsh advfirewall firewall add rule name="阻断所有" dir=out action=allow program="D:\AAA.exe" enable=yes
ping -n 9 127.0.1 >nul
echo 已连接%n%
netsh advfirewall firewall delete rule name="阻断所有"
goto :loop
作者: wh1234567    时间: 2021-7-23 20:29

回复 60# idwma
楼上的标题忘记修改了,
title=批处理阻止与解除某个exe程序的联网
应该是仅允许某个exe程序的联网,间断性禁止和放行其他程序联网
作者: wh1234567    时间: 2021-7-23 20:34

本帖最后由 wh1234567 于 2021-7-23 21:02 编辑

回复 60# idwma

@echo off
title=批处理阻止与解除除某个exe之外的其他程序的联网(阻断其他程序联网后不影响AAA.exe正常联网)
netsh advfirewall firewall add rule name="允许AAA.exe联网" dir=out action=allow program="D:\AAA.exe" enable=yes
:loop
set/a n+=1
ping -n 6 127.0.1 >nul
echo 已断开%n%
netsh advfirewall set allprofiles firewallpolicy blockinbound,blockoutbound
ping -n 9 127.0.1 >nul
echo 已连接%n%
netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound
goto :loop
    是这样吗?这就是我说的另外一种功能代码吗?
作者: wh1234567    时间: 2021-7-23 21:03

回复 63# idwma

呵呵呵,

    @echo off
title=全部禁止联网
netsh advfirewall set domainprofile firewallpolicy blockinbound,blockoutbound
netsh advfirewall set privateprofile firewallpolicy blockinbound,blockoutbound
netsh advfirewall set publicprofile firewallpolicy blockinbound,blockoutbound
pause
全部禁止联网的话是不是这样?
作者: wh1234567    时间: 2021-7-23 21:07

本帖最后由 wh1234567 于 2021-7-23 21:14 编辑

回复 65# idwma

那咋写?

----------请选择要执行的模式----------

1.间断性阻断AAA.exe联网后不影响其他所有程序正常联网
2.间断性阻断除AAA.exe之外的其他所有程序联网后不影响AAA.exe正常联网
3.恢复默认【全部允许正常联网】
4.全部禁止联网
0.退出


请输入数字选项[1/2/3/4/0]:
作者: wh1234567    时间: 2021-7-23 21:28

回复 67# idwma

是的,老师,您把各个功能全部放进去完善一下代码吧
作者: idwma    时间: 2021-7-23 21:29

回复 68# wh1234567


    你自己放啊,你有见过老师帮学生写作业的吗
作者: wh1234567    时间: 2021-7-23 21:34

回复 69# idwma

@echo off
setlocal EnableDelayedExpansion
@color 0a
title WIN高级防火墙的出站白名单模式控制联网
echo.
echo ----------请选择要执行的模式----------
echo.
echo  1.间断性阻断AAA.exe联网后不影响其他所有程序正常联网
echo  2.间断性阻断除AAA.exe之外的其他所有程序联网后不影响AAA.exe正常联网
echo  3.恢复默认【全部允许正常联网】
echo  4.全部禁止联网
echo  0.退出
echo.
echo.
:choose
set num=
set /p num=请输入数字选项[1/2/3/4/0]:
if "!num!"=="1" goto A
if "!num!"=="2" goto B
if "!num!"=="3" goto C
if "!num!"=="4" goto D
if "!num!"=="0" goto exit
Echo 选择无效,请重新输入
Echo.
Goto choose


:A
:echo 正在执行【仅阻断AAA.exe联网】
::阻断AAA.exe联网后不影响其他程序正常联网,也就是只针对一个exe控制
::如果不能结束进程的情况下,可以试试系统防火墙的出站白名单模式
@echo off
title=批处理阻止与解除某个exe程序的联网
netsh advfirewall set domainprofile firewallpolicy blockinbound,blockoutbound
netsh advfirewall set privateprofile firewallpolicy blockinbound,blockoutbound
netsh advfirewall set publicprofile firewallpolicy blockinbound,blockoutbound
netsh advfirewall firewall add rule name="允许所有" dir=out action=allow  enable=yes
:loop
set/a n+=1
ping -n 6 127.0.1 >nul
echo 已断开%n%
netsh advfirewall firewall add rule name="阻断一次" dir=out action=block program="D:\AAA.exe" enable=yes
ping -n 9 127.0.1 >nul
echo 已连接%n%
netsh advfirewall firewall delete rule name="阻断一次"
goto :loop
:goto A



:B
:echo 正在执行【仅阻断除AAA.exe之外的其他程序联网】
::阻断除AAA.exe之外的其他程序联网后不影响AAA.exe正常联网,也就是只允许AAA.exe联网,间断性阻断和放行其他程序联网
@echo off
title=批处理阻止与解除除某个exe之外的其他程序的联网(阻断其他程序联网后不影响AAA.exe正常联网)
netsh advfirewall firewall add rule name="允许AAA.exe联网" dir=out action=allow program="D:\AAA.exe" enable=yes
:loop
set/a n+=1
ping -n 6 127.0.1 >nul
echo 已断开%n%
netsh advfirewall set allprofiles firewallpolicy blockinbound,blockoutbound
ping -n 9 127.0.1 >nul
echo 已连接%n%
netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound
goto :loop
:goto B



:C
:echo 正在执行【全部允许正常联网】
@echo off
title=恢复默认【全部允许正常联网】
netsh advfirewall set domainprofile firewallpolicy blockinbound,AllowOutbound
netsh advfirewall set privateprofile firewallpolicy blockinbound,AllowOutbound
netsh advfirewall set publicprofile firewallpolicy blockinbound,AllowOutbound
pause
:goto C



:echo 正在执行【全部禁止联网】
@echo off
title=全部禁止联网
netsh advfirewall set domainprofile firewallpolicy blockinbound,blockoutbound
netsh advfirewall set privateprofile firewallpolicy blockinbound,blockoutbound
netsh advfirewall set publicprofile firewallpolicy blockinbound,blockoutbound
pause
:goto D
作者: wh1234567    时间: 2021-7-23 21:35

回复 69# idwma

有不对的地方请老师修正一下吧
作者: idwma    时间: 2021-7-23 21:47

回复 71# wh1234567


一百分
作者: wh1234567    时间: 2021-7-23 22:12

本帖最后由 wh1234567 于 2021-7-23 22:14 编辑

回复 72# idwma

老师不够认真,问一句回答一句  很感谢老师的辛苦帮助,谢谢了




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2