默认的DBscaner只是用了ipy模块支持一个段的解析,但是我想让他加载脚本进行检测
所以,直接看
def __init__(self, target, thread): self.target = target self.thread = thread self.ips = [] self.ports = [] self.time = time.time() self.get_ip() self.get_port() self.check = check() def get_ip(self): #获取待扫描地址段 for ip in IPy.IP(self.target): self.ips.append(str(ip))
这里用ips数组存储了ip,那么改掉这里,直接for循环我们的传进来的target
def get_ip(self): # 获取待扫描地址段 for ip in self.target: self.ips.append(str(ip))
那么,我们传入的时候,工具是用 argparse模块解析参数,但是我们是想要扫一个ip文件,所以,改掉
def main(): banner() parser = argparse.ArgumentParser(description='Example: python {} 192.168.1.0/24'.format(sys.argv[0])) parser.add_argument('target', help=u'192.168.1.0/24') parser.add_argument('-t', type=int, default=50, dest='thread', help=u'线程数(默认50)') args = parser.parse_args() myscan = DBScanner(args.target, args.thread) myscan.run()
加一个函数
def read_file(): targets = [] with open('1.txt', 'r') as f: ips = f.readlines() for ip in ips: target = ip.strip('\n') if target not in targets: targets.append(target) return targets def main(): banner() target = read_file() thread = 50 myscan = DBScanner(target, thread) myscan.run()
这里用读文件的方式,遍历后,
去重空格
target = ip.strip('\n')
去重
if target not in targets: targets.append(target)
然后,自定义线程吧,无所谓
thread = 50
ok,就可以开始跑了