특정 시간 동안 포트를 차단하는 방법은 무엇입니까?

특정 시간 동안 포트를 차단하는 방법은 무엇입니까?

오전 1시부터 오전 3시까지 특정 시간 동안 포트를 차단하고 싶습니다. 내장된 방화벽에 규칙을 추가할 수 있지만 이로 인해 포트가 항상 차단됩니다. 특정 기간 동안만 이 작업을 수행할 수 있는 방법이 있습니까?

답변1

아니요. 작업 스케줄러로 자동화하기 위해 자체 VBS 스크립트를 만들지 않는 한 불가능합니다. 이를 위해서는 Windows 방화벽 API를 구현해야 합니다. 스크립트를 작성하면 게시하세요. 다른 사람들에게는 큰 도움이 될 것입니다.

답변2

마침내 해결책을 찾았습니다. 먼저 방화벽에서 원하는 애플리케이션을 차단하는 규칙을 추가하세요. 그런 다음 다음 명령을 사용하여 규칙을 활성화하거나 비활성화할 수 있습니다.

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

이는 주기적으로 시간을 확인하고 그에 따라 MuRule을 활성화/비활성화하는 스크립트에 추가할 수 있습니다. 배치 스크립트에서 sleep 명령을 찾을 수 없고 PowerShell을 모르기 때문에 간단한 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;
}

gcc를 사용하여 컴파일하고 관리자 권한으로 작업 스케줄러를 사용하여 로그온 시 실행합니다.

관련 정보