2017-03-17 8 views
0

リモートDNSサーバがポート53 UDPでリッスンしている場合、Python 3.6を使用してチェックしようとしています。Python check udp port open

def check_port(host, port): 
    import socket 
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
    s.settimeout(1) 
    try: 
     result = s.connect_ex((host, port)) 
    except socket.gaierror: 
     s.close() 
     return 1 
    s.close() 
    return result # 0 == Port is open 

しかし、私はポートが近い場合でも、すべての時間を0得る:

これは私が試したものです。 SOCK_STREAMを使用してTCPを試してみると、魅力的です。

私も試してみました:

def check_port_udp(host, port): 
    import socket 
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
    s.settimeout(1) 
    try: 
     s.sendto('ping'.encode(), (host, port)) 
     s.recvfrom(1024) 
    except socket.timeout: 
     s.close() 
     print(1) 
     return 1 
    s.close() 
    print(0) 
    return 0 # 0 == Port is open 

しかし、私はポートが、それは次のコードでは、ポート53/udpのためのスキャンであなたを助けることができる

+1

何を試しましたか?エラーは何ですか? – klutt

+1

どのようなオプションを試しましたか? – Max

+1

UDPスキャンが完全に失敗する理由については、この記事をお読みください。https://community.qualys.com/docs/DOC-1185 – Max

答えて

0

開いている場合でも、時間のすべての後、1を取得:

from socket import * 
import sys, time 
from datetime import datetime 

host = '' 
ports = [53] 

def scan_host(host, port, r_code = 1) : 
    try : 
     s = socket(AF_INET, SOCK_DGRAM) 
     code = s.connect_ex((host, port)) 
     if code == 0 : 
      r_code = code 
     s.close() 
    except Exception, e : 
     pass 
    return r_code 

try : 
    host = raw_input("[*] Enter Target Host Address : ") 
except KeyBoardInterrupt : 
    sys.exit(1) 

hostip = gethostbyname(host) 

for port in ports : 
    try : 
     response = scan_host(host, port) 
     if response == 0 : 
      print("[*] Port %d: Open" % (port)) 
    except Exception, e : 
     pass 

ポートスキャンの詳細については、this exampleを参照してください。

+0

私はこれをすでに試していて、ポートが開いていなくても常に0になっています: –

関連する問題