2017-10-29 6 views
3

自分の名前とポートをプリントアウト:のpython私は次のコードは2.7 Pythonで書かれている

#...import stuff 

remoteServer = raw_input("Enter a remote host to scan: ") 
remoteServerIP = socket.gethostbyname(remoteServer) 

print "Please wait, scanning remote Host", remoteServerIP 

try: 
    for port in xrange(1, 1024): 
     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
     result = sock.connect_ex((remoteServerIP, port)) 
     if result == 0: 
      print "port {}: open".format(port) 
     sock.close 

except KeyboardInterrupt: 
    print "\nexiting..." 
    sys.exit() 

出力:

Enter a remote host to scan: www.myexamplesite.com 
Please wait, scanning remote Host xxx.xxx.xx.xx 
port 21: open 
port 22: open 
... 

しかし、問題は、私はまたしているどのポートを知ってほしいということです使用され、彼らは同じように使用されている何のために:

#... as usual 
port 1 httpserver 
port 2 chat server 
... 

しかし、これは1から1024のポートだけを印刷しています これを行うための機能/方法はありますか?

+0

IANAは_ [サービス名とトランスポートプロトコルポート番号レジストリ](https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml)_、アプリケーションがポートを非標準的な方法で使用していることを保証するものではありません。たとえば、ホストが標準HTTPポート80を全く別のものに使用している可能性があります。 –

答えて

2

socket.getservbyport()は(/etc/servicesを経由して)、そのポート上で実行されている予想サービスにポート番号を変換しますが、実際に本当に実行されているかを調べるためにポート経由で通信しません。

+0

しかし、私はほとんどのサーバーが同じもののために同じポートを使用していると思いますか? – fipsi

関連する問題