Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
1.8 kB
3
Indexable
Never
param (
    [string]$rutaBase,
    [switch]$EliminarReglas
)

# Función para crear reglas de Firewall para bloquear conexiones
function CrearReglasDeFirewall {
    param (
        [string]$rutaBase
    )

    # Obtiene todos los archivos .exe de forma recursiva en la ruta base
    $exeFiles = Get-ChildItem -Path $rutaBase -Filter *.exe -File -Recurse

    # Itera a través de cada archivo .exe y crea reglas en el Firewall de Windows
    foreach ($file in $exeFiles) {
        $ruleName = "Block $($file.Name)"

        # Crea una regla para bloquear salidas
        New-NetFirewallRule -DisplayName $ruleName -Direction Outbound -Action Block -Program $file.FullName

        # Crea una regla para bloquear entradas
        New-NetFirewallRule -DisplayName $ruleName -Direction Inbound -Action Block -Program $file.FullName
    }

    Write-Host "Se han creado las reglas de Firewall para bloquear todos los archivos .exe en $rutaBase."
}

# Función para eliminar las reglas de Firewall creadas por el script
function DeshacerCambiosDeFirewall {
    param (
        [string]$rutaBase
    )

    # Obtiene todas las reglas de Firewall creadas por el script
    $ruleNames = Get-NetFirewallRule | Where-Object { $_.DisplayName -like "Block *.exe" }

    # Elimina las reglas una por una
    foreach ($ruleName in $ruleNames) {
        Remove-NetFirewallRule -Name $ruleName.Name
    }

    Write-Host "Se han eliminado las reglas de Firewall creadas por el script en $rutaBase."
}

# Si se pasa la flag -EliminarReglas, llama a la función para eliminar las reglas
if ($EliminarReglas) {
    DeshacerCambiosDeFirewall -rutaBase $rutaBase
}
# Si no, llama a la función para crear las reglas de Firewall
else {
    CrearReglasDeFirewall -rutaBase $rutaBase
}