示例#1
0
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
示例#2
0
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
示例#3
0
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()