|
From: <sat...@us...> - 2010-03-05 13:40:21
|
Revision: 227
http://w-meter.svn.sourceforge.net/w-meter/?rev=227&view=rev
Author: sathakselva
Date: 2010-03-05 13:40:15 +0000 (Fri, 05 Mar 2010)
Log Message:
-----------
code cleanup for sniffer.cpp file
Modified Paths:
--------------
framework/tags/selvam/sniffer.cpp
Modified: framework/tags/selvam/sniffer.cpp
===================================================================
--- framework/tags/selvam/sniffer.cpp 2010-03-05 13:29:36 UTC (rev 226)
+++ framework/tags/selvam/sniffer.cpp 2010-03-05 13:40:15 UTC (rev 227)
@@ -3,7 +3,7 @@
WLAN_sniffer::WLAN_sniffer()
{
-
+ ssid_start_pos = support_rate_start_pos = channel_start_pos = tim_start_pos = erp_start_pos = extended_rate_pos = challenge_txt_start_pos = ibss_param_start_pos = -1;
}
void WLAN_sniffer::init(char *dev, pcap_t **handle)
@@ -31,41 +31,28 @@
printf("\nDatalink type =%s\n\n", pcap_datalink_val_to_name( pcap_datalink(*handle) ));
}
+
void WLAN_sniffer::copy_receiver_address (unsigned char *frame, unsigned char *addr)
{
- int pos;
- for (pos = Rx_ADDRESS_START_POS; pos < (Rx_ADDRESS_START_POS + MAC_ADDRESS_LEN) ; pos++)
- *addr++ = frame[pos]; /* *addr++ <==> *(addr++) */
+ int i;
+ for (i = Rx_ADDRESS_START_POS; i < (Rx_ADDRESS_START_POS + MAC_ADDRESS_LEN) ; i++)
+ *addr++ = frame[i]; /* *addr++ <==> *(addr++) */
}
void WLAN_sniffer::copy_transmitter_address (unsigned char *frame, unsigned char *addr)
{
- int pos;
- for (pos = Tx_ADDRESS_START_POS; pos < (Tx_ADDRESS_START_POS + MAC_ADDRESS_LEN) ; pos++)
- *addr++ = frame[pos];
+ int i;
+ for (i = Tx_ADDRESS_START_POS; i < (Tx_ADDRESS_START_POS + MAC_ADDRESS_LEN) ; i++)
+ *addr++ = frame[i];
}
void WLAN_sniffer::copy_bssid (unsigned char *frame, unsigned char *addr, int pos)
{
- int pos;
- for (pos = pos; pos < (pos + MAC_ADDRESS_LEN) ; pos++)
- *addr++ = frame[pos];
+ int i;
+ for (i = pos; i < (pos + MAC_ADDRESS_LEN) ; i++)
+ *addr++ = frame[i];
}
-void WLAN_sniffer::remove_radiotap_hdr(const uint8_t *pkt, uint8_t *mac_frame, int len)
-{
- /* Remove the Radiotap header and store the remainig fields in another variable */
-
- int pos,j;
- for (pos = RADIOTAP_HEADER_SIZE, j=0; pos < len; pos++)
- mac_frame[j++] = pkt [pos];
-}
-
-void WLAN_sniffer::reset_global_variables()
-{
- ssid_start_pos = support_rate_start_pos = channel_start_pos = tim_start_pos = erp_start_pos = extended_rate_pos = challenge_txt_start_pos = ibss_param_start_pos = -1;
-}
-
unsigned int WLAN_sniffer::check_qos_header_presence(unsigned char *frame)
{
unsigned int qos_header_present = 0;
@@ -77,16 +64,17 @@
long long int WLAN_sniffer::get_timestamp(unsigned char *frame, int index)
{
long long int timestamp = 0;
- int timestamp_size = 8, pos;
- for (pos = index + timestamp_size; pos >= index; pos--)
+ int timestamp_size = 8, i;
+ for (i = index + timestamp_size; i >= index; i--)
{
- timestamp |= frame[pos];
- if (pos!= index)
+ timestamp |= frame[i];
+ if (i!= index)
timestamp = timestamp << 8;
}
return timestamp;
}
+
void WLAN_sniffer::disp_frame_ctrl_flags(unsigned char *frame)
{
printf("Order bit : %d\n", Is_ORDER_SET ( frame[FC_FLAG_POS] ));
@@ -99,6 +87,7 @@
printf("To DS bit : %d\n", Is_TO_DS_SET ( frame[FC_FLAG_POS] ));
}
+
void WLAN_sniffer::disp_capability_info(unsigned char *frame, int index)
{
printf( "ESS bit : %d\n", Is_ESS_SET( frame [index] ) );
@@ -120,62 +109,7 @@
printf( "Immediate BA: %d\n", Is_IMMEDIATE_BA_SET( frame [index +1] ) );
}
-void WLAN_sniffer::copy_ssid(unsigned char *frame, unsigned char *name, int start_pos, int ssid_len)
-{
- int index = start_pos;
- while (index <= (start_pos + ssid_len -1))
- *name++ = frame[index++];
-}
-int WLAN_sniffer::check_challenge_txt_presence(int algo, int auth_seq_no)
-{
- int challenge_txt_present = 0;
- if ((algo == SHARED_KEY) && ((auth_seq_no == 2) || (auth_seq_no == 3)))
- challenge_txt_present = 1;
- return challenge_txt_present;
-}
-
-void WLAN_sniffer::copy_challenge_text(unsigned char *frame, unsigned char *txt, int start_pos, int len)
-{
- int index = start_pos;
- while (index <= (start_pos + len -1))
- *txt++ = frame[index++];
-}
-
-void WLAN_sniffer::display_rates (unsigned char *frame, int pos)
-{
- int no_of_rates, i;
- no_of_rates = frame[pos+1];
- printf("Rates :");
- for (i = 0; i < no_of_rates; i++)
- printf("%5.1f\t", GET_RATE(frame[pos+2+i]) /2.0);
- printf("\n");
-}
-
-int WLAN_sniffer::is_non_erp_present(unsigned char *frame)
-{
- int non_erp_present = 0;
- if (erp_start_pos > 0)
- return Is_NON_ERP_PRESENT(frame[erp_start_pos+2]);
- return non_erp_present;
-}
-
-int WLAN_sniffer::is_use_protection_set(unsigned char *frame)
-{
- int use_protection = 0;
- if (erp_start_pos > 0)
- return Is_USE_PROTECTION_SET(frame[erp_start_pos+2]);
- return use_protection;
-}
-
-int WLAN_sniffer::is_barker_preamble_set(unsigned char *frame)
-{
- int preamble = 0;
- if (erp_start_pos > 0)
- return Is_BARKER_PREAMBLE_SET(frame[erp_start_pos+2]);
- return preamble;
-}
-
void WLAN_sniffer::parse_info_element(unsigned char *frame, int start_pos, int total_len)
{
int exit_flag = 0, ie_len;
@@ -247,7 +181,7 @@
}
default:
{
- printf("Skipping the unknown information element...\n");
+ printf("Skipping the reserved information element...\n");
length = frame[start_pos + 1];
start_pos += (length + 2 );
}
@@ -257,6 +191,76 @@
}
}
+void WLAN_sniffer::copy_ssid(unsigned char *frame, unsigned char *name, int start_pos, int ssid_len)
+{
+ int index = start_pos;
+ while (index <= (start_pos + ssid_len -1))
+ *name++ = frame[index++];
+}
+
+void WLAN_sniffer::copy_challenge_text(unsigned char *frame, unsigned char *txt, int start_pos, int len)
+{
+ int index = start_pos;
+ while (index <= (start_pos + len -1))
+ *txt++ = frame[index++];
+}
+
+void WLAN_sniffer::display_rates (unsigned char *frame, int pos)
+{
+ int no_of_rates, i;
+ no_of_rates = frame[pos+1];
+ printf("Rates :");
+ for (i = 0; i < no_of_rates; i++)
+ printf("%5.1f\t", GET_RATE(frame[pos+2+i]) /2.0);
+ printf("\n");
+}
+
+int WLAN_sniffer::check_challenge_txt_presence(int algo, int auth_seq_no)
+{
+ int challenge_txt_present = 0;
+ if ((algo == SHARED_KEY) && ((auth_seq_no == 2) || (auth_seq_no == 3)))
+ challenge_txt_present = 1;
+ return challenge_txt_present;
+}
+
+int WLAN_sniffer::is_non_erp_present(unsigned char *frame)
+{
+ int non_erp_present = 0;
+ if (erp_start_pos > 0)
+ return Is_NON_ERP_PRESENT(frame[erp_start_pos+2]);
+ return non_erp_present;
+}
+
+int WLAN_sniffer::is_use_protection_set(unsigned char *frame)
+{
+ int use_protection = 0;
+ if (erp_start_pos > 0)
+ return Is_USE_PROTECTION_SET(frame[erp_start_pos+2]);
+ return use_protection;
+}
+
+int WLAN_sniffer::is_barker_preamble_set(unsigned char *frame)
+{
+ int preamble = 0;
+ if (erp_start_pos > 0)
+ return Is_BARKER_PREAMBLE_SET(frame[erp_start_pos+2]);
+ return preamble;
+}
+
+void WLAN_sniffer::reset_global_variables()
+{
+ ssid_start_pos = support_rate_start_pos = channel_start_pos = tim_start_pos = erp_start_pos = extended_rate_pos = challenge_txt_start_pos = ibss_param_start_pos = -1;
+}
+
+void WLAN_sniffer::remove_radiotap_hdr(const uint8_t *pkt, uint8_t *mac_frame, int len)
+{
+ /* Remove the Radiotap header and store the remainig fields in another variable */
+
+ int i,j;
+ for (i = RADIOTAP_HEADER_SIZE, j=0; i < len; i++)
+ mac_frame[j++] = pkt [i];
+}
+
void WLAN_sniffer::dissect_wlan(const unsigned char *packet, int pkt_len)
{
@@ -282,7 +286,7 @@
version = GET_WLAN_PROTOCOL_VER (wlan_frame[VER_TYPE_SUBTYPE_POS] );
type = GET_WLAN_FRAME_TYPE ( wlan_frame[VER_TYPE_SUBTYPE_POS] );
sub_type = GET_WLAN_FRAME_SUBTYPE ( wlan_frame[VER_TYPE_SUBTYPE_POS] );
-
+
fc_flag = wlan_frame[FC_FLAG_POS];
disp_frame_ctrl_flags(wlan_frame);
@@ -296,6 +300,7 @@
printf( "Fragment No : %d\n", GET_WLAN_FRAG_NO( wlan_frame[SEQ_FRAG_START_POS], wlan_frame[SEQ_FRAG_START_POS+1] ));
printf( "Sequence No : %d\n", GET_WLAN_SEQUENCE_NO( wlan_frame[SEQ_FRAG_START_POS], wlan_frame[SEQ_FRAG_START_POS+1] ));
}
+
switch (type)
{
case MANAGEMENT:
@@ -318,7 +323,7 @@
{
printf("Sub type : Association Request\n");
disp_capability_info(wlan_frame, ASSOC_REQ_CAPABILITY_POS);
- printf("Listen Interval : %d \n", GET_LISTEN_INTERVAL(wlan_frame[ASSOC_REQ_LISTEN_INTERVAL_POS], wlan_frame[ASSOC_REQ_LISTEN_INTERVAL_POS+1]));
+ printf("Listen Interval : %d \n", GET_LISTEN_INTERVAL(wlan_frame[ASSOC_REQ_LISTEN_INTERVAL_POS], wlan_frame[ASSOC_REQ_LISTEN_INTERVAL_POS+1]));
parse_info_element(wlan_frame, ASSOC_REQ_IE_START_POS, wlan_frame_len);
int ssid_len = wlan_frame[ssid_start_pos+1];
unsigned char ssid[ssid_len];
@@ -342,9 +347,10 @@
case REASSOCIATION_REQ :
{
unsigned char current_ap_addr[MAC_ADDRESS_LEN];
- printf("Sub type : Reassociation Request\n");
- disp_capability_info(wlan_frame, REASSOC_REQ_CAPABILITY_POS);
- printf("Listen Interval : %d \n", GET_LISTEN_INTERVAL(wlan_frame[REASSOC_REQ_LISTEN_INTERVAL_POS], wlan_frame[REASSOC_REQ_LISTEN_INTERVAL_POS+1]));
+ printf("Sub type : Reassociation Request\n");
+ disp_capability_info(wlan_frame, REASSOC_REQ_CAPABILITY_POS);
+ printf("Listen Interval : %d \n", GET_LISTEN_INTERVAL(wlan_frame[REASSOC_REQ_LISTEN_INTERVAL_POS], wlan_frame[REASSOC_REQ_LISTEN_INTERVAL_POS+1]));
+
copy_bssid(wlan_frame, current_ap_addr, REASSOC_REQ_AP_ADDR_POS);
parse_info_element(wlan_frame, REASSOC_REQ_IE_START_POS, wlan_frame_len);
int ssid_len = wlan_frame[ssid_start_pos+1];
@@ -436,10 +442,22 @@
printf("Channel Number : %u\n", channel_no);
printf("Non ERP Present : %d\n", is_non_erp_present(wlan_frame));
printf("Use protection : %d\n", is_use_protection_set(wlan_frame));
- printf("Barker preamble : %d\n", is_barker_preamble_set(wlan_frame));
+ printf("Barker preamble : %d\n", is_barker_preamble_set(wlan_frame));
display_rates(wlan_frame, extended_rate_pos);
break;
}
+ case ATIM :
+ {
+ break;
+ }
+ case DISASSOCIATION :
+ {
+ printf("Sub type : Disassociation\n");
+ printf("Reason code : %d\n", GET_REASON_CODE(wlan_frame[DISASSOC_REASON_POS], wlan_frame[DISASSOC_REASON_POS+1]));
+ if ((DISASSOC_REASON_POS+1) <= (wlan_frame_len - FCS_LENGTH))
+ parse_info_element(wlan_frame, DISASSOC_IE_START_POS, wlan_frame_len);
+ break;
+ }
case AUTHENTICATION :
{
printf("Sub type : Authentication");
@@ -467,18 +485,6 @@
parse_info_element(wlan_frame, DEAUTH_IE_START_POS, wlan_frame_len);
break;
}
- case ATIM :
- {
- break;
- }
- case DISASSOCIATION :
- {
- printf("Sub type : Disassociation\n");
- printf("Reason code : %d\n", GET_REASON_CODE(wlan_frame[DISASSOC_REASON_POS], wlan_frame[DISASSOC_REASON_POS+1]));
- if ((DISASSOC_REASON_POS+1) <= (wlan_frame_len - FCS_LENGTH))
- parse_info_element(wlan_frame, DISASSOC_IE_START_POS, wlan_frame_len);
- break;
- }
case ACTION :
{
printf("Action frame\n");
@@ -490,8 +496,8 @@
case 15:
{
printf("Sub type : Reserved\n");
- break;
- }
+ }
+ break;
}
break;
}
@@ -589,5 +595,8 @@
printf("Type : Data\n");
break;
}
+ case RESERVED_TYPE:
+ printf("Type : Reserved\n");
}
}
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|