我完全不知道为什么我的脚本无效。
此脚本基本上扫描端口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。
老实说,我不知道为什么这不起作用,如果有人能
那就太好了帮我/告诉我我做错了什么。谢谢。
答案 0 :(得分:1)
您发布的示例是在没有告诉您的情况下捕获check_ip函数中的所有异常(除了:传递)。你可能有任何问题导致在这个函数中引发异常,并且如果在函数的每次调用中都出现异常,那么你将得不到脚本的结果,同时也没有得到任何关于日志/控制台的反馈失败。
出于调试的目的,您应该修改异常处理以显式处理要传递的任何异常,并允许其他异常引发未处理的异常,以便您可以确定您的错误条件。