端口扫描程序脚本无法运行

时间:2014-07-01 18:34:33

标签: python python-2.7

我完全不知道为什么我的脚本无效。

此脚本基本上扫描端口19打开(CHARGEN)的服务器。

您输入以下格式的ips列表:

1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4
5.5.5.5

并且脚本扫描列表中的每个ip以检查端口19是否打开,如果是,则将ip写入文件。

这是我的代码:

#!/usr/bin/env python

#CHARGEN Scanner
#Written by Expedient

import sys
import Queue
import socket
import threading

queue = Queue.Queue()

def check_ip(host, output_file, timeout):
    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(timeout)
        result = sock.connect_ex((host, 19))
        if result == 0:
            print "Found: %s" % host
            file = open(output_file, "a")
            file.write(host+"\n")
            file.close()
    except:
        pass

def add_to_queue(queue, host, output_file, timeout):
    queue.put(check_ip(host, output_file, timeout))

if len(sys.argv) < 4:
    print "Usage: %s <ip list> <output file> <timeout>" % sys.argv[0]
    sys.exit()

try:
    open(sys.argv[1])
except:
    print "Unable to open ip list."
    sys.exit()

print "Starting Expedient's CHARGEN Scanner..."

with open(sys.argv[1]) as ip_list:
    for ip in ip_list:
        thread = threading.Thread(target=add_to_queue, args=(queue, ip, sys.argv[2], float(sys.argv[3])))
        thread.start()

每当我在从nmap扫描获得的启用CHARGEN的服务器列表上运行脚本时

(我仔细检查过,每个服务器都打开了端口19),脚本没有写任何ips

到输出文件,应该是,因为列表中的每个ip都打开了端口19。

老实说,我不知道为什么这不起作用,如果有人能

那就太好了

帮我/告诉我我做错了什么。谢谢。

1 个答案:

答案 0 :(得分:1)

您发布的示例是在没有告诉您的情况下捕获check_ip函数中的所有异常(除了:传递)。你可能有任何问题导致在这个函数中引发异常,并且如果在函数的每次调用中都出现异常,那么你将得不到脚本的结果,同时也没有得到任何关于日志/控制台的反馈失败。

出于调试的目的,您应该修改异常处理以显式处理要传递的任何异常,并允许其他异常引发未处理的异常,以便您可以确定您的错误条件。