def computing_ports(ports): rs_list = [] if isinstance(ports,list): return ports if ports in default_ports.keys(): rs_list = default_ports.get(ports) else: ports = str(ports) ports_lev1 = ports.split(",") for p in ports_lev1: if "-" in p: port_lev2 = [int(x) for x in p.split("-")] rs_list = rs_list + range(port_lev2[0], port_lev2[1] + 1) else: rs_list.append(p) rs_list = sorted(rs_list) rs_list = [str(x) for x in rs_list] return rs_list
import threading from ProbeTool import HttpWeb from common.utils import query_service_and_banner, get_socket_banner, CommonUtils from constants import default_ports from pool.thread_pool import ThreadPool mu = threading.Lock() ports = default_ports.get("web_ports") with open("hosts.txt", "rb+") as file: ipscope = file.read() domains = CommonUtils.package_ipscope(ipscope, handle_ip=False, retType="list") def scanner(ip, port): ref_service, ref_banner = query_service_and_banner(port, "tcp") web_banner, web_service, ostype, assettype, domain, position, proext = HttpWeb.detect( ip, port) banner = web_banner if web_banner else get_socket_banner( domain, port, ref_banner) if mu.acquire(True): if proext: msg = "{proext}://{domain}:{port} {banner}\n".format( proext=proext, domain=ip, port=port, banner=banner) f = open("result.txt", "ab+") f.write(msg) f.close() mu.release() f = open("result.txt", "wb+") f.truncate()
help= "Specify Port scan range,eg: 80,443,8080 or web_ports or top_100 or top_1000" ) optparser.add_option("-f", "--file", dest="file", type="string", default="", help="asset's file") try: (options, args) = optparser.parse_args() except Exception, err: sys.exit(0) if len(sys.argv) < 2: optparser.print_help() sys.exit(0) ipscope = options.ipscope portscope = options.portscope assetfile = options.file if assetfile: with open(assetfile, "rb+") as file: ipscope = file.read() portscope = default_ports.get(portscope, portscope) test = Plugin() test.cmd_run(ipscope=ipscope, ports=portscope) if __name__ == "__main__": cmdLineParser()