#include "scan_repertoire.h" #include #include #include void scan_init(struct scan *s, char *name, char *MATTACK, cap_execute run, cap_guard guard, enum SCAN_RANGE s_r, enum SCAN_TARGETS s_t, enum SCAN_DURATION s_d, enum SCAN_COMPLEXITY s_c) { strncpy(s->name, name, sizeof(s->name)); strncpy(s->MATTACK, MATTACK, sizeof(s->MATTACK)); s->run = run; s->guard = guard; s->s_r = s_r; s->s_t = s_t; s->s_d = s_d; s->s_c = s_c; } void scan_print(struct scan *s) { printf("%s:\n", s->name); printf(" - MITRE ATTCK: %s\n", s->MATTACK); } void scan_repertoire_init(struct scan_repertoire *s_r) { s_r->num_scans = 0; s_r->max_scans = SCAN_REPERTOIRE_INIT_NUM_SCANS; s_r->scans = malloc(s_r->max_scans * sizeof(struct scan)); } void scan_repertoire_destroy(struct scan_repertoire *s_r) { free(s_r->scans); } void scan_repertoire_add_scan(struct scan_repertoire *s_r, struct scan *s) { if(s_r->num_scans >= s_r->max_scans) { s_r->max_scans *= 2; s_r->scans = realloc(s_r->scans, s_r->max_scans * sizeof(struct scan)); } s_r->scans[s_r->num_scans] = *s; s_r->num_scans++; } void scan_repertoire_print(struct scan_repertoire *s_r) { printf("[Scans]\n"); for(size_t i=0;inum_scans;i++) { scan_print(&s_r->scans[i]); } } struct scan *scan_repertoire_get_scan(struct scan_repertoire *s_r, char *scan) { for(size_t i=0;i < s_r->num_scans;i++) { if(strcmp(s_r->scans[i].name, scan) == 0) { return &s_r->scans[i]; } } return NULL; }