예제 #1
0
def host_dns_lookup(host):
    cmd = 'dig +short {}'
    ips = []
    if is_ip(host):
        return ips
    output = run_process(cmd.format(host))
    for line in output:
        sep = line.strip()
        if sep.startswith(';'):
            continue
        if is_ip(sep):
            ips.append(sep)
    return ips
예제 #2
0
def host_reverse_dns_lookup(host, use_dig=True):
    cmd_nmap = 'nmap -Pn  -sL -oG - {}'
    cmd_dig = 'dig +short {}.in-addr.arpa. PTR'
    cmd_dig_2 = 'dig +short -x {}'

    dns = ''
    if not is_ip(host):
        return dns
    # using dig
    if use_dig:
        output = run_process(cmd_dig.format(reverse_ip(host)))
        if output:
            sep = output[0].strip().strip('.')
            if sep and not sep.startswith(';'):
                dns = sep
        return dns
    # using nmap
    output = run_process(cmd_nmap.format(host))
    for line in output:
        sep = line.split()
        if len(sep) != 5 or sep[0].strip().lower() != 'host:':
            continue
        sep = sep[2].strip('()')
        if sep and not sep.startswith(';'):
            dns = sep
            break
    return dns
예제 #3
0
def get_name_server_bind_version(ns):
    cmd = 'dig +short chaos txt version.bind  @{}'
    bind_version = ''
    if is_ip(ns):
        return ns
    output = run_process(cmd.format(ns))
    for line in output:
        if line.startswith(';') or line.startswith('dig:'):
            continue
        sp = line.strip()
        if sp:
            return sp
    return bind_version
예제 #4
0
def host_name_server(host):
    cmd = 'dig +short NS {}'
    ns = []
    if is_ip(host):
        return ns
    output = run_process(cmd.format(host))
    for line in output:
        if line.startswith(';'):
            continue
        sp = line.strip().strip('.')
        if sp:
            ns.append(sp)
    return ns
예제 #5
0
def host_dns_any_query(host):
    cmd = 'dig +nocomments +nostats +nocmd +noquestion  any {}'
    dns_any_r = []
    if is_ip(host):
        return dns_any_r
    output = run_process(cmd.format(host))
    for line in output:
        if line.startswith(';') or line.startswith('dig:'):
            continue
        sep = line.strip().split()
        if len(sep) < 4:
            continue
        dns_any_r.append((sep[0], sep[3], " ".join(sep[4:])))
    return dns_any_r
예제 #6
0
def host_dnssec(host):
    cmd = 'dig +nocomments +nostats +nocmd +noquestion -t dnskey {}'
    dnssec = []
    if is_ip(host):
        return dnssec
    output = run_process(cmd.format(host))
    for line in output:
        if line.startswith(';') or line.startswith('dig:'):
            continue
        sep = line.strip().split()
        if len(sep) < 4:
            continue
        if sep[3].lower() == 'dnskey':
            dnssec.append((sep[0], sep[3], " ".join(sep[4:])))
    return dnssec
예제 #7
0
def host_dns_wildcard(host):
    cmd_w = 'dig +noall +answer *.{}'
    cmd_r = 'dig +noall +answer {}.{}'
    wildcard_dns = []
    if is_ip(host):
        return wildcard_dns
    random_sub_domain = 'never_exist_{}'.format(generate_chars(4))
    output_1 = run_process(cmd_w.format(host))
    output_2 = run_process(cmd_r.format(random_sub_domain, host))
    outputs = [output_1, output_2]
    for output in outputs:
        for line in output:
            if line.startswith(';') or line.startswith('dig:'):
                continue
            sep = line.strip().split()
            if len(sep) < 4:
                continue
            wildcard_dns.append((sep[0], sep[3], " ".join(sep[4:])))
    return wildcard_dns
예제 #8
0
def host_list(host):
    # @todo, don't use nmap, move to utility
    cmd = 'nmap -Pn -sn -n  -sL -oG - -oN - -vvvvv --packet-trace {}'
    hosts = []
    sep_ips = []
    single_ips = []
    domains = []
    for each_host in host.split():
        if is_ip(each_host) or is_ip_range(each_host):
            sep_ips.append(each_host)
        else:
            domains.append(each_host)
    output = run_process(cmd.format(" ".join(sep_ips)), console=False)
    for line in output:
        if line.lower().startswith('host:'):
            sep = line.split()
            single_ips.append(sep[1])

    return single_ips, domains
예제 #9
0
파일: net.py 프로젝트: omidraha/cop
def host_list(host):
    # @todo, don't use nmap, move to utility
    cmd = 'nmap -Pn -sn -n  -sL -oG - -oN - -vvvvv --packet-trace {}'
    hosts = []
    sep_ips = []
    single_ips = []
    domains = []
    for each_host in host.split():
        if is_ip(each_host) or is_ip_range(each_host):
            sep_ips.append(each_host)
        else:
            domains.append(each_host)
    output = run_process(cmd.format(" ".join(sep_ips)), console=False)
    for line in output:
        if line.lower().startswith('host:'):
            sep = line.split()
            single_ips.append(sep[1])

    return single_ips, domains