6063 Letture
Porte aperte sul PC locale con un semplice script PowerShell

Porte aperte sul PC locale con un semplice script PowerShell

Un semplice script PowerShell pronto per essere avviato che permette non soltanto di ottenere la lista delle porte aperte sul sistema Windows ma anche di capire quali applicazioni e quali utenti le stanno usando.

Netstat è un comando integrato nelle varie versioni di Windows che permette di ottenere una lista delle porte TCP e UDP aperte sul sistema in uso. Si tratta di un comando molto versatile, del quale abbiamo parlato a suo tempo nell'articolo Come controllare porte aperte su router e IP pubblico e che consigliamo di usare aprendo il prompt dei comandi con i diritti di amministratore (scrivere cmd nella casella di ricerca di Windows quindi premere la combinazione di tasti CTRL+MAIUSC+INVIO) usando la sintassi seguente: netstat -naob.

L'unico problema di Netstat è che l'output prodotto è davvero poco leggibile. Sfruttando la potenza di PowerShell (Windows PowerShell, come funziona l'interfaccia che sostituisce il prompt dei comandi) e in particolare le tre funzioni Get-Process, Get-NetTCPConnection e Get-NetUDPEndpoint è possibile ottenere un resoconto dettagliato su tutte le porte di comunicazione in uso sul sistema, su quelle in ascolto e su quelle ove sia stata già stabilita una connessione.


Lo script PowerShell in questione è stato realizzato da Rob VandenBrink e presentato in questa pagina.
Noi l'abbiamo semplicemente reso "pronto per l'uso" e vi abbiamo integrato tre comandi che consentono di:

- Conoscere l'elenco di tutte le porte attualmente utilizzate sulla macchina dal sistema operativo e da tutte le applicazioni installate
- Estrarre la lista delle porte aperte (Listen)
- Estrarre l'elenco delle connessioni già stabilite (Established)

In pratica, utilizzando le funzionalità di filtering proprie di PowerShell, è possibile elaborare automaticamente l'elenco completo ed estrarre le comunicazione che recano le "etichette" Listen ed Established.


Come usare lo script PowerShell per ottenere l'elenco delle porte di comunicazione in uso su Windows

Per usare lo script è necessario, innanzi tutto, scaricare questo file compresso ed estrarne il contenuto in una cartella di propria scelta (ad esempio c:\ports).

A questo punto si dovrà digitare cmd nella casella di ricerca di Windows e premere la combinazione di tasti CTRL+MAIUSC+INVIO per aprire il prompt dei comandi con i diritti di amministratore.

Qui si dovrà digitare cd c:\ports quindi scrivere ports.cmd > porte.txt && notepad porte.txt e premere Invio.

Porte aperte sul PC locale con un semplice script PowerShell

Verrà così generato un file di testo chiamato porte.txt e aperto direttamente con il Blocco Note di Windows.

Ingrandendo la finestra del Blocco Note, si noterà la presenza di diverse colonne: le prime due riportano gli indirizzi IP locali e remoti coinvolti nella comunicazione; si prosegue poi con il tipo di protocollo utilizzato (TCP o UDP) e la porta (sul sistema locale e su quello remoto). Nelle ultime colonne si hanno informazioni sullo stato della comunicazione, sul nome utente e sul processo che ha richiesto lo scambio di dati.

La prima parte del report creato sotto forma di file di testo e consultabile usando il Blocco Note, mostra tutte le comunicazioni; scorrendo più in basso si troverà la lista delle porte attualmente in ascolto (Listen) e più in basso le comunicazioni già stabilite (Established).


Un ottimo sistema, immediato da utilizzare, per capire cosa sta accadendo sul singolo PC e accertare quali programmi hanno funzionalità server attive.

Per scendere più in profondità consigliamo l'utilizzo di Wireshark: vedere gli articoli Wireshark, una breve guida all'uso e Velocità connessione insoddisfacente: come viene usata la banda.

Porte aperte sul PC locale con un semplice script PowerShell