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)
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
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])