Пример #1
0
void
update_filter_win(WINDOW *win)
{
	int l, i;

	box(win, 0 , 0);
	print_centered(win, 0, 57, " Edit Packet Filter ");

	mvwprintw(win, 2, 2, "Show these Packet Types");

	l = 4;
	wattron(win, get_packet_type_color(IEEE80211_FTYPE_MGMT));
	wattron(win, A_BOLD);
	mvwprintw(win, l++, 2, "m: [%c] MANAGEMENT FRAMES", CHECKED(PKT_TYPE_MGMT));
	wattroff(win, A_BOLD);
	mvwprintw(win, l++, 2, "b: [%c] Beacons", CHECKED(PKT_TYPE_BEACON));
	mvwprintw(win, l++, 2, "p: [%c] Probe Req/Resp", CHECKED(PKT_TYPE_PROBE));
	mvwprintw(win, l++, 2, "a: [%c] Association", CHECKED(PKT_TYPE_ASSOC));
	mvwprintw(win, l++, 2, "u: [%c] Authentication", CHECKED(PKT_TYPE_AUTH));
	l++;
	wattron(win, get_packet_type_color(IEEE80211_FTYPE_CTL));
	wattron(win, A_BOLD);
	mvwprintw(win, l++, 2, "c: [%c] CONTROL FRAMES", CHECKED(PKT_TYPE_CTRL));
	wattroff(win, A_BOLD);
	mvwprintw(win, l++, 2, "r: [%c] CTS/RTS", CHECKED(PKT_TYPE_CTS | PKT_TYPE_RTS));
	mvwprintw(win, l++, 2, "k: [%c] ACK", CHECKED(PKT_TYPE_ACK));
	l++;
	wattron(win, get_packet_type_color(IEEE80211_FTYPE_DATA));
	wattron(win, A_BOLD);
	mvwprintw(win, l++, 2, "d: [%c] DATA FRAMES", CHECKED(PKT_TYPE_DATA));
	wattroff(win, A_BOLD);
	mvwprintw(win, l++, 2, "q: [%c] QoS Data", CHECKED(PKT_TYPE_QDATA));
	mvwprintw(win, l++, 2, "n: [%c] Null Data", CHECKED(PKT_TYPE_NULL));
	mvwprintw(win, l++, 2, "R: [%c] ARP", CHECKED(PKT_TYPE_ARP));
	mvwprintw(win, l++, 2, "P: [%c] ICMP/PING", CHECKED(PKT_TYPE_ICMP));
	mvwprintw(win, l++, 2, "I: [%c] IP", CHECKED(PKT_TYPE_IP));
	mvwprintw(win, l++, 2, "U: [%c] UDP", CHECKED(PKT_TYPE_UDP));
	mvwprintw(win, l++, 2, "T: [%c] TCP", CHECKED(PKT_TYPE_TCP));
	mvwprintw(win, l++, 2, "O: [%c] OLSR", CHECKED(PKT_TYPE_OLSR));
	mvwprintw(win, l++, 2, "B: [%c] BATMAN", CHECKED(PKT_TYPE_BATMAN));
	mvwprintw(win, l++, 2, "M: [%c] MeshCruzer", CHECKED(PKT_TYPE_MESHZ));

	l = 4;
	wattron(win, WHITE);
	wattron(win, A_BOLD);
	mvwprintw(win, l++, MAC_COL, "BSSID");
	wattroff(win, A_BOLD);
	mvwprintw(win, l++, MAC_COL, "s: [%c] %s",
		CHECK_ETHER(conf.filterbssid), ether_sprintf(conf.filterbssid));

	l++;
	mvwprintw(win, l++, MAC_COL, "Show only these");
	wattron(win, A_BOLD);
	mvwprintw(win, l++, MAC_COL, "Source MAC ADDRESSES");
	wattroff(win, A_BOLD);

	for (i = 0; i < MAX_FILTERMAC; i++) {
		mvwprintw(win, l++, MAC_COL, "%d: [%c] %s", i+1,
			CHECK_FILTER_EN(i), ether_sprintf(conf.filtermac[i]));
	}

	l++;
	wattron(win, A_BOLD);
	mvwprintw(win, l++, MAC_COL, "o: [%c] All Filters Off", conf.filter_off ? '*' : ' ' );
	wattroff(win, A_BOLD);

	print_centered(win, FILTER_MAX, 57, "[ Press key or ENTER ]");

	wrefresh(win);
}
Пример #2
0
void
update_history_win(WINDOW *win)
{
	int i;
	int col = COLS-2;
	int sig, rat;

	if (col > MAX_HISTORY)
		col = 4 + MAX_HISTORY;

	werase(win);
	wattron(win, WHITE);
	box(win, 0 , 0);
	print_centered(win, 0, COLS, " Signal/Rate History ");
	mvwhline(win, SIGN_POS, 1, ACS_HLINE, col);
	mvwhline(win, SIGN_POS+2, 1, ACS_HLINE, col);
	mvwvline(win, 1, 4, ACS_VLINE, LINES-3);

	wattron(win, GREEN);
	mvwprintw(win, 2, 1, "dBm");
	mvwprintw(win, normalize_db(30, SIGN_POS - 1) + 1, 1, "-30");
	mvwprintw(win, normalize_db(40, SIGN_POS - 1) + 1, 1, "-40");
	mvwprintw(win, normalize_db(50, SIGN_POS - 1) + 1, 1, "-50");
	mvwprintw(win, normalize_db(60, SIGN_POS - 1) + 1, 1, "-60");
	mvwprintw(win, normalize_db(70, SIGN_POS - 1) + 1, 1, "-70");
	mvwprintw(win, normalize_db(80, SIGN_POS - 1) + 1, 1, "-80");
	mvwprintw(win, normalize_db(90, SIGN_POS - 1) + 1, 1, "-90");
	mvwprintw(win, SIGN_POS-1, 1, "-99");

	mvwprintw(win, 1, col-6, "Signal");

	wattron(win, CYAN);
	mvwprintw(win, TYPE_POS, 1, "TYP");
	mvwprintw(win, 2, col-11, "Packet Type");

	wattron(win, A_BOLD);
	wattron(win, BLUE);
	mvwprintw(win, 3, col-4, "Rate");
	mvwprintw(win, RATE_POS-12, 1, "300");
	mvwprintw(win, RATE_POS-11, 1, "275");
	mvwprintw(win, RATE_POS-10, 1, "250");
	mvwprintw(win, RATE_POS-9, 1, "225");
	mvwprintw(win, RATE_POS-8, 1, "200");
	mvwprintw(win, RATE_POS-7, 1, "175");
	mvwprintw(win, RATE_POS-6, 1, "150");
	mvwprintw(win, RATE_POS-5, 1, "125");
	mvwprintw(win, RATE_POS-4, 1, "100");
	mvwprintw(win, RATE_POS-3, 1, " 75");
	mvwprintw(win, RATE_POS-2, 1, " 50");
	mvwprintw(win, RATE_POS-1, 1, " 25");
	wattroff(win, A_BOLD);

	i = hist.index - 1;

	while (col > 4 && hist.signal[i] != 0)
	{
		sig = normalize_db(-hist.signal[i], SIGN_POS - 1);

		wattron(win, ALLGREEN);
		mvwvline(win, sig + 1, col, ACS_BLOCK, SIGN_POS - sig - 1);

		wattron(win, get_packet_type_color(hist.type[i]));
		mvwprintw(win, TYPE_POS, col, "%c", \
			get_packet_type_char(hist.type[i]));

		if (hist.retry[i])
			mvwprintw(win, TYPE_POS+1, col, "r");

		rat = hist.rate[i]/250;

		wattron(win, A_BOLD);
		wattron(win, BLUE);
		mvwvline(win, RATE_POS - rat, col, 'x', rat);
		wattroff(win, A_BOLD);

		i--;
		col--;
		if (i < 0)
			i = MAX_HISTORY-1;
	}
	wnoutrefresh(win);
}
Пример #3
0
void update_filter_win(WINDOW *win)
{
	int l, i, t, col = 2;

	box(win, 0 , 0);
	print_centered(win, 0, 57, " Edit Filters ");

	for (t = 0; t < WLAN_NUM_TYPES; t++) {
		l = 2;
		wattron(win, get_packet_type_color(WLAN_FRAME_FC(t, 0)));
		wattron(win, A_BOLD);
		if (t == 0)
			mvwprintw(win, l++, col, "m: [%c] Management", CHECKED(conf.filter_stype[t] & 0xffff));
		else if (t == 1)
			mvwprintw(win, l++, col, "c: [%c] Control", CHECKED(conf.filter_stype[t] & 0xffff));
		else
			mvwprintw(win, l++, col, "d: [%c] Data", CHECKED(conf.filter_stype[t] & 0xffff));

		wattroff(win, A_BOLD);
		for (i = 0; i < WLAN_NUM_STYPES; i++) {
			if (stype_names[t][i].c != '-')
				mvwprintw(win, l++, col, "%c: [%c] %s", stype_names[t][i].c,
					  CHECKED(conf.filter_stype[t] & BIT(i)),
					  stype_names[t][i].name);
		}
		col += 19;
	}

	l = 15;
	wattron(win, RED);
	mvwprintw(win, l++, 21, "*: [%c] Bad FCS", CHECKED(conf.filter_badfcs));
	wattroff(win, RED);
	wattron(win, A_BOLD);
	mvwprintw(win, l++, 21, "0: [%c] All Off", CHECKED(conf.filter_off));
	wattroff(win, A_BOLD);

	l = SECOND_ROW-1;
	wattron(win, A_BOLD);
	mvwprintw(win, l++, 2, "Higher Level Protocols");
	wattroff(win, A_BOLD);
	wattron(win, WHITE);
	mvwprintw(win, l++, 2, "r: [%c] ARP", CHECKED(conf.filter_pkt & PKT_TYPE_ARP));
	mvwprintw(win, l++, 2, "M: [%c] ICMP/PING", CHECKED(conf.filter_pkt & PKT_TYPE_ICMP));
	mvwprintw(win, l++, 2, "i: [%c] IP", CHECKED(conf.filter_pkt & PKT_TYPE_IP));
	l = SECOND_ROW;
	mvwprintw(win, l++, 21, "V: [%c] UDP", CHECKED(conf.filter_pkt & PKT_TYPE_UDP));
	mvwprintw(win, l++, 21, "W: [%c] TCP", CHECKED(conf.filter_pkt & PKT_TYPE_TCP));
	l = SECOND_ROW;
	mvwprintw(win, l++, 40, "I: [%c] OLSR", CHECKED(conf.filter_pkt & PKT_TYPE_OLSR));
	mvwprintw(win, l++, 40, "K: [%c] BATMAN", CHECKED(conf.filter_pkt & PKT_TYPE_BATMAN));
	mvwprintw(win, l++, 40, "Z: [%c] Meshz", CHECKED(conf.filter_pkt & PKT_TYPE_MESHZ));

	l = THIRD_ROW;
	wattron(win, A_BOLD);
	mvwprintw(win, l++, MAC_COL, "Source MAC Addresses");
	wattroff(win, A_BOLD);

	for (i = 0; i < MAX_FILTERMAC; i++) {
		mvwprintw(win, l++, MAC_COL, "%d: [%c] " MAC_FMT, i+1,
			  CHECKED(conf.filtermac_enabled[i]),
			  MAC_PAR(conf.filtermac[i]));
	}

	l = THIRD_ROW;
	wattron(win, A_BOLD);
	mvwprintw(win, l++, MODE_COL, "BSSID");
	wattroff(win, A_BOLD);
	mvwprintw(win, l++, MODE_COL, "_: [%c] " MAC_FMT,
		CHECKED(MAC_NOT_EMPTY(conf.filterbssid)), MAC_PAR(conf.filterbssid));

	l++;

	wattron(win, A_BOLD);
	mvwprintw(win, l++, MODE_COL, "Mode");
	wattroff(win, A_BOLD);
	mvwprintw(win, l++, MODE_COL, "!: [%c] Access Point", CHECKED(conf.filter_mode & WLAN_MODE_AP));
	mvwprintw(win, l++, MODE_COL, "@: [%c] Station", CHECKED(conf.filter_mode & WLAN_MODE_STA));
	mvwprintw(win, l++, MODE_COL, "#: [%c] IBSS (Ad-hoc)", CHECKED(conf.filter_mode & WLAN_MODE_IBSS));
	mvwprintw(win, l++, MODE_COL, "%: [%c] WDS/4ADDR", CHECKED(conf.filter_mode & WLAN_MODE_4ADDR));
	mvwprintw(win, l++, MODE_COL, "^: [%c] Unknown", CHECKED(conf.filter_mode & WLAN_MODE_UNKNOWN));

	wattroff(win, WHITE);
	print_centered(win, ++l, FILTER_WIN_WIDTH, "[ Press key or ENTER ]");

	wrefresh(win);
}
Пример #4
0
void update_statistics_win(WINDOW *win)
{
	int i;
	int line;
	int bps, dps, pps, rps;
	float duration;

	werase(win);
	wattron(win, WHITE);
	box(win, 0 , 0);
	print_centered(win, 0, COLS, " Packet Statistics ");

	if (stats.packets == 0) {
		wnoutrefresh(win);
		return; /* avoid floating point exceptions */
	}

	mvwprintw(win, 2, 2, "Packets: %d", stats.packets );
	mvwprintw(win, 3, 2, "Bytes:   %s (%d)",
		  kilo_mega_ize(stats.bytes), stats.bytes );
	mvwprintw(win, 4, 2, "Average: ~%d B/Pkt", stats.bytes / stats.packets);

	mvwprintw(win, 2, 40, "Retries:       %3.1f%% (%d)",
		  stats.retries * 100.0 / stats.packets, stats.retries);

	get_per_second(stats.bytes, stats.duration, stats.packets, stats.retries,
		       &bps, &dps, &pps, &rps);

	bps = bps * 8;

	mvwprintw(win, 3, 40, "Total bit/sec: %s (%d)",
		  kilo_mega_ize(bps), bps);
	wattron(win, A_BOLD);
	mvwprintw(win, 4, 40, "Total Usage:   %3.1f%% (%d)",
		  dps * 1.0 / 10000, dps ); /* usec in % */
	wattroff(win, A_BOLD);

	line = 6;
	mvwprintw(win, line, STAT_PACK_POS, " Packets");
	mvwprintw(win, line, STAT_BYTE_POS, "   Bytes");
	mvwprintw(win, line, STAT_BPP_POS, "~B/P");
	mvwprintw(win, line, STAT_PP_POS, "Pkts%%");
	mvwprintw(win, line, STAT_BP_POS, "Byte%%");
	wattron(win, A_BOLD);
	mvwprintw(win, line, STAT_AIR_POS, "Usage%%");
	mvwprintw(win, line++, 2, "RATE");
	wattroff(win, A_BOLD);
	mvwhline(win, line++, 2, '-', COLS-4);
	for (i = 1; i < MAX_RATES && line < LINES - 2; i++) {
		if (stats.packets_per_rate[i] > 0) {
			wattron(win, A_BOLD);
			if (i <= 12)
				mvwprintw(win, line, 2, "%3dM", rate_index_to_rate(i)/10);
			else
				mvwprintw(win, line, 2, "MCS%d", i - 12);
			wattroff(win, A_BOLD);
			mvwprintw(win, line, STAT_PACK_POS, "%8d",
				stats.packets_per_rate[i]);
			mvwprintw(win, line, STAT_BYTE_POS, "%8s",
				kilo_mega_ize(stats.bytes_per_rate[i]));
			mvwprintw(win, line, STAT_BPP_POS, "%4d",
				stats.bytes_per_rate[i] / stats.packets_per_rate[i]);
			mvwprintw(win, line, STAT_PP_POS, "%2.1f",
				stats.packets_per_rate[i] * 100.0 / stats.packets);
			mvwprintw(win, line, STAT_BP_POS, "%2.1f",
				stats.bytes_per_rate[i] * 100.0 / stats.bytes);
			wattron(win, A_BOLD);
			duration = stats.duration_per_rate[i] * 100.0 / stats.duration;
			mvwprintw(win, line, STAT_AIR_POS, "%2.1f", duration);
			mvwhline(win, line, STAT_AIRG_POS, '*',
				normalize(duration, 100, COLS - STAT_AIRG_POS - 2));
			wattroff(win, A_BOLD);
			line++;
		}
	}

	line++;
	if (line < LINES - 2) {
		mvwprintw(win, line, STAT_PACK_POS, " Packets");
		mvwprintw(win, line, STAT_BYTE_POS, "   Bytes");
		mvwprintw(win, line, STAT_BPP_POS, "~B/P");
		mvwprintw(win, line, STAT_PP_POS, "Pkts%%");
		mvwprintw(win, line, STAT_BP_POS, "Byte%%");
		wattron(win, A_BOLD);
		mvwprintw(win, line, STAT_AIR_POS, "Usage%%");
		mvwprintw(win, line++, 2, "TYPE");
		wattroff(win, A_BOLD);
	}
	if (line < LINES - 2)
		mvwhline(win, line++, 2, '-', COLS - 4);
	for (i = 0; i < MAX_FSTYPE && line < LINES - 2; i++) {
		if (stats.packets_per_type[i] > 0) {
			wattron(win, get_packet_type_color(i));
			wattron(win, A_BOLD);
			mvwprintw(win, line, 2, "%s", get_packet_type_name(i));
			wattroff(win, A_BOLD);
			mvwprintw(win, line, STAT_PACK_POS, "%8d",
				stats.packets_per_type[i]);
			mvwprintw(win, line, STAT_BYTE_POS, "%8s",
				kilo_mega_ize(stats.bytes_per_type[i]));
			mvwprintw(win, line, STAT_BPP_POS, "%4d",
				stats.bytes_per_type[i] / stats.packets_per_type[i]);
			mvwprintw(win, line, STAT_PP_POS, "%2.1f",
				stats.packets_per_type[i] * 100.0 / stats.packets);
			mvwprintw(win, line, STAT_BP_POS, "%2.1f",
				stats.bytes_per_type[i] * 100.0 / stats.bytes);
			wattron(win, A_BOLD);
			if (stats.duration > 0)
				duration = stats.duration_per_type[i] * 100.0 / stats.duration;
			else
				duration = 100.0;
			mvwprintw(win, line, STAT_AIR_POS, "%2.1f", duration);
			mvwhline(win, line, STAT_AIRG_POS, '*',
				normalize(duration, 100, COLS - STAT_AIRG_POS - 2));
			wattroff(win, A_BOLD);
			line++;
		}
	}
	wnoutrefresh(win);
}