Como bloquear uma porta para uma hora específica?

3

Eu quero bloquear uma porta por um período de tempo específico, digamos de 1h às 3h. Eu posso adicionar uma regra ao firewall embutido, mas isso bloqueia a porta o tempo todo. Existe alguma maneira de fazer isso apenas por um período específico de tempo?

    
por Serious 19.08.2012 / 15:10

2 respostas

2

Não. Não é factível a menos que você faça seu próprio script VBS para automatizar com o Agendador de Tarefas. Para o qual você precisa implementar a API do Firewall do Windows. Se oyu fizer um script, poste. Seria de imensa ajuda para os outros.

    
por 19.08.2012 / 15:20
0

Finalmente, encontrei uma solução. Primeiro adicione uma regra para bloquear o aplicativo desejado no firewall. Então a regra pode ser ativada ou desativada usando o comando:

netsh advfirewall firewall set rule name="MyRule" new enable=yes

Isso pode ser adicionado a um script que verifica periodicamente a hora e ativa / desativa o MuRule de acordo. Não consegui encontrar o comando sleep no script em lote e não conheço o PowerShell, por isso escrevi um programa simples em c ++.

#include<ctime>
#include<windows.h>
using namespace std;

int main()
{//code for hiding console
    HWND window; 
    AllocConsole();
    window = FindWindowA("ConsoleWindowClass", NULL);
    ShowWindow(window,0);

    Sleep(60*1000);// 1 min delay
    time_t now;
    struct tm *current;
    now = time(0);
    while(1)
    {
    current = localtime(&now);
    if(current->tm_hour>=22||current->tm_hour<=6) // 10 pm to 6 am
        system ("netsh advfirewall firewall set rule name=\"MyRule\" new enable=yes");
    else
        system ("netsh advfirewall firewall set rule name=\"MyRule\" new enable=no");
    Sleep(10*60*1000);// 10 min delay
    }
    return 0;
}

Compile usando o gcc e execute no logon usando o Agendador de Tarefas com privilégios de administrador.

    
por 02.10.2012 / 13:34