def build_domain_info(): t1 = time.time() d1 = ["dsf.freebuf.com","fdsf.freebuf.com","fsdf.freebuf.com","www.freebuf.com","www.freebuf.com","www.freebuf.com","www.freebuf.com","www.freebuf.com"] d2 = d1.copy() + d1.copy() + d1.copy() + d1.copy() services.build_domain_info(d2, concurrency=10) t2 = time.time() print(t2 - t1)
def build_domain_info(self, domains): """ 构建domain_info_list 带去重功能 """ fake_list = [] domains_set = set() for item in domains: domain = item if isinstance(item, dict): domain = item["domain"] domain = domain.lower().strip() if domain in domains_set: continue domains_set.add(domain) if utils.check_domain_black(domain): continue fake = { "domain": domain, "type": "CNAME", "record": [], "ips": [] } fake_info = modules.DomainInfo(**fake) if fake_info not in self.domain_info_list: fake_list.append(fake_info) if self.task_tag == "monitor": return fake_list domain_info_list = services.build_domain_info(fake_list) return domain_info_list
def domain_data(self): if self._domain_data is None: _domain_data = services.build_domain_info(["www.baidu.com", "www.qq.com"]) domain_data = [] for x in _domain_data: domain_data.append(x.dump_json(flag=False)) self._domain_data = domain_data return self._domain_data
def ip_data(self): if self._ip_data is None: _ip_data = services.build_domain_info( ["www.baidu.com", "www.qq.com"]) ip_data = [] for x in services.port_scan(["1.1.1.1"]): x["geo_asn"] = { "number": 13335, "organization": "Cloudflare, Inc." } ip_data.append(x) self._ip_data = ip_data return self._ip_data
def test_scan_port_skip(self): scan_port_option = { "ports": ScanPortType.TEST, "service_detect": False, "os_detect": False, "skip_scan_cdn_ip": True # 跳过扫描CDN IP } domain_info = services.build_domain_info( ['www.taobao.com', 'www.aliyun.com'], concurrency=10) self.assertTrue(len(domain_info) == 2) ip_info_list = scan_port(domain_info, scan_port_option) for info in ip_info_list: self.assertTrue(info.cdn_name) self.assertTrue(len(info.port_info_list) == 2)
def set_wildcard_ip_set(self): cut_set = set() random_name = utils.random_choices(6) for domain in self.new_domain_set: cut_name = utils.domain.cut_first_name(domain) if cut_name: cut_set.add("{}.{}".format(random_name, cut_name)) info_list = build_domain_info(cut_set) wildcard_ip_set = set() for info in info_list: wildcard_ip_set |= set(info.ip_list) self.wildcard_ip_set = wildcard_ip_set logger.info("start get wildcard_ip_set {}".format( len(self.wildcard_ip_set)))
def test_scan_port(self): scan_port_option = { "ports": ScanPortType.TEST, "service_detect": False, "os_detect": False, "skip_scan_cdn_ip": False # 跳过扫描CDN IP } domain_info = services.build_domain_info( ['join.lianjia.com', 'gzh.qq.com'], concurrency=10) print(domain_info) self.assertTrue(len(domain_info) == 2) ip_info_list = scan_port(domain_info, scan_port_option) print(ip_info_list) for info in ip_info_list: self.assertTrue(info.cdn_name)