Mam gdzieś uruchomiony serwer gniazd Pythona (jednowątkowy, akceptuje tylko jedno połączenie).
Łączę się z tym portem i robię swoje rzeczy.
Jak mogę wykryć, czy port jest otwarty czy zamknięty bez nawiązywania połączenia? To znaczy, nie chcę zamykać portu, aby zobaczyć, czy jest otwarty, czy nie :-)
Próbowałem już, nc -zvv ip port
ale to zamyka skrypt (ponieważ faktycznie łączy się z portem).
networking
python
port
sockets
vfsoraki
źródło
źródło
nmap
?Odpowiedzi:
Użyj narzędzia do skanowania portów, takiego jak
nmap
. Po uruchomieniu z wystarczającymi uprawnieniami (w Linuksie konieczne jest uprawnienie cap_net_raw, „root” w innych systemach uniksowych) narzędzie ma kilka trybów skanowania, które nie wymagają ukończenia uzgadniania TCP.Domyślny tryb skanowania, gdy jest uprzywilejowany, to „skanowanie TCP SYN” (
-sS
opcja), który próbuje uruchomić uzgadnianie TCP, ale natychmiast go resetuje. W ten sposób program nie jest informowany o próbie połączenia, ponieważ nie było żadnego połączenia.Aby przeskanować określone porty, dodaj
-p <ports>
opcję.źródło