#include <epan/strutil.h>
#include <epan/frequency-utils.h>
#include "capture_ui_utils.h"
+#include <wsutil/file_util.h>
-#include "simple_dialog.h"
+#include "ui/simple_dialog.h"
#include <airpcap.h>
#include "airpcap_loader.h"
module_t *wlan_prefs = NULL;
Dot11Channel *pSupportedChannels;
-guint32 numSupportedChannels;
+guint numSupportedChannels;
static AirpcapChannelInfo LegacyChannels[] =
{
{2484, 0, {0,0,0}},
};
-static guint32 num_legacy_channels = 14;
+static guint num_legacy_channels = 14;
/*
* Callback used by the load_wlan_keys() routine in order to read a WEP decryption key
static guint
get_wep_key(pref_t *pref, gpointer ud)
{
- gchar *my_string = NULL;
+ gchar *key_string = NULL;
+ guint8 key_type = AIRPDCAP_KEY_TYPE_WEP;
keys_cb_data_t* user_data;
decryption_key_t* new_key;
if (g_ascii_strncasecmp(pref->name, "wep_key", 7) == 0 && pref->type == PREF_STRING)
{
- my_string = g_strdup(*pref->varp.string);
+ /* strip out key type */
+ if (g_ascii_strncasecmp(*pref->varp.string, STRING_KEY_TYPE_WEP ":", 4) == 0) {
+ key_string = (gchar*)(*pref->varp.string)+4;
+ }
+ else if (g_ascii_strncasecmp(*pref->varp.string, STRING_KEY_TYPE_WPA_PWD ":", 8) == 0) {
+ key_string = (gchar*)(*pref->varp.string)+8;
+ key_type = AIRPDCAP_KEY_TYPE_WPA_PWD;
+ }
+ else if (g_ascii_strncasecmp(*pref->varp.string, STRING_KEY_TYPE_WPA_PSK ":", 8) == 0) {
+ key_string = (gchar*)(*pref->varp.string)+8;
+ key_type = AIRPDCAP_KEY_TYPE_WPA_PSK;
+ }
+ else {
+ key_type = AIRPDCAP_KEY_TYPE_WEP;
+ key_string = (gchar*)*pref->varp.string;
+ }
/* Here we have the string describing the key... */
- new_key = parse_key_string(my_string);
+ new_key = parse_key_string(key_string, key_type);
- if( new_key != NULL)
- {
- /* Key is added only if not null ... */
- user_data->list = g_list_append(user_data->list,new_key);
- user_data->number_of_keys++;
- user_data->current_index++;
- }
+ if( new_key != NULL)
+ {
+ /* Key is added only if not null ... */
+ user_data->list = g_list_append(user_data->list,new_key);
+ user_data->number_of_keys++;
+ user_data->current_index++;
+ }
}
return 0;
}
GString *new_key;
gchar s[3];
PAirpcapKeysCollection KeysCollection;
- guint32 KeysCollectionSize;
+ guint KeysCollectionSize;
guint8 KeyByte;
guint keys_in_list = 0;
decryption_key_t* key_item = NULL;
key_item = (decryption_key_t*)g_list_nth_data(key_list,i);
new_key = g_string_new(key_item->key->str);
- KeysCollection->Keys[i].KeyLen = new_key->len / 2;
+ KeysCollection->Keys[i].KeyLen = (guint) new_key->len / 2;
memset(&KeysCollection->Keys[i].KeyData, 0, sizeof(KeysCollection->Keys[i].KeyData));
for(j = 0 ; j < new_key->len; j += 2)
GString *new_key;
gchar s[3];
PAirpcapKeysCollection KeysCollection;
- guint32 KeysCollectionSize;
+ guint KeysCollectionSize;
guint8 KeyByte;
guint keys_in_list = 0;
decryption_key_t* key_item = NULL;
new_key = g_string_new(key_item->key->str);
- KeysCollection->Keys[y].KeyLen = new_key->len / 2;
+ KeysCollection->Keys[y].KeyLen = (guint) new_key->len / 2;
memset(&KeysCollection->Keys[y].KeyData, 0, sizeof(KeysCollection->Keys[y].KeyData));
for(j = 0 ; j < new_key->len; j += 2)
* Airpcap wrapper, used to get the supported channels of an airpcap adapter
*/
gboolean
-airpcap_if_get_device_supported_channels(PAirpcapHandle ah, AirpcapChannelInfo **cInfo, guint32 * nInfo)
+airpcap_if_get_device_supported_channels(PAirpcapHandle ah, AirpcapChannelInfo **cInfo, guint * nInfo)
{
if (!AirpcapLoaded) return FALSE;
if (airpcap_get_dll_state() == AIRPCAP_DLL_OLD){
* Airpcap wrapper, used to get the supported channels of an airpcap adapter
*/
Dot11Channel*
-airpcap_if_get_device_supported_channels_array(PAirpcapHandle ah, guint32 * pNumSupportedChannels)
+airpcap_if_get_device_supported_channels_array(PAirpcapHandle ah, guint * pNumSupportedChannels)
{
AirpcapChannelInfo *chanInfo;
- guint32 i=0, j=0, numInfo = 0;
+ guint i=0, j=0, numInfo = 0;
if (!AirpcapLoaded)
return NULL;
for (i = 0; i < numInfo; i++)
{
- guint32 supportedChannel = 0xFFFFFFFF;
+ guint supportedChannel = G_MAXUINT;
/*
* search if we have it already
}
}
- if (supportedChannel == 0xFFFFFFFF)
+ if (supportedChannel == G_MAXUINT)
{
/*
* not found, create a new item
if (airpcap_get_dll_state() == AIRPCAP_DLL_OLD){
guint channel = 0;
- guint32 chan_freq = 0;
+ guint chan_freq = 0;
if (!airpcap_if_get_device_channel(ah, &channel)) return FALSE;
ad = airpcap_if_open(name, ebuf);
if(ad)
{
- if_info = g_malloc(sizeof (airpcap_if_info_t));
+ if_info = g_malloc0(sizeof (airpcap_if_info_t));
if_info->name = g_strdup(name);
if (description == NULL){
if_info->description = NULL;
{
GList *il = NULL;
airpcap_if_info_t *if_info;
- int i, n_adapts;
+ int n_adapts;
AirpcapDeviceDescription *devsList, *adListEntry;
char errbuf[PCAP_ERRBUF_SIZE];
+ *err = 0;
+
if (!AirpcapLoaded)
{
*err = AIRPCAP_NOT_LOADED;
* Insert the adapters in our list
*/
adListEntry = devsList;
- for(i = 0; i < n_adapts; i++)
+ while(adListEntry)
{
if_info = airpcap_if_info_new(adListEntry->Name, adListEntry->Description);
if (if_info != NULL){
g_PAirpcapFreeDeviceList(devsList);
- *err = 0;
return il;
}
*/
airpcap_if_info_t* get_airpcap_if_from_name(GList* if_list, const gchar* name)
{
- unsigned int ifn;
- GList* curr;
- airpcap_if_info_t* if_info;
-
- ifn = 0;
- if(if_list != NULL)
- {
- while( ifn < g_list_length(if_list) )
- {
- curr = g_list_nth(if_list, ifn);
+ GList* curr;
+ airpcap_if_info_t* if_info;
- if_info = NULL;
- if(curr != NULL)
- if_info = curr->data;
- if(if_info != NULL)
- {
- if ( g_ascii_strcasecmp(if_info->name,name) == 0
-#ifdef HAVE_PCAP_REMOTE /* The interface will be prepended with "rpcap://" */
- || g_str_has_suffix(name, if_info->name)
-#endif
- )
- {
- return if_info;
+ for (curr = g_list_first(if_list); curr; curr = g_list_next(curr)) {
+ if_info = (airpcap_if_info_t *)curr->data;
+ if (if_info && (g_ascii_strcasecmp(if_info->name, name) == 0)) {
+ return (if_info);
}
- }
- ifn++;
}
- }
- return NULL;
+ return (NULL);
}
/*
airpcap_get_key_string(AirpcapKey key)
{
unsigned int j = 0;
- unsigned int l = 0;
gchar *dst,*src;
dst = NULL;
/*
* XXX - use g_strconcat() or GStrings instead ???
*/
- l = g_strlcat(dst,src,WEP_KEY_MAX_CHAR_SIZE+1);
+ g_strlcat(dst, src, WEP_KEY_MAX_CHAR_SIZE+1);
}
g_free(src);
}
g_free(tmp_key);
/* BITS */
- new_key->bits = new_key->key->len *4; /* every char is 4 bits in WEP keys (it is an hexadecimal number) */
+ new_key->bits = (guint) new_key->key->len *4; /* every char is 4 bits in WEP keys (it is an hexadecimal number) */
/* SSID not used in WEP keys */
new_key->ssid = NULL;
if(tmp_key != NULL) g_free(tmp_key);
/* BITS */
- new_key->bits = new_key->key->len *4; /* every char is 4 bits in WEP keys (it is an hexadecimal number) */
+ new_key->bits = (guint) new_key->key->len *4; /* every char is 4 bits in WEP keys (it is an hexadecimal number) */
/* SSID not used in WEP keys */
new_key->ssid = NULL;
/*
* Returns TRUE if the Wireshark decryption is active, false otherwise
+ * XXX - Should we just add a routine to packet-ieee80211.c to grab this directly?
*/
gboolean
wireshark_decryption_on(void)
{
number = *pref->varp.boolp;
- g_free((void *)*pref->varp.boolp);
if(*is_on)
*pref->varp.boolp = TRUE;
else
gboolean base_functions = TRUE;
gboolean eleven_n_functions = TRUE;
- if((AirpcapLib = LoadLibrary(TEXT("airpcap.dll"))) == NULL)
+ if((AirpcapLib = ws_load_library("airpcap.dll")) == NULL)
{
/* Report the error but go on */
AirpcapVersion = AIRPCAP_DLL_NOT_FOUND;