alphasec academy

Podręczny skaner portów w PowerShellu: 22,443,2083,8880,31337|%{"$_ - "+([Net.Sockets.TcpClient]::new()).ConnectAsync("berkeley.edu", $_).Wait(1000)}2>$null

Dodatkowe informacje

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:
  • 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ść.
Przykładowe użycie, mogłoby wyglądać tak:

Przydatne linki


Subskrybuj

Jeśli chcesz otrzymywać nowe, mięsiste protipy na maila, a także zostać czasem powiadomiony o wartościowych wydarzeniach - dołącz do subskrybentów.