def test_generate_id(self): random_id = generate_id(size=1, chars="a") self.assertEqual(random_id, 'a') random_id = generate_id(size=10) self.assertEqual(len(random_id), 10) self.assertTrue(random_id.isalnum())
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 create_data(gmp, count): config_ids = [] target_ids = [] for _ in range(0, count): name = generate_id() gmp.create_credential( name, login=name, password=name, credential_type=gmp.types.CredentialType.PASSWORD_ONLY, ) print(str(count) + ' random credentials generated.') for _ in range(0, count): name = generate_id() gmp.create_port_list(name, port_range='T:1-42') print(str(count) + ' random port lists generated.') for _ in range(0, count): name = generate_id() res = gmp.create_config('085569ce-73ed-11df-83c3-002264764cea', name) config_ids.append(res.xpath('@id')[0]) print(str(count) + ' random scan configs generated.') for _ in range(0, count): name = generate_id() res = gmp.create_target(name, hosts=['127.0.0.1']) target_ids.append(res.xpath('@id')[0]) print(str(count) + ' random targets generated.') for _ in range(0, count): name = generate_id() config_id = choice(config_ids) target_id = choice(target_ids) gmp.create_task( name, config_id, target_id, '08b69003-5fc2-4037-a479-93b440211c73' ) print(str(count) + ' random tasks generated.')
def generate_result_elem(vulns, host_ip, host_port, host_asset, host_name): result_elem = e.Element('result', {'id': generate_uuid()}) e.SubElement(result_elem, 'name').text = "a_result" + generate_id() own = e.SubElement(result_elem, 'owner') e.SubElement(own, 'name').text = generate_id() elem = e.Element('modification_time') e.SubElement(result_elem, 'modification_time').text = ( time.strftime("%Y-%m-%dT%H:%M:%S%z", time.localtime(time.time()))[:-2] + ':00' ) # Hell of a Timeformat :D e.SubElement(result_elem, 'comment').text = '' e.SubElement(result_elem, 'creation_time').text = ( time.strftime("%Y-%m-%dT%H:%M:%S%z", time.localtime(time.time() - 20))[ :-2 ] + ':00' ) host_elem = e.Element('host') host_elem.text = host_ip e.SubElement(host_elem, 'asset', {'asset_id': host_asset}).text = '' e.SubElement(host_elem, 'hostname').text = host_name result_elem.append(host_elem) port_elem = e.Element('port') port_elem.text = host_port result_elem.append(port_elem) nvt = vulns[randrange(len(vulns))] e.SubElement(result_elem, 'severity').text = nvt['severity'] nvt_elem = e.Element('nvt', {'oid': nvt['oid']}) result_elem.append(nvt_elem) e.SubElement(result_elem, 'notes').text = 'TestNotes' result_elem.append(elem) return result_elem, nvt['oid'], nvt['severity']