0

我尝试在家中扫描网络上的可用端口。但是我遇到了一些问题和错误。有人能告诉我我的剧本出了什么问题吗

这是我的脚本

#!/usr/bin/env python 

import socket, sys
from optparse import OptionParser 

def scan_server(address, port): 
s = socket.socket() 
 print "Attempting to connect to %s on port %s." %(address, port) 
 try: 
     s.connect((address, port)) 
     print "Connected to server %s on port %s." %(address, port) 
     return True 
 except socket.error, e: 
     print "Connecting to %s on port %s failed with the following error: %s" %(address, 
     port, e) 
     return False

if __name__ == '__main__': 
 parser = OptionParser() 
 parser.add_option("-a", "--address", dest="address", default="localhost",      
 parser.add_option("-p", "--port", dest="port", help="PORT for server", metavar="PORT") 
 (options, args) = parser.parse_args() 
 if options.port == 'all': 
     print 'checking all ports...' 
 for x in range(1,65536): 
     print 'checking port %s on %s' %(x, options.address) 
     check = scan_server(options.address, x) 
     print 'scan_server returned %s' %(check) 
 else: 
     options.port = int(options.port) 
     print 'options: %s, args: %s' %(options, args) 
     check = scan_server(options.address, options.port) 
     print 'scan_server returned %s' %(check) 
     Ssys.exit(not check)

这是我的错误

检查 localhost 上的端口 1 尝试连接到端口 1 上的 localhost。连接到端口 1 上的 localhost 失败,出现以下错误:[Errno 10061] 无法建立连接,因为目标机器主动拒绝它 scan_server 返回 False 检查 localhost 上的端口 2

尝试连接到端口 2 上的 localhost。连接到端口 2 上的 localhost 失败并出现以下错误:[Errno 10061] 无法建立连接,因为目标机器主动拒绝它 scan_server 返回 False 检查 localhost 上的端口 3

尝试连接到端口 3 上的 localhost。连接到端口 3 上的 localhost 失败并出现以下错误:[Errno 10061] 无法建立连接,因为目标机器主动拒绝它 scan_server 返回 False 检查 localhost 上的端口 4

尝试连接到端口 4 上的 localhost。连接到端口 4 上的 localhost 失败,出现以下错误:[Errno 10061] 无法建立连接,因为目标机器主动拒绝它 scan_server 返回 False 检查 localhost 上的端口 5

尝试连接到端口 5 上的 localhost。连接到端口 5 上的 localhost 失败,出现以下错误:[Errno 10061] 无法建立连接,因为目标机器主动拒绝它 scan_server 返回 False 检查 localhost 上的端口 6

尝试在端口 6 上连接到 localhost。

4

1 回答 1

5

没有错误。您的本地机器(您正在扫描的机器)在这些端口上没有任何监听,因此连接被拒绝。

我不确定您所说的“可用端口”是什么意思。操作系统将拒绝任何没有绑定任何东西的端口上的连接。在类似 Linux 的操作系统上,有一个名为的系统调用bind,它将程序注册为打算在该端口上侦听。您机器上的绝大多数端口都是“可用的”,因为它们没有任何绑定。

这里是常用端口的参考

于 2013-06-06T17:18:09.550 回答