# Port scanner en PowerShell

> Escanear puertos **desde la víctima Windows sin nmap** (útil tras un foothold para mirar la red interna, antes de montar Pivoting ligolo-ng). Usa Operadores PowerShell.

## Con timeout (NO se cuelga)
```powershell
1..200 | % { $c=New-Object Net.Sockets.TcpClient; $r=$c.BeginConnect("IP",$_,$null,$null); if($r.AsyncWaitHandle.WaitOne(300) -and $c.Connected){"Puerto $_ ABIERTO"}; $c.Close() }
```

## Solo puertos concretos (instantáneo)
```powershell
53,88,135,139,445 | % { $c=New-Object Net.Sockets.TcpClient; $r=$c.BeginConnect("IP",$_,$null,$null); if($r.AsyncWaitHandle.WaitOne(300) -and $c.Connected){"$_ ABIERTO"}; $c.Close() }
```

## Test rápido de un puerto
```powershell
Test-NetConnection IP -Port 53 -wa 0 -ea 0   # mira TcpTestSucceeded : True/False
```

## La regla clave
- `$c.Connect()` = **síncrono**, se cuelga ~21s en puertos filtrados.
- `$c.BeginConnect()+WaitOne(ms)` = controlas el timeout, **NO se cuelga**.
- Para líneas largas: `notepad scan.ps1` y `powershell -ep bypass -File .\scan.ps1`.

Relacionado: Nmap · Puertos olvidados · OSCP MOC
