#include "attack_scoring.h" #include "tool_plugin.h" #include #ifndef ATTACK_REPERTOIRE_H #define ATTACK_REPERTOIRE_H struct attack_step { char name[64]; char MATTACK[12]; cap_execute run; cap_guard guard; }; void attack_step_init(struct attack_step *a_s, char *name, char *MATTACK, cap_execute run, cap_guard guard); void attack_step_print(struct attack_step *a_s); #define ATTACK_PATTERN_INIT_NUM_STEPS 2 struct attack_pattern { char name[64]; char **a_steps; size_t num_steps; size_t max_steps; enum ATTACK_VECTOR a_v; enum ATTACK_COMPLEXITY a_c; enum PRIVILEGES_REQUIRED p_r; enum USER_INTERACTION u_i; enum RUNNING_TIME r_t; }; void attack_pattern_init(struct attack_pattern *a_p, char *name, enum ATTACK_VECTOR a_v, enum ATTACK_COMPLEXITY a_c, enum PRIVILEGES_REQUIRED p_r, enum USER_INTERACTION u_i, enum RUNNING_TIME r_t); void attack_pattern_add_step(struct attack_pattern *a_p, char *a_s); void attack_pattern_destroy(struct attack_pattern *a_p); void attack_pattern_print(struct attack_pattern *a_p); struct attack_repertoire { struct attack_pattern *a_patterns; size_t num_attack_patterns; size_t max_attack_patterns; struct attack_step *a_steps; size_t num_attack_steps; size_t max_attack_steps; }; #define ATTACK_REPERTOIRE_INIT_NUM_PATTERNS 16 #define ATTACK_REPERTOIRE_INIT_NUM_STEPS 64 void attack_repertoire_init(struct attack_repertoire *a_r); void attack_repertoire_add_pattern(struct attack_repertoire *a_r, struct attack_pattern *a_p); void attack_repertoire_add_step(struct attack_repertoire *a_r, struct attack_step *a_s); void attack_repertoire_destroy(struct attack_repertoire *a_r); void attack_repertoire_print(struct attack_repertoire *a_r); struct attack_pattern *attack_repertoire_get_pattern(struct attack_repertoire *a_r, char *attack); struct attack_step *attack_repertoire_get_attack_step(struct attack_repertoire *a_r, char *step); #endif