/* * display the interface selection for bridged sniffing */ static void curses_bridged_sniff(void) { wdg_t *in; char err[PCAP_ERRBUF_SIZE]; DEBUG_MSG("curses_bridged_sniff"); /* if the user has not specified an interface, get the first one */ if (GBL_OPTIONS->iface == NULL) { SAFE_CALLOC(GBL_OPTIONS->iface, IFACE_LEN, sizeof(char)); strncpy(GBL_OPTIONS->iface, pcap_lookupdev(err), IFACE_LEN - 1); } SAFE_CALLOC(GBL_OPTIONS->iface_bridge, IFACE_LEN, sizeof(char)); wdg_create_object(&in, WDG_INPUT, WDG_OBJ_WANT_FOCUS | WDG_OBJ_FOCUS_MODAL); wdg_set_color(in, WDG_COLOR_SCREEN, EC_COLOR); wdg_set_color(in, WDG_COLOR_WINDOW, EC_COLOR); wdg_set_color(in, WDG_COLOR_FOCUS, EC_COLOR_FOCUS); wdg_set_color(in, WDG_COLOR_TITLE, EC_COLOR_MENU); wdg_input_size(in, strlen("Second network interface :") + IFACE_LEN, 4); wdg_input_add(in, 1, 1, "First network interface :", GBL_OPTIONS->iface, IFACE_LEN, 1); wdg_input_add(in, 1, 2, "Second network interface :", GBL_OPTIONS->iface_bridge, IFACE_LEN, 1); wdg_input_set_callback(in, bridged_sniff); wdg_draw_object(in); wdg_set_focus(in); }
/* * get an input from the user */ void curses_input(const char *title, char *input, size_t n, void (*callback)(void)) { wdg_t *in; wdg_create_object(&in, WDG_INPUT, WDG_OBJ_WANT_FOCUS | WDG_OBJ_FOCUS_MODAL); wdg_set_color(in, WDG_COLOR_SCREEN, EC_COLOR); wdg_set_color(in, WDG_COLOR_WINDOW, EC_COLOR); wdg_set_color(in, WDG_COLOR_FOCUS, EC_COLOR_FOCUS); wdg_set_color(in, WDG_COLOR_TITLE, EC_COLOR_MENU); wdg_input_size(in, strlen(title) + n, 3); wdg_input_add(in, 1, 1, title, input, n, 1); wdg_input_set_callback(in, callback); wdg_draw_object(in); wdg_set_focus(in); /* block until user input */ wdg_input_get_input(in); }
/* * inject interactively with the user */ static void curses_connection_inject(void) { wdg_t *in; DEBUG_MSG("curses_connection_inject"); SAFE_REALLOC(injectbuf, 501 * sizeof(char)); memset(injectbuf, 0, 501); wdg_create_object(&in, WDG_INPUT, WDG_OBJ_WANT_FOCUS | WDG_OBJ_FOCUS_MODAL); wdg_set_color(in, WDG_COLOR_SCREEN, EC_COLOR); wdg_set_color(in, WDG_COLOR_WINDOW, EC_COLOR); wdg_set_color(in, WDG_COLOR_FOCUS, EC_COLOR_FOCUS); wdg_set_color(in, WDG_COLOR_TITLE, EC_COLOR_MENU); wdg_input_size(in, 75, 12); wdg_input_add(in, 1, 1, "Chars to be injected :", (char*)injectbuf, 50, 10); wdg_input_set_callback(in, inject_user); wdg_draw_object(in); wdg_set_focus(in); }