def test_target_time_elapsed_ip(): target = Target(None, "127.0.0.1") time.sleep(0.1) target.stop_timer() assert target.elapsed_time is not target.start_time assert target.finish_time > target.start_time assert target.elapsed_time > 0 assert target.time_taken is not None
def test_target_time_elapsed_hostname(): target = Target("example.com", "127.0.0.1") time.sleep(0.1) target.stop_timer() assert target.elapsed_time is not target.start_time assert target.finish_time > target.start_time assert target.elapsed_time > 0 assert target.time_taken is not None
def scan_target(target: str) -> None: """ Scan the target passed :param target: Target IP/hostname to scan """ try: # See if the target is an IP network ip_network = ipaddress.ip_network(target, strict=False) if ip_network.version is 6: raise NotImplementedError("IPv6 addresses are not yet supported") for x in range(ip_network.num_addresses): ip = ip_network[x] tgt = Target(None, ip) ModuleProvider.analyse(tgt) tgt.stop_timer() except ValueError: # It's not an IP address or a subnet, # so most likely a hostname if target.startswith("www."): www_warning = utils.terminal_width_string( "Target starts with \"www.\" - this is not recommended as it can lead to false positives in modules " " - for example, when checking URLs for internal links. Do you want to remove \"www.\" from the URL?" ) print(utils.warning_message(), www_warning) agree = utils.input_message("[Y]es or [N]o: ") if agree.lower() == "y": target = target.replace("www.", "") print(utils.normal_message(), "Removed \"www.\" from target, now \"{TARGET}\"".format(TARGET=target)) else: print(utils.warning_message(), "Retaining \"www.\" in target") hostname_info = socket.getaddrinfo(target, None, socket.AF_INET) ip = ipaddress.ip_address(hostname_info[0][4][0]) tgt = Target(target, ip) ModuleProvider.analyse(tgt) tgt.stop_timer() print()