예제 #1
0
    def test_generate_random_ips(self):
        random_ip = generate_random_ips(1)
        ip_addr = ipaddress.ip_address(random_ip[0])
        self.assertEqual(ip_addr.version, 4)
        self.assertEqual(str(ip_addr), random_ip[0])

        num = 10
        random_ips = generate_random_ips(num)
        self.assertEqual(len(random_ips), num)
예제 #2
0
def generate_inner_report(rep_id, n_results, n_hosts, data, **kwargs):
    report_elem = e.Element('report', attrib={'id': rep_id})
    results_elem = e.SubElement(report_elem, 'results', {
        'max': str(n_results),
        'start': '1'
    })

    # Create Hosts, Ports, Data
    hosts = generate_random_ips(n_hosts)  # Host IPs
    ports = generate_ports(n_hosts)
    oid_dict = {host: [] for host in hosts}
    asset_dict = {host: generate_uuid() for host in hosts}
    host_names = {host: generate_id() for host in hosts}
    max_sev = 0.0

    # Create <result> tags with random data
    for _ in range(n_results):
        host_ip = choice(hosts)
        host_port = choice(ports)
        result_elem, oid, severity = generate_result_elem(
            data["vulns"],
            host_ip,
            host_port,
            asset_dict[host_ip],
            host_names[host_ip],
        )
        if float(severity) > max_sev:
            max_sev = float(severity)

        oid_dict[host_ip].append(oid)
        results_elem.append(result_elem)

    e.SubElement(report_elem, "result_count").text = str(n_results)

    sev_elem = e.Element("severity")
    e.SubElement(sev_elem, "full").text = str(max_sev)
    e.SubElement(sev_elem, "filtered").text = str(max_sev)

    report_elem.append(sev_elem)

    # Create <host> tags with random data
    for host in hosts:
        if len(oid_dict[host]) > 0:
            report_elem.append(
                generate_host_elem(
                    host,
                    oid_dict[host][0],
                    asset_dict[host],
                    host_names[host],
                    data=data,
                    **kwargs,
                ))

    return report_elem
예제 #3
0
def generate(gmp, args, n_targets, n_ips):
    ips = generate_random_ips(n_ips)

    if 'with-gauss' in args.script:
        n_targets = int(gauss(n_targets, 2))

    for i in range(n_targets):
        host_ip = choice(ips)
        index = '{{0:0>{}}}'.format(len(str(n_targets)))
        name = 'Target_{}'.format(index.format(i + 1))

        gmp.create_target(name=name, make_unique=True, hosts=[host_ip])