Jak mogę ustalić, czy komputer jest online bez użycia polecenia ping?


12

Kiedyś korzystałem z aplikacji, która mogła pingować lub uruchomić skanowanie portów na komputerze, nawet jeśli komputer został skonfigurowany tak, aby na to nie zezwalać.

Obecnie próbuję wysłać polecenie ping do zdalnego komputera w sieci WAN, ale skonfigurowałem maszynę tak, aby nie zezwalała na pingowanie. Czy jest coś podobnego do ping, którego mogę użyć?

Znów jest to maszyna zlokalizowana w innym mieście, które jest częścią naszej wanny.

Odpowiedzi:


4

Jeśli używasz XP / 2003 + (obejmuje to Vista / 2008/7 ), możesz użyć Win32_PingStatus . Maszyny, na których działa kod skryptu, to jedyny system, który musi być XP / 2003 +, i działa tak samo jak przy użyciu Ping.exe, tyle że nie używa ping.exe, więc powinien działać jako luka w ustawieniach zabezpieczeń, które nie zezwala na wykonanie polecenia ping.exe.

strComputer = "192.168.1.1"
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery _
    ("Select * from Win32_PingStatus " & _
        "Where Address = '" & strComputer & "'")
For Each objItem in colItems
    If objItem.StatusCode = 0 Then 
        WScript.Echo "Reply received."          
    End If
Next

Zobacz artykuł Guy Scripting, aby uzyskać więcej informacji na temat korzystania z Win32_PingStatus:

http://www.microsoft.com/technet/scriptcenter/resources/qanda/sept04/hey0914.mspx


2
Rozumiem, że host zdalny został skonfigurowany tak, aby nie odpowiadał na pakiety żądania echa ICMP, nie że ping.exe na hoście lokalnym został wyłączony. W związku z tym nie spowoduje to nic innego niż uruchomienie narzędzia ping.exe, to znaczy nic.
— David Pashley,

15

Możesz telnet na otwarty port TCP na komputerze. Na przykład, jeśli komputer jest serwerem WWW i ma otwarty port 80, po prostu:

telnet ip.ad.dre.ss 80

Będzie to działać nawet na zaszyfrowanych portach (chociaż nie będziesz w stanie zrozumieć danych)

Niektóre inne porty do wypróbowania to:

  • 443 dla serwera https
  • 22 dla ssh

(istnieje lista portów / usług w / etc / services na komputerach z linuksem)


7

Ping to ICMP, jeśli zablokowałeś ICMP, nie możesz pingować.

Nadal możesz testować porty TCP lub UDP, jeśli akceptujesz połączenia TCP / UDP.

Jeśli przeprowadzasz test na kontenerach, w których brakuje ping, nc, telnet i innych narzędzi, możesz użyć tej sztuczki:

(echo >/dev/tcp/${host}/${port}) &>/dev/null && echo "open" || echo "closed"

Spowoduje to próbę połączenia przez tcp / udp przez urządzenie (wow, wiem) i echo „otwórz”, jeśli port jest otwarty lub „zamknięty”, jeśli jest zamknięty.

W takim przypadku zawiesi się na chwilę, a następnie powtórzy „zamknij”.


2
Fajnie, musiałem użyć tego w dokerze ;-)
— Amorphous

4

Uruchom agenta SNMP na zdalnym komputerze i użyj menedżera, aby odczytać jedną ze standardowych wartości MIB.


3

Jeśli nie masz na sobie zapór ogniowych i routerów, tj. Jeśli jesteś w tym samym segmencie, co host, który próbujesz sprawdzić - większość powyższych rozwiązań jest trochę wyczerpująca.

Nie ma znaczenia, z jakim portem się łączysz, a w rzeczywistości, jeśli podłączysz się do portu, który prawdopodobnie nie uruchomi usługi, możesz wykonać zadanie bez wykrycia.

W jaki sposób?

Możesz użyć dowolnego narzędzia, które ci się podoba, ale możemy po prostu użyć telnet ...

% telnet <host> 313373
Trying 10.211.55.3...
telnet: connect to address 10.211.55.3: Connection refused
telnet: Unable to connect to remote host
%

Powinno to nastąpić natychmiast, chyba że host upuści pakiety. W rzeczywistości stos TCP / IP na hoście wysyła z powrotem segment TCP z ustawionym bitem RST - tzn. Kończy pakiet SYN.

Fakt, że otrzymałeś pakiet RST oznacza, że ​​na drugim końcu rzeczywiście znajduje się host, a jako bonus - zrobiłeś to niezauważony (TCP / IP nie miał aplikacji wyższej warstwy, z którą można by porozmawiać o tym połączeniu) .

Jednak zamiast telnet, prawdopodobnie użyłbym czegoś takiego jak scapy, napiszę coś, co szuka flagi RST i dam ci znać.

Aby to zrobić, jeśli nie ma hosta w adresie IP, którego spróbujesz - zawiesi się na chwilę, a limit czasu - to samo, co by się stało, gdyby host odbierający miał zaporę ogniową z filtrem upuszczającym.

Jeśli w grę wchodzą zapory ogniowe, jak sugerują inni, skorzystaj z narzędzi takich jak nmapi cokolwiek innego.


3

Jeśli masz dostęp do innego komputera w tej samej sieci LAN, co komputer docelowy, możesz użyć arping .

Arping działa poprzez wysyłanie pakietów ARP kierowanych na maszynę, działa to doskonale, ponieważ nie można blokować pakietów arp, jeśli chcesz korzystać z sieci (cóż, wszędzie można ustawić statyczne tabele arp: D) Ale wadą jest to, że musisz być w zasięgu ta sama sieć LAN, co twój cel arping.


1

Czy na maszynie są dostępne jakieś usługi? Jednym ze sposobów sprawdzenia, czy jest tam maszyna, jest skorzystanie z klienta Telnet, aby się z nią połączyć, ale zmieniając port, który musisz nacisnąć.

Powiedzmy, że na komputerze działa MS SQL, który domyślnie działa na porcie 1433. Używasz następującego polecenia

telnet machine-name-address 1433

Jeśli Telnet się połączy, urządzenie jest uruchomione i nie działa, nie oznacza to, że działa poprawnie, ale nasłuchuje tego portu



1

nmap -T5 -sS -P0 ho.st.ip.addr To zobaczy, co jest dostępne pod względem portów na tej maszynie. Zaleca się instalację cygwin, jeśli używasz systemu Windows lub nie masz dostępu do maszyny linux.



1

Google dla „nmap”. Używam tego cały czas. Idealne do sprawdzenia, czy zapory działają również zgodnie z oczekiwaniami. Ponadto uważam, że wspomniano o nim w filmie Matrix, co czyni go podwójnie niesamowitym.


1

Możesz kazać maszynie wysyłać pułapkę snmp (pakiet) raz na minutę do zdalnego monitora i konfigurować regułę monitorowania, że ​​co chwila otrzymujesz pułapkę.


1
To rzeczywiście dobra i bardzo poprawna odpowiedź. SNMP jest wystarczająco niski i można go skonfigurować w systemach Windows. Jest to jedyna alternatywa dla ICMP i faktycznie wykorzystywana rutynowo przez inżynierów sieciowych do monitorowania routerów i systemów za pośrednictwem sieci WAN i LAN
— Abhishek Dujari,

1

Prostym rozwiązaniem tego problemu będzie użycie narzędzia netcat. Jedynym warunkiem wstępnym tego scenariusza jest znajomość przynajmniej jednego portu otwartego na tym zdalnym komputerze.

nc -nv adres_IP numer_portu

Powyższe polecenie da wynik, który określi, czy wspomniany port jest otwarty, czy nie, a tym samym dostępność maszyny


0

Możesz zainstalować prosty serwer WWW i użyć strony internetowej z napisem „ONLINE”. Musisz się z nim połączyć tylko tam, gdzie chcesz. Oczywiście potrzebujesz statutu ip lub usług linke dyndns


0

Bardzo prostym podejściem jest telnet do portu TCP, który powinien być otwarty na serwerze, tj .:

telnet theServerHostname 80

Chociaż jeśli usługa nie działa, wynik będzie taki sam, jak w przypadku awarii hosta.

Istnieje wiele rodzajów skanów, które można wykonać za pomocą nmap, dowiedz się o nich na stronie nmap i powinieneś zostać ekspertem w testowaniu, czy host działa. Obejmują one używanie protokołów innych niż icmp (ping), takich jak TCP (jak robi to telnet) i UDP.

Ponadto, jeśli chcesz czegoś, co obejmuje możliwość połączenia z udp, co w tym sensie przypomina telnet, rozważ netcat .


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.