alphasec
PowerShell protip 007b
in 𝕏

Podręczny skaner portów w PowerShellu

tty1 · powershell
PS> 22,443,2083,8880,31337|%{"$_ - "+([Net.Sockets.TcpClient]::new()).ConnectAsync("berkeley.edu", $_).Wait(1000)}2>$null
#Powershell#RedTeam#Recon

Ten dość nieelegancki oneliner to bardzo prosta implementacja skanera portów TCP, który spróbuje się podłączyć na wskazane porty ( 22,443,2083,8880,31337) hosta berkeley.edu.

Rozkładająć go na części pierwsze, mamy:

Przykładowe użycie, mogłoby wyglądać tak:

Jak to działa — krok po kroku

Rozłóżmy onelinera na czynniki pierwsze:

22,443,2083,8880,31337

tablica reprezentująca interesujące nas porty TCP,

|% { ... }

wysłanie elementów tablicy do bloku skryptu umieszczonego w nawiasie klamrowym; dla przypomnienia, % to alias na ForEach-Object,

"$_ - "+([Net.Sockets.TcpClient]::new()).ConnectAsync("berkeley.edu", $_).Wait(1000)

dla każdego numeru portu zawartego w zmiennej $_ następuje próba połączenia ze wskazanym hostem z wykorzystaniem obiektu klasy Net.Sockets.TcpClient. Dzięki wykorzystaniu metody ConnectAsync skrypt nie blokuje się, więc sami za pomocą metody Wait określamy jak długo chcemy czekać na połączenie,

2>$null

połączenie może się nie udać, natomiast nie interesuje nas komunikat błędu lecz zwracany status (który niejawnie rzutujemy na string), a więc strumień wyjścia błędów (strumień u numerze 2) przekierowujemy do zmiennej $null czyli w nicość.

Podręczny skaner portów w PowerShellu

Przydatne linki

learn.microsoft.com/en-us/dotnet/api/system.net.sockets.tcpclient dokumentacja klasy TcpClient web ↗
← poprzedni protip 007a ••• Wszystkie protipy następny → protip 007c
// subskrybuj

Nowe protipy prosto na maila.

Mięsiste jednolinijkowce i triki z prawdziwych zleceń. Zero spamu, zero teorii. Wypisujesz się jednym kliknięciem.

wersja newslettera: