Sobes.tech
Junior

Kaip patikrinti, ar prievadas yra atidarytas nuotoliniame arba vietiniame kompiuteryje?

sobes.tech AI

Atsakymas iš AI

Norint patikrinti atvėrusįjį prievadą nuotoliniame arba vietiniame kompiuteryje, galima naudoti šiuos būdus:

  1. netcat (nc): Universalus įrankis tinklo ryšiams.

    • Vietiniam kompiuteriui:
      nc -zv localhost <prievadas>
      
    • Nuotoliniam kompiuteriui:
      nc -zv <nuotolinis_kompiuteris> <prievadas>
      

    Parinktys -z (nulis-I/O režimas) ir -v (detalus) naudojamos skenavimui be duomenų siuntimo ir išsamiai informacijai.

  2. telnet: Nuotolinio valdymo protokolas, kuris gali būti naudojamas patikrinti jungtį per nurodytą prievadą:

    • Vietiniam kompiuteriui:
      telnet localhost <prievadas>
      
    • Nuotoliniam kompiuteriui:
      telnet <nuotolinis_kompiuteris> <prievadas>
      

    Jei jungtis sėkminga (dažniausiai pasirodo užklausos arba tuščia eilutė), prievadas atviras. Uždaryti galima paspaudus Ctrl+], tada quit ir Enter.

  3. nmap: Galingas prievadų skeneris. Reikalauja įdiegimo:

    • Vietiniam kompiuteriui:
      nmap -p <prievadas> localhost
      
    • Nuotoliniam kompiuteriui:
      nmap -p <prievadas> <nuotolinis_kompiuteris>
      

    Išvestis parodys prievado būseną: open, closed arba filtered.

  4. < /dev/tcp arba < /dev/udp (Bash): Bash galima naudoti failų deskriptorius TCP arba UDP ryšiams kurti:

    • Vietiniam kompiuteriui (TCP):
      timeout 1 bash -c "cat < /dev/tcp/localhost/<prievadas>" 2>/dev/null && echo "Port <prievadas> yra atviras" || echo "Port <prievadas> yra uždarytas"
      
    • Nuotoliniam kompiuteriui (TCP):
      timeout 1 bash -c "cat < /dev/tcp/<nuotolinis_kompiuteris>/<prievadas>" 2>/dev/null && echo "Port <prievadas> yra atviras" || echo "Port <prievadas> yra uždarytas"
      

    timeout naudojamas siekiant išvengti užšalimo, jei prievadas uždarytas. 2>/dev/null paslepia klaidų išvestį. Šis metodas neveikia UDP.

  5. Python: Naudojant soketus patikrinimui:

    import socket
    
    def check_port(host, port):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(1)  # Nustatyti laiką
        try:
            s.connect((host, port))
            print(f"Port {port} on {host} yra atviras")
        except (socket.timeout, ConnectionRefusedError):
            print(f"Port {port} on {host} yra uždarytas arba filtruotas")
        finally:
            s.close()
    
    # Pavyzdys naudojimo
    check_port("localhost", 80)       # Vietinio kompiuterio patikrinimas
    check_port("google.com", 443)  # Nuotolinio kompiuterio patikrinimas
    

Pasirinkimas priklauso nuo turimų įrankių, operacinės sistemos ir užduoties specifikos. netcat ir nmap yra vieni iš lankstesnių ir informatyviausių įrankių.