Rename airpdcap to dot11decrypt.

Our 802.11 decryption code isn't tied to any specific product. Change
the file and API names to dot11decrypt.

Change-Id: I14fd951be3ae9b656a4e1959067fc0bdcc681ee2
Reviewed-on: https://code.wireshark.org/review/26058
Petri-Dish: Gerald Combs <gerald@wireshark.org>
Tested-by: Petri Dish Buildbot
Reviewed-by: Michael Mann <mmann78@netscape.net>
This commit is contained in:
Gerald Combs 2018-02-23 09:43:29 -08:00 committed by Michael Mann
parent 3785f53089
commit e73e3580f6
29 changed files with 973 additions and 993 deletions

View File

@ -13,7 +13,7 @@
#include <glib.h> #include <glib.h>
#include <epan/crypt/airpdcap_ws.h> #include <epan/crypt/dot11decrypt_ws.h>
#include <epan/strutil.h> #include <epan/strutil.h>
#include <wsutil/file_util.h> #include <wsutil/file_util.h>
#include <wsutil/frequency-utils.h> #include <wsutil/frequency-utils.h>

View File

@ -13,7 +13,7 @@
#ifndef __AIRPCAP_LOADER_H__ #ifndef __AIRPCAP_LOADER_H__
#define __AIRPCAP_LOADER_H__ #define __AIRPCAP_LOADER_H__
#include <epan/crypt/airpdcap_system.h> #include <epan/crypt/dot11decrypt_system.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {

View File

@ -1,11 +1,11 @@
libwireshark.so.0 libwireshark0 #MINVER# libwireshark.so.0 libwireshark0 #MINVER#
AdmissionRejectReason_vals@Base 1.9.1 AdmissionRejectReason_vals@Base 1.9.1
AirPDcapDestroyContext@Base 1.9.1
AirPDcapInitContext@Base 1.9.1
BandRejectReason_vals@Base 1.9.1 BandRejectReason_vals@Base 1.9.1
CommandCode_vals_ext@Base 1.9.1 CommandCode_vals_ext@Base 1.9.1
DisengageReason_vals@Base 1.9.1 DisengageReason_vals@Base 1.9.1
DisengageRejectReason_vals@Base 1.9.1 DisengageRejectReason_vals@Base 1.9.1
Dot11DecryptDestroyContext@Base 2.5.0
Dot11DecryptInitContext@Base 2.5.0
EBCDIC_to_ASCII1@Base 1.9.1 EBCDIC_to_ASCII1@Base 1.9.1
EBCDIC_to_ASCII@Base 1.9.1 EBCDIC_to_ASCII@Base 1.9.1
FacilityReason_vals@Base 1.9.1 FacilityReason_vals@Base 1.9.1
@ -40,7 +40,6 @@ libwireshark.so.0 libwireshark0 #MINVER#
address_type_get_by_name@Base 2.1.0 address_type_get_by_name@Base 2.1.0
addresses_ports_reassembly_table_functions@Base 1.9.1 addresses_ports_reassembly_table_functions@Base 1.9.1
addresses_reassembly_table_functions@Base 1.9.1 addresses_reassembly_table_functions@Base 1.9.1
airpdcap_ctx@Base 1.9.1
analyze_q708_ispc@Base 1.9.1 analyze_q708_ispc@Base 1.9.1
ansi_a_bsmap_strings@Base 1.9.1 ansi_a_bsmap_strings@Base 1.9.1
ansi_a_dtap_strings@Base 1.9.1 ansi_a_dtap_strings@Base 1.9.1
@ -480,6 +479,7 @@ libwireshark.so.0 libwireshark0 #MINVER#
dissector_try_string_new@Base 2.5.0 dissector_try_string_new@Base 2.5.0
dissector_try_uint@Base 1.9.1 dissector_try_uint@Base 1.9.1
dissector_try_uint_new@Base 1.12.0~rc1 dissector_try_uint_new@Base 1.12.0~rc1
dot11decrypt_ctx@Base 2.5.0
draw_tap_listeners@Base 1.9.1 draw_tap_listeners@Base 1.9.1
dscp_short_vals_ext@Base 2.0.0 dscp_short_vals_ext@Base 2.0.0
dscp_vals_ext@Base 1.9.1 dscp_vals_ext@Base 1.9.1

View File

@ -1,5 +1,5 @@
libwsutil.so.0 libwsutil0 #MINVER# libwsutil.so.0 libwsutil0 #MINVER#
AirPDcapWepDecrypt@Base 1.10.0 Dot11DecryptWepDecrypt@Base 2.5.0
Eax_Decrypt@Base 1.12.0~rc1 Eax_Decrypt@Base 1.12.0~rc1
adler32_bytes@Base 1.12.0~rc1 adler32_bytes@Base 1.12.0~rc1
adler32_str@Base 1.12.0~rc1 adler32_str@Base 1.12.0~rc1

View File

@ -310,7 +310,7 @@ endif
# Add the object files for missing routines, if any. # Add the object files for missing routines, if any.
# #
libwireshark_la_LIBADD = \ libwireshark_la_LIBADD = \
crypt/libairpdcap.la \ crypt/libdot11decrypt.la \
ftypes/libftypes.la \ ftypes/libftypes.la \
dfilter/libdfilter.la \ dfilter/libdfilter.la \
dissectors/libdissectors.la \ dissectors/libdissectors.la \
@ -333,7 +333,7 @@ libwireshark_la_LIBADD = \
@GLIB_LIBS@ @GLIB_LIBS@
libwireshark_la_DEPENDENCIES = \ libwireshark_la_DEPENDENCIES = \
crypt/libairpdcap.la \ crypt/libdot11decrypt.la \
ftypes/libftypes.la \ ftypes/libftypes.la \
dfilter/libdfilter.la \ dfilter/libdfilter.la \
dissectors/libdissectors.la \ dissectors/libdissectors.la \

View File

@ -27,10 +27,10 @@ include_directories(
) )
set(CRYPT_FILES set(CRYPT_FILES
airpdcap.c dot11decrypt.c
airpdcap_ccmp.c dot11decrypt_ccmp.c
airpdcap_rijndael.c dot11decrypt_rijndael.c
airpdcap_tkip.c dot11decrypt_tkip.c
${CUSTOM_CRYPT_SRC} ${CUSTOM_CRYPT_SRC}
) )
source_group(crypt FILES ${CRYPT_FILES}) source_group(crypt FILES ${CRYPT_FILES})

View File

@ -1,5 +1,5 @@
# Makefile.am # Makefile.am
# Automake file for the airpdcap for Wireshark # Automake file for 802.11 decryption for Wireshark
# #
# Wireshark - Network traffic analyzer # Wireshark - Network traffic analyzer
# By Gerald Combs <gerald@wireshark.org> # By Gerald Combs <gerald@wireshark.org>
@ -23,28 +23,28 @@ include $(top_srcdir)/Makefile.am.inc
AM_CPPFLAGS = $(INCLUDEDIRS) $(WS_CPPFLAGS) $(GLIB_CFLAGS) $(LIBGCRYPT_CFLAGS) AM_CPPFLAGS = $(INCLUDEDIRS) $(WS_CPPFLAGS) $(GLIB_CFLAGS) $(LIBGCRYPT_CFLAGS)
noinst_LTLIBRARIES = libairpdcap.la noinst_LTLIBRARIES = libdot11decrypt.la
include Custom.common include Custom.common
CRYPT_SOURCES = \ CRYPT_SOURCES = \
airpdcap.c \ dot11decrypt.c \
airpdcap_ccmp.c \ dot11decrypt_ccmp.c \
airpdcap_rijndael.c \ dot11decrypt_rijndael.c \
airpdcap_tkip.c dot11decrypt_tkip.c
CRYPT_INCLUDES = \ CRYPT_INCLUDES = \
airpdcap_debug.h \ dot11decrypt_debug.h \
airpdcap_interop.h \ dot11decrypt_interop.h \
airpdcap_int.h \ dot11decrypt_int.h \
airpdcap_rijndael.h \ dot11decrypt_rijndael.h \
airpdcap_system.h \ dot11decrypt_system.h \
airpdcap_user.h \ dot11decrypt_user.h \
airpdcap_ws.h \ dot11decrypt_ws.h \
kasumi.h \ kasumi.h \
wep-wpadefs.h wep-wpadefs.h
libairpdcap_la_SOURCES = \ libdot11decrypt_la_SOURCES = \
$(CRYPT_SOURCES) \ $(CRYPT_SOURCES) \
$(CRYPT_INCLUDES) \ $(CRYPT_INCLUDES) \
$(CUSTOM_CRYPTO_SRC) $(CUSTOM_CRYPTO_SRC)

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
/* airpdcap_ccmp.c /* dot11decrypt_ccmp.c
* *
* Copyright (c) 2002-2005 Sam Leffler, Errno Consulting * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting
* Copyright (c) 2006 CACE Technologies, Davis (California) * Copyright (c) 2006 CACE Technologies, Davis (California)
@ -39,12 +39,12 @@
/****************************************************************************/ /****************************************************************************/
/* File includes */ /* File includes */
#include "config.h" #include "config.h"
#include "airpdcap_system.h" #include "dot11decrypt_system.h"
#include "airpdcap_int.h" #include "dot11decrypt_int.h"
#include "airpdcap_rijndael.h" #include "dot11decrypt_rijndael.h"
#include "airpdcap_debug.h" #include "dot11decrypt_debug.h"
#include <glib.h> #include <glib.h>
#include <wsutil/wsgcrypt.h> #include <wsutil/wsgcrypt.h>
@ -54,16 +54,16 @@
#define AES_BLOCK_LEN 16 #define AES_BLOCK_LEN 16
/* Note: copied from net80211/ieee80211.h */ /* Note: copied from net80211/ieee80211.h */
#define AIRPDCAP_FC1_DIR_MASK 0x03 #define DOT11DECRYPT_FC1_DIR_MASK 0x03
#define AIRPDCAP_FC1_DIR_DSTODS 0x03 /* AP ->AP */ #define DOT11DECRYPT_FC1_DIR_DSTODS 0x03 /* AP ->AP */
#define AIRPDCAP_FC0_SUBTYPE_QOS 0x80 #define DOT11DECRYPT_FC0_SUBTYPE_QOS 0x80
#define AIRPDCAP_FC0_TYPE_DATA 0x08 #define DOT11DECRYPT_FC0_TYPE_DATA 0x08
#define AIRPDCAP_FC0_TYPE_MASK 0x0c #define DOT11DECRYPT_FC0_TYPE_MASK 0x0c
#define AIRPDCAP_SEQ_FRAG_MASK 0x000f #define DOT11DECRYPT_SEQ_FRAG_MASK 0x000f
#define AIRPDCAP_QOS_HAS_SEQ(wh) \ #define DOT11DECRYPT_QOS_HAS_SEQ(wh) \
(((wh)->fc[0] & \ (((wh)->fc[0] & \
(AIRPDCAP_FC0_TYPE_MASK | AIRPDCAP_FC0_SUBTYPE_QOS)) == \ (DOT11DECRYPT_FC0_TYPE_MASK | DOT11DECRYPT_FC0_SUBTYPE_QOS)) == \
(AIRPDCAP_FC0_TYPE_DATA | AIRPDCAP_FC0_SUBTYPE_QOS)) (DOT11DECRYPT_FC0_TYPE_DATA | DOT11DECRYPT_FC0_SUBTYPE_QOS))
/****************************************************************************/ /****************************************************************************/
/* Internal macros */ /* Internal macros */
@ -83,14 +83,14 @@
((((UINT64)((UINT16)((b4 << 0) | (b5 << 8)))) << 32) | \ ((((UINT64)((UINT16)((b4 << 0) | (b5 << 8)))) << 32) | \
((UINT32)((b0 << 0) | (b1 << 8) | (b2 << 16) | (b3 << 24)))) ((UINT32)((b0 << 0) | (b1 << 8) | (b2 << 16) | (b3 << 24))))
#define AIRPDCAP_ADDR_COPY(dst,src) memcpy(dst,src,AIRPDCAP_MAC_LEN) #define DOT11DECRYPT_ADDR_COPY(dst,src) memcpy(dst,src,DOT11DECRYPT_MAC_LEN)
/****************************************************************************/ /****************************************************************************/
/* Internal function prototypes declarations */ /* Internal function prototypes declarations */
static void ccmp_init_blocks( static void ccmp_init_blocks(
gcry_cipher_hd_t rijndael_handle, gcry_cipher_hd_t rijndael_handle,
PAIRPDCAP_MAC_FRAME wh, PDOT11DECRYPT_MAC_FRAME wh,
UINT64 pn, UINT64 pn,
size_t dlen, size_t dlen,
UINT8 b0[AES_BLOCK_LEN], UINT8 b0[AES_BLOCK_LEN],
@ -104,7 +104,7 @@ static void ccmp_init_blocks(
static void ccmp_init_blocks( static void ccmp_init_blocks(
gcry_cipher_hd_t rijndael_handle, gcry_cipher_hd_t rijndael_handle,
PAIRPDCAP_MAC_FRAME wh, PDOT11DECRYPT_MAC_FRAME wh,
UINT64 pn, UINT64 pn,
size_t dlen, size_t dlen,
UINT8 b0[AES_BLOCK_LEN], UINT8 b0[AES_BLOCK_LEN],
@ -112,10 +112,10 @@ static void ccmp_init_blocks(
UINT8 a[AES_BLOCK_LEN], UINT8 a[AES_BLOCK_LEN],
UINT8 b[AES_BLOCK_LEN]) UINT8 b[AES_BLOCK_LEN])
{ {
UINT8 mgmt = (AIRPDCAP_TYPE(wh->fc[0]) == AIRPDCAP_TYPE_MANAGEMENT); UINT8 mgmt = (DOT11DECRYPT_TYPE(wh->fc[0]) == DOT11DECRYPT_TYPE_MANAGEMENT);
#define IS_4ADDRESS(wh) \ #define IS_4ADDRESS(wh) \
((wh->fc[1] & AIRPDCAP_FC1_DIR_MASK) == AIRPDCAP_FC1_DIR_DSTODS) ((wh->fc[1] & DOT11DECRYPT_FC1_DIR_MASK) == DOT11DECRYPT_FC1_DIR_DSTODS)
#define IS_QOS_DATA(wh) AIRPDCAP_QOS_HAS_SEQ(wh) #define IS_QOS_DATA(wh) DOT11DECRYPT_QOS_HAS_SEQ(wh)
memset(aad, 0, 2*AES_BLOCK_LEN); memset(aad, 0, 2*AES_BLOCK_LEN);
@ -126,7 +126,7 @@ static void ccmp_init_blocks(
* Dlen */ * Dlen */
b0[0] = 0x59; b0[0] = 0x59;
/* NB: b0[1] set below */ /* NB: b0[1] set below */
AIRPDCAP_ADDR_COPY(b0 + 2, wh->addr2); DOT11DECRYPT_ADDR_COPY(b0 + 2, wh->addr2);
b0[8] = (UINT8)(pn >> 40); b0[8] = (UINT8)(pn >> 40);
b0[9] = (UINT8)(pn >> 32); b0[9] = (UINT8)(pn >> 32);
b0[10] = (UINT8)(pn >> 24); b0[10] = (UINT8)(pn >> 24);
@ -151,8 +151,8 @@ static void ccmp_init_blocks(
aad[2] = wh->fc[0]; aad[2] = wh->fc[0];
aad[3] = (UINT8)(wh->fc[1] & 0xc7); /* XXX magic #s */ aad[3] = (UINT8)(wh->fc[1] & 0xc7); /* XXX magic #s */
/* NB: we know 3 addresses are contiguous */ /* NB: we know 3 addresses are contiguous */
memcpy(aad + 4, &wh->addr1[0], 3 * AIRPDCAP_MAC_LEN); memcpy(aad + 4, &wh->addr1[0], 3 * DOT11DECRYPT_MAC_LEN);
aad[22] = (UINT8)(wh->seq[0] & AIRPDCAP_SEQ_FRAG_MASK); aad[22] = (UINT8)(wh->seq[0] & DOT11DECRYPT_SEQ_FRAG_MASK);
aad[23] = 0; /* all bits masked */ aad[23] = 0; /* all bits masked */
/* /*
* Construct variable-length portion of AAD based * Construct variable-length portion of AAD based
@ -165,24 +165,24 @@ static void ccmp_init_blocks(
* a QOS frame. * a QOS frame.
*/ */
if (IS_4ADDRESS(wh)) { if (IS_4ADDRESS(wh)) {
AIRPDCAP_ADDR_COPY(aad + 24, DOT11DECRYPT_ADDR_COPY(aad + 24,
((PAIRPDCAP_MAC_FRAME_ADDR4)wh)->addr4); ((PDOT11DECRYPT_MAC_FRAME_ADDR4)wh)->addr4);
if (IS_QOS_DATA(wh)) { if (IS_QOS_DATA(wh)) {
PAIRPDCAP_MAC_FRAME_ADDR4_QOS qwh4 = PDOT11DECRYPT_MAC_FRAME_ADDR4_QOS qwh4 =
(PAIRPDCAP_MAC_FRAME_ADDR4_QOS) wh; (PDOT11DECRYPT_MAC_FRAME_ADDR4_QOS) wh;
aad[30] = (UINT8)(qwh4->qos[0] & 0x0f);/* just priority bits */ aad[30] = (UINT8)(qwh4->qos[0] & 0x0f);/* just priority bits */
aad[31] = 0; aad[31] = 0;
b0[1] = aad[30]; b0[1] = aad[30];
aad[1] = 22 + AIRPDCAP_MAC_LEN + 2; aad[1] = 22 + DOT11DECRYPT_MAC_LEN + 2;
} else { } else {
memset(&aad[30], 0, 2); memset(&aad[30], 0, 2);
b0[1] = 0; b0[1] = 0;
aad[1] = 22 + AIRPDCAP_MAC_LEN; aad[1] = 22 + DOT11DECRYPT_MAC_LEN;
} }
} else { } else {
if (IS_QOS_DATA(wh)) { if (IS_QOS_DATA(wh)) {
PAIRPDCAP_MAC_FRAME_QOS qwh = PDOT11DECRYPT_MAC_FRAME_QOS qwh =
(PAIRPDCAP_MAC_FRAME_QOS) wh; (PDOT11DECRYPT_MAC_FRAME_QOS) wh;
aad[24] = (UINT8)(qwh->qos[0] & 0x0f); /* just priority bits */ aad[24] = (UINT8)(qwh->qos[0] & 0x0f); /* just priority bits */
aad[25] = 0; aad[25] = 0;
b0[1] = aad[24]; b0[1] = aad[24];
@ -212,13 +212,13 @@ static void ccmp_init_blocks(
#undef IS_4ADDRESS #undef IS_4ADDRESS
} }
INT AirPDcapCcmpDecrypt( INT Dot11DecryptCcmpDecrypt(
UINT8 *m, UINT8 *m,
gint mac_header_len, gint mac_header_len,
INT len, INT len,
UCHAR TK1[16]) UCHAR TK1[16])
{ {
PAIRPDCAP_MAC_FRAME wh; PDOT11DECRYPT_MAC_FRAME wh;
UINT8 aad[2 * AES_BLOCK_LEN]; UINT8 aad[2 * AES_BLOCK_LEN];
UINT8 b0[AES_BLOCK_LEN], b[AES_BLOCK_LEN], a[AES_BLOCK_LEN]; UINT8 b0[AES_BLOCK_LEN], b[AES_BLOCK_LEN], a[AES_BLOCK_LEN];
UINT8 mic[AES_BLOCK_LEN]; UINT8 mic[AES_BLOCK_LEN];
@ -241,19 +241,19 @@ INT AirPDcapCcmpDecrypt(
return 1; return 1;
} }
wh = (PAIRPDCAP_MAC_FRAME )m; wh = (PDOT11DECRYPT_MAC_FRAME )m;
data_len = len - (z + AIRPDCAP_CCMP_HEADER+AIRPDCAP_CCMP_TRAILER); data_len = len - (z + DOT11DECRYPT_CCMP_HEADER+DOT11DECRYPT_CCMP_TRAILER);
if (data_len < 1) { if (data_len < 1) {
gcry_cipher_close(rijndael_handle); gcry_cipher_close(rijndael_handle);
return 0; return 0;
} }
ccmp_init_blocks(rijndael_handle, wh, PN, data_len, b0, aad, a, b); ccmp_init_blocks(rijndael_handle, wh, PN, data_len, b0, aad, a, b);
memcpy(mic, m+len-AIRPDCAP_CCMP_TRAILER, AIRPDCAP_CCMP_TRAILER); memcpy(mic, m+len-DOT11DECRYPT_CCMP_TRAILER, DOT11DECRYPT_CCMP_TRAILER);
XOR_BLOCK(mic, b, AIRPDCAP_CCMP_TRAILER); XOR_BLOCK(mic, b, DOT11DECRYPT_CCMP_TRAILER);
i = 1; i = 1;
pos = (UINT8 *)m + z + AIRPDCAP_CCMP_HEADER; pos = (UINT8 *)m + z + DOT11DECRYPT_CCMP_HEADER;
space = len - (z + AIRPDCAP_CCMP_HEADER); space = len - (z + DOT11DECRYPT_CCMP_HEADER);
if (space > data_len) if (space > data_len)
space = (UINT)data_len; space = (UINT)data_len;
@ -269,7 +269,7 @@ INT AirPDcapCcmpDecrypt(
gcry_cipher_close(rijndael_handle); gcry_cipher_close(rijndael_handle);
/* MIC Key ?= MIC */ /* MIC Key ?= MIC */
if (memcmp(mic, a, AIRPDCAP_CCMP_TRAILER) == 0) { if (memcmp(mic, a, DOT11DECRYPT_CCMP_TRAILER) == 0) {
return 0; return 0;
} }

View File

@ -32,66 +32,66 @@
* SUCH DAMAGE. * SUCH DAMAGE.
*/ */
#ifndef _AIRPDCAP_DEBUG_H #ifndef _DOT11DECRYPT_DEBUG_H
#define _AIRPDCAP_DEBUG_H #define _DOT11DECRYPT_DEBUG_H
#include "airpdcap_interop.h" #include "dot11decrypt_interop.h"
/* #define AIRPDCAP_DEBUG 1 */ /* #define DOT11DECRYPT_DEBUG 1 */
#ifdef AIRPDCAP_DEBUG #ifdef DOT11DECRYPT_DEBUG
#ifdef __FUNCTION__ #ifdef __FUNCTION__
#define AIRPDCAP_DEBUG_PRINT_LINE(notdefined, msg, level) print_debug_line(__FUNCTION__, msg, level); #define DOT11DECRYPT_DEBUG_PRINT_LINE(notdefined, msg, level) print_debug_line(__FUNCTION__, msg, level);
#else #else
#define AIRPDCAP_DEBUG_PRINT_LINE(function, msg, level) print_debug_line(function, msg, level); #define DOT11DECRYPT_DEBUG_PRINT_LINE(function, msg, level) print_debug_line(function, msg, level);
#endif #endif
#else #else
#ifdef __FUNCTION__ #ifdef __FUNCTION__
#define AIRPDCAP_DEBUG_PRINT_LINE(notdefined, msg, level) #define DOT11DECRYPT_DEBUG_PRINT_LINE(notdefined, msg, level)
#else #else
#define AIRPDCAP_DEBUG_PRINT_LINE(function, msg, level) #define DOT11DECRYPT_DEBUG_PRINT_LINE(function, msg, level)
#endif #endif
#endif #endif
/******************************************************************************/ /******************************************************************************/
/* Debug section: internal function to print debug information */ /* Debug section: internal function to print debug information */
/* */ /* */
#ifdef AIRPDCAP_DEBUG #ifdef DOT11DECRYPT_DEBUG
#include <stdio.h> #include <stdio.h>
#include <time.h> #include <time.h>
#include <epan/to_str.h> #include <epan/to_str.h>
/* Debug level definition */ /* Debug level definition */
#define AIRPDCAP_DEBUG_LEVEL_1 1 #define DOT11DECRYPT_DEBUG_LEVEL_1 1
#define AIRPDCAP_DEBUG_LEVEL_2 2 #define DOT11DECRYPT_DEBUG_LEVEL_2 2
#define AIRPDCAP_DEBUG_LEVEL_3 3 #define DOT11DECRYPT_DEBUG_LEVEL_3 3
#define AIRPDCAP_DEBUG_LEVEL_4 4 #define DOT11DECRYPT_DEBUG_LEVEL_4 4
#define AIRPDCAP_DEBUG_LEVEL_5 5 #define DOT11DECRYPT_DEBUG_LEVEL_5 5
#define AIRPDCAP_DEBUG_USED_LEVEL AIRPDCAP_DEBUG_LEVEL_3 #define DOT11DECRYPT_DEBUG_USED_LEVEL DOT11DECRYPT_DEBUG_LEVEL_3
static inline void print_debug_line(const CHAR *function, const CHAR *msg, const INT level) static inline void print_debug_line(const CHAR *function, const CHAR *msg, const INT level)
{ {
if (level<=AIRPDCAP_DEBUG_USED_LEVEL) if (level<=DOT11DECRYPT_DEBUG_USED_LEVEL)
g_warning("dbg(%d)|(%s) %s", level, function, msg); g_warning("dbg(%d)|(%s) %s", level, function, msg);
} }
#ifdef _TRACE #ifdef _TRACE
#ifdef __FUNCTION__ #ifdef __FUNCTION__
#define AIRPDCAP_DEBUG_TRACE_START(notdefined) print_debug_line(__FUNCTION__, "Start!", AIRPDCAP_DEBUG_USED_LEVEL); #define DOT11DECRYPT_DEBUG_TRACE_START(notdefined) print_debug_line(__FUNCTION__, "Start!", DOT11DECRYPT_DEBUG_USED_LEVEL);
#define AIRPDCAP_DEBUG_TRACE_END(notdefined) print_debug_line(__FUNCTION__, "End!", AIRPDCAP_DEBUG_USED_LEVEL); #define DOT11DECRYPT_DEBUG_TRACE_END(notdefined) print_debug_line(__FUNCTION__, "End!", DOT11DECRYPT_DEBUG_USED_LEVEL);
#else #else
#define AIRPDCAP_DEBUG_TRACE_START(function) print_debug_line(function, "Start!", AIRPDCAP_DEBUG_USED_LEVEL); #define DOT11DECRYPT_DEBUG_TRACE_START(function) print_debug_line(function, "Start!", DOT11DECRYPT_DEBUG_USED_LEVEL);
#define AIRPDCAP_DEBUG_TRACE_END(function) print_debug_line(function, "End!", AIRPDCAP_DEBUG_USED_LEVEL); #define DOT11DECRYPT_DEBUG_TRACE_END(function) print_debug_line(function, "End!", DOT11DECRYPT_DEBUG_USED_LEVEL);
#endif #endif
#else #else
#ifdef __FUNCTION__ #ifdef __FUNCTION__
#define AIRPDCAP_DEBUG_TRACE_START(notdefined) #define DOT11DECRYPT_DEBUG_TRACE_START(notdefined)
#define AIRPDCAP_DEBUG_TRACE_END(notdefined) #define DOT11DECRYPT_DEBUG_TRACE_END(notdefined)
#else #else
#define AIRPDCAP_DEBUG_TRACE_START(function) #define DOT11DECRYPT_DEBUG_TRACE_START(function)
#define AIRPDCAP_DEBUG_TRACE_END(function) #define DOT11DECRYPT_DEBUG_TRACE_END(function)
#endif #endif
#endif #endif
@ -102,20 +102,20 @@ static inline void DEBUG_DUMP(const char* x, const guint8* y, int z)
wmem_free(NULL, tmp_str); wmem_free(NULL, tmp_str);
} }
#else /* !defined AIRPDCAP_DEBUG */ #else /* !defined DOT11DECRYPT_DEBUG */
#define AIRPDCAP_DEBUG_LEVEL_1 #define DOT11DECRYPT_DEBUG_LEVEL_1
#define AIRPDCAP_DEBUG_LEVEL_2 #define DOT11DECRYPT_DEBUG_LEVEL_2
#define AIRPDCAP_DEBUG_LEVEL_3 #define DOT11DECRYPT_DEBUG_LEVEL_3
#define AIRPDCAP_DEBUG_LEVEL_4 #define DOT11DECRYPT_DEBUG_LEVEL_4
#define AIRPDCAP_DEBUG_LEVEL_5 #define DOT11DECRYPT_DEBUG_LEVEL_5
#define AIRPDCAP_DEBUG_TRACE_START(function) #define DOT11DECRYPT_DEBUG_TRACE_START(function)
#define AIRPDCAP_DEBUG_TRACE_END(function) #define DOT11DECRYPT_DEBUG_TRACE_END(function)
#define DEBUG_DUMP(x,y,z) #define DEBUG_DUMP(x,y,z)
#endif /* ?defined AIRPDCAP_DEBUG */ #endif /* ?defined DOT11DECRYPT_DEBUG */
#endif /* ?defined _AIRPDCAP_DEBUG_H */ #endif /* ?defined _DOT11DECRYPT_DEBUG_H */

View File

@ -32,14 +32,14 @@
* SUCH DAMAGE. * SUCH DAMAGE.
*/ */
#ifndef _AIRPDCAP_INT_H #ifndef _DOT11DECRYPT_INT_H
#define _AIRPDCAP_INT_H #define _DOT11DECRYPT_INT_H
/****************************************************************************/ /****************************************************************************/
/* File includes */ /* File includes */
#include "airpdcap_interop.h" #include "dot11decrypt_interop.h"
#include "airpdcap_system.h" #include "dot11decrypt_system.h"
/****************************************************************************/ /****************************************************************************/
@ -47,30 +47,30 @@
/* Definitions */ /* Definitions */
/* IEEE 802.11 packet type values */ /* IEEE 802.11 packet type values */
#define AIRPDCAP_TYPE_MANAGEMENT 0 #define DOT11DECRYPT_TYPE_MANAGEMENT 0
#define AIRPDCAP_TYPE_CONTROL 1 #define DOT11DECRYPT_TYPE_CONTROL 1
#define AIRPDCAP_TYPE_DATA 2 #define DOT11DECRYPT_TYPE_DATA 2
/* IEEE 802.11 packet subtype values */ /* IEEE 802.11 packet subtype values */
#define AIRPDCAP_SUBTYPE_ASSOC_REQ 0 #define DOT11DECRYPT_SUBTYPE_ASSOC_REQ 0
#define AIRPDCAP_SUBTYPE_ASSOC_RESP 1 #define DOT11DECRYPT_SUBTYPE_ASSOC_RESP 1
#define AIRPDCAP_SUBTYPE_REASSOC_REQ 2 #define DOT11DECRYPT_SUBTYPE_REASSOC_REQ 2
#define AIRPDCAP_SUBTYPE_REASSOC_RESP 3 #define DOT11DECRYPT_SUBTYPE_REASSOC_RESP 3
#define AIRPDCAP_SUBTYPE_PROBE_REQ 4 #define DOT11DECRYPT_SUBTYPE_PROBE_REQ 4
#define AIRPDCAP_SUBTYPE_PROBE_RESP 5 #define DOT11DECRYPT_SUBTYPE_PROBE_RESP 5
#define AIRPDCAP_SUBTYPE_MEASUREMENT_PILOT 6 #define DOT11DECRYPT_SUBTYPE_MEASUREMENT_PILOT 6
#define AIRPDCAP_SUBTYPE_BEACON 8 #define DOT11DECRYPT_SUBTYPE_BEACON 8
#define AIRPDCAP_SUBTYPE_ATIM 9 #define DOT11DECRYPT_SUBTYPE_ATIM 9
#define AIRPDCAP_SUBTYPE_DISASS 10 #define DOT11DECRYPT_SUBTYPE_DISASS 10
#define AIRPDCAP_SUBTYPE_AUTHENTICATION 11 #define DOT11DECRYPT_SUBTYPE_AUTHENTICATION 11
#define AIRPDCAP_SUBTYPE_DEAUTHENTICATION 12 #define DOT11DECRYPT_SUBTYPE_DEAUTHENTICATION 12
#define AIRPDCAP_SUBTYPE_ACTION 13 #define DOT11DECRYPT_SUBTYPE_ACTION 13
#define AIRPDCAP_SUBTYPE_ACTION_NO_ACK 14 #define DOT11DECRYPT_SUBTYPE_ACTION_NO_ACK 14
/* Min length of encrypted data (TKIP=21bytes, CCMP=17bytes) */ /* Min length of encrypted data (TKIP=21bytes, CCMP=17bytes) */
#define AIRPDCAP_CRYPTED_DATA_MINLEN 17 #define DOT11DECRYPT_CRYPTED_DATA_MINLEN 17
#define AIRPDCAP_TA_OFFSET 10 #define DOT11DECRYPT_TA_OFFSET 10
/* */ /* */
/****************************************************************************/ /****************************************************************************/
@ -81,27 +81,27 @@
/** /**
* Macros to get various bits of a 802.11 control frame * Macros to get various bits of a 802.11 control frame
*/ */
#define AIRPDCAP_TYPE(FrameControl_0) (UINT8)((FrameControl_0 >> 2) & 0x3) #define DOT11DECRYPT_TYPE(FrameControl_0) (UINT8)((FrameControl_0 >> 2) & 0x3)
#define AIRPDCAP_SUBTYPE(FrameControl_0) (UINT8)((FrameControl_0 >> 4) & 0xF) #define DOT11DECRYPT_SUBTYPE(FrameControl_0) (UINT8)((FrameControl_0 >> 4) & 0xF)
#define AIRPDCAP_DS_BITS(FrameControl_1) (UINT8)(FrameControl_1 & 0x3) #define DOT11DECRYPT_DS_BITS(FrameControl_1) (UINT8)(FrameControl_1 & 0x3)
#define AIRPDCAP_TO_DS(FrameControl_1) (UINT8)(FrameControl_1 & 0x1) #define DOT11DECRYPT_TO_DS(FrameControl_1) (UINT8)(FrameControl_1 & 0x1)
#define AIRPDCAP_FROM_DS(FrameControl_1) (UINT8)((FrameControl_1 >> 1) & 0x1) #define DOT11DECRYPT_FROM_DS(FrameControl_1) (UINT8)((FrameControl_1 >> 1) & 0x1)
#define AIRPDCAP_WEP(FrameControl_1) (UINT8)((FrameControl_1 >> 6) & 0x1) #define DOT11DECRYPT_WEP(FrameControl_1) (UINT8)((FrameControl_1 >> 6) & 0x1)
/** /**
* Get the Key ID from the Initialization Vector (last byte) * Get the Key ID from the Initialization Vector (last byte)
*/ */
#define AIRPDCAP_EXTIV(KeyID) ((KeyID >> 5) & 0x1) #define DOT11DECRYPT_EXTIV(KeyID) ((KeyID >> 5) & 0x1)
#define AIRPDCAP_KEY_INDEX(KeyID) ((KeyID >> 6) & 0x3) /** Used to determine TKIP group key from unicast (group = 1, unicast = 0) */ #define DOT11DECRYPT_KEY_INDEX(KeyID) ((KeyID >> 6) & 0x3) /** Used to determine TKIP group key from unicast (group = 1, unicast = 0) */
/* Macros to get various bits of an EAPOL frame */ /* Macros to get various bits of an EAPOL frame */
#define AIRPDCAP_EAP_KEY_DESCR_VER(KeyInfo_1) ((UCHAR)(KeyInfo_1 & 0x3)) #define DOT11DECRYPT_EAP_KEY_DESCR_VER(KeyInfo_1) ((UCHAR)(KeyInfo_1 & 0x3))
#define AIRPDCAP_EAP_KEY(KeyInfo_1) ((KeyInfo_1 >> 3) & 0x1) #define DOT11DECRYPT_EAP_KEY(KeyInfo_1) ((KeyInfo_1 >> 3) & 0x1)
#define AIRPDCAP_EAP_INST(KeyInfo_1) ((KeyInfo_1 >> 6) & 0x1) #define DOT11DECRYPT_EAP_INST(KeyInfo_1) ((KeyInfo_1 >> 6) & 0x1)
#define AIRPDCAP_EAP_ACK(KeyInfo_1) ((KeyInfo_1 >> 7) & 0x1) #define DOT11DECRYPT_EAP_ACK(KeyInfo_1) ((KeyInfo_1 >> 7) & 0x1)
#define AIRPDCAP_EAP_MIC(KeyInfo_0) (KeyInfo_0 & 0x1) #define DOT11DECRYPT_EAP_MIC(KeyInfo_0) (KeyInfo_0 & 0x1)
#define AIRPDCAP_EAP_SEC(KeyInfo_0) ((KeyInfo_0 >> 1) & 0x1) #define DOT11DECRYPT_EAP_SEC(KeyInfo_0) ((KeyInfo_0 >> 1) & 0x1)
/****************************************************************************/ /****************************************************************************/
@ -120,48 +120,48 @@
#endif #endif
/* Definition of IEEE 802.11 frame (without the address 4) */ /* Definition of IEEE 802.11 frame (without the address 4) */
typedef struct _AIRPDCAP_MAC_FRAME { typedef struct _DOT11DECRYPT_MAC_FRAME {
UCHAR fc[2]; UCHAR fc[2];
UCHAR dur[2]; UCHAR dur[2];
UCHAR addr1[AIRPDCAP_MAC_LEN]; UCHAR addr1[DOT11DECRYPT_MAC_LEN];
UCHAR addr2[AIRPDCAP_MAC_LEN]; UCHAR addr2[DOT11DECRYPT_MAC_LEN];
UCHAR addr3[AIRPDCAP_MAC_LEN]; UCHAR addr3[DOT11DECRYPT_MAC_LEN];
UCHAR seq[2]; UCHAR seq[2];
} AIRPDCAP_MAC_FRAME, *PAIRPDCAP_MAC_FRAME; } DOT11DECRYPT_MAC_FRAME, *PDOT11DECRYPT_MAC_FRAME;
/* Definition of IEEE 802.11 frame (with the address 4) */ /* Definition of IEEE 802.11 frame (with the address 4) */
typedef struct _AIRPDCAP_MAC_FRAME_ADDR4 { typedef struct _DOT11DECRYPT_MAC_FRAME_ADDR4 {
UCHAR fc[2]; UCHAR fc[2];
UCHAR dur[2]; UCHAR dur[2];
UCHAR addr1[AIRPDCAP_MAC_LEN]; UCHAR addr1[DOT11DECRYPT_MAC_LEN];
UCHAR addr2[AIRPDCAP_MAC_LEN]; UCHAR addr2[DOT11DECRYPT_MAC_LEN];
UCHAR addr3[AIRPDCAP_MAC_LEN]; UCHAR addr3[DOT11DECRYPT_MAC_LEN];
UCHAR seq[2]; UCHAR seq[2];
UCHAR addr4[AIRPDCAP_MAC_LEN]; UCHAR addr4[DOT11DECRYPT_MAC_LEN];
} AIRPDCAP_MAC_FRAME_ADDR4, *PAIRPDCAP_MAC_FRAME_ADDR4; } DOT11DECRYPT_MAC_FRAME_ADDR4, *PDOT11DECRYPT_MAC_FRAME_ADDR4;
/* Definition of IEEE 802.11 frame (without the address 4, with QOS) */ /* Definition of IEEE 802.11 frame (without the address 4, with QOS) */
typedef struct _AIRPDCAP_MAC_FRAME_QOS { typedef struct _DOT11DECRYPT_MAC_FRAME_QOS {
UCHAR fc[2]; UCHAR fc[2];
UCHAR dur[2]; UCHAR dur[2];
UCHAR addr1[AIRPDCAP_MAC_LEN]; UCHAR addr1[DOT11DECRYPT_MAC_LEN];
UCHAR addr2[AIRPDCAP_MAC_LEN]; UCHAR addr2[DOT11DECRYPT_MAC_LEN];
UCHAR addr3[AIRPDCAP_MAC_LEN]; UCHAR addr3[DOT11DECRYPT_MAC_LEN];
UCHAR seq[2]; UCHAR seq[2];
UCHAR qos[2]; UCHAR qos[2];
} AIRPDCAP_MAC_FRAME_QOS, *PAIRPDCAP_MAC_FRAME_QOS; } DOT11DECRYPT_MAC_FRAME_QOS, *PDOT11DECRYPT_MAC_FRAME_QOS;
/* Definition of IEEE 802.11 frame (with the address 4 and QOS) */ /* Definition of IEEE 802.11 frame (with the address 4 and QOS) */
typedef struct _AIRPDCAP_MAC_FRAME_ADDR4_QOS { typedef struct _DOT11DECRYPT_MAC_FRAME_ADDR4_QOS {
UCHAR fc[2]; UCHAR fc[2];
UCHAR dur[2]; UCHAR dur[2];
UCHAR addr1[AIRPDCAP_MAC_LEN]; UCHAR addr1[DOT11DECRYPT_MAC_LEN];
UCHAR addr2[AIRPDCAP_MAC_LEN]; UCHAR addr2[DOT11DECRYPT_MAC_LEN];
UCHAR addr3[AIRPDCAP_MAC_LEN]; UCHAR addr3[DOT11DECRYPT_MAC_LEN];
UCHAR seq[2]; UCHAR seq[2];
UCHAR addr4[AIRPDCAP_MAC_LEN]; UCHAR addr4[DOT11DECRYPT_MAC_LEN];
UCHAR qos[2]; UCHAR qos[2];
} AIRPDCAP_MAC_FRAME_ADDR4_QOS, *PAIRPDCAP_MAC_FRAME_ADDR4_QOS; } DOT11DECRYPT_MAC_FRAME_ADDR4_QOS, *PDOT11DECRYPT_MAC_FRAME_ADDR4_QOS;
#ifdef _MSC_VER /* MS Visual C++ */ #ifdef _MSC_VER /* MS Visual C++ */
#pragma pack(pop) #pragma pack(pop)

View File

@ -1,4 +1,4 @@
/* airpdcap_interop.h /* dot11decrypt_interop.h
* *
* Copyright (c) 2006 CACE Technologies, Davis (California) * Copyright (c) 2006 CACE Technologies, Davis (California)
* All rights reserved. * All rights reserved.
@ -32,8 +32,8 @@
* SUCH DAMAGE. * SUCH DAMAGE.
*/ */
#ifndef _AIRPDCAP_INTEROP_H #ifndef _DOT11DECRYPT_INTEROP_H
#define _AIRPDCAP_INTEROP_H #define _DOT11DECRYPT_INTEROP_H
/** /**
* Cast data types commonly used (e.g. UINT16) to their * Cast data types commonly used (e.g. UINT16) to their
@ -87,17 +87,4 @@ typedef gchar CHAR;
typedef guchar UCHAR; typedef guchar UCHAR;
#endif #endif
#ifdef _WIN32 #endif /* _DOT11DECRYPT_INTEROP_H */
#include <winsock2.h> /* ntohs() */
#endif
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h> /* ntohs() */
#endif
#ifndef ntohs
#undef ntohs
#define ntohs(value) g_ntohs(value)
#endif
#endif /* _AIRPDCAP_INTEROP_H */

View File

@ -1,5 +1,5 @@
/** /**
* airpdcap_rijndael.c * dot11decrypt_rijndael.c
* *
* @version 3.0 (December 2000) * @version 3.0 (December 2000)
* *
@ -24,9 +24,9 @@
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
#include "config.h" #include "config.h"
#include "airpdcap_rijndael.h" #include "dot11decrypt_rijndael.h"
#include "airpdcap_debug.h" #include "dot11decrypt_debug.h"
#include <glib.h> #include <glib.h>
#include <wsutil/wsgcrypt.h> #include <wsutil/wsgcrypt.h>

View File

@ -1,5 +1,5 @@
/** /**
* airpdcap_rijndael.h * dot11decrypt_rijndael.h
* *
* @version 3.0 (December 2000) * @version 3.0 (December 2000)
* *
@ -24,13 +24,13 @@
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
#ifndef _AIRPDCAP_RIJNDAEL #ifndef _DOT11DECRYPT_RIJNDAEL
#define _AIRPDCAP_RIJNDAEL #define _DOT11DECRYPT_RIJNDAEL
/******************************************************************************/ /******************************************************************************/
/* File includes */ /* File includes */
/* */ /* */
#include "airpdcap_interop.h" #include "dot11decrypt_interop.h"
/* */ /* */
/* */ /* */
/******************************************************************************/ /******************************************************************************/

View File

@ -1,4 +1,4 @@
/* airpdcap_system.h /* dot11decrypt_system.h
* *
* Copyright (c) 2006 CACE Technologies, Davis (California) * Copyright (c) 2006 CACE Technologies, Davis (California)
* All rights reserved. * All rights reserved.
@ -32,8 +32,8 @@
* SUCH DAMAGE. * SUCH DAMAGE.
*/ */
#ifndef _AIRPDCAP_SYSTEM_H #ifndef _DOT11DECRYPT_SYSTEM_H
#define _AIRPDCAP_SYSTEM_H #define _DOT11DECRYPT_SYSTEM_H
/************************************************************************/ /************************************************************************/
/* Constant definitions */ /* Constant definitions */
@ -46,43 +46,43 @@
#define FALSE 0 #define FALSE 0
#endif #endif
#define AIRPDCAP_RET_SUCCESS 0 #define DOT11DECRYPT_RET_SUCCESS 0
#define AIRPDCAP_RET_UNSUCCESS 1 #define DOT11DECRYPT_RET_UNSUCCESS 1
#define AIRPDCAP_RET_NO_DATA 1 #define DOT11DECRYPT_RET_NO_DATA 1
#define AIRPDCAP_RET_WRONG_DATA_SIZE 2 #define DOT11DECRYPT_RET_WRONG_DATA_SIZE 2
#define AIRPDCAP_RET_REQ_DATA 3 #define DOT11DECRYPT_RET_REQ_DATA 3
#define AIRPDCAP_RET_NO_VALID_HANDSHAKE 4 #define DOT11DECRYPT_RET_NO_VALID_HANDSHAKE 4
#define AIRPDCAP_RET_NO_DATA_ENCRYPTED 5 #define DOT11DECRYPT_RET_NO_DATA_ENCRYPTED 5
#define AIRPDCAP_RET_SUCCESS_HANDSHAKE -1 #define DOT11DECRYPT_RET_SUCCESS_HANDSHAKE -1
#define AIRPDCAP_MAX_KEYS_NR 64 #define DOT11DECRYPT_MAX_KEYS_NR 64
#define AIRPDCAP_MAX_SEC_ASSOCIATIONS_NR 256 #define DOT11DECRYPT_MAX_SEC_ASSOCIATIONS_NR 256
/* Decryption algorithms fields size definition (bytes) */ /* Decryption algorithms fields size definition (bytes) */
#define AIRPDCAP_WPA_NONCE_LEN 32 #define DOT11DECRYPT_WPA_NONCE_LEN 32
#define AIRPDCAP_WPA_PTK_LEN 64 /* TKIP uses 48 bytes, CCMP uses 64 bytes */ #define DOT11DECRYPT_WPA_PTK_LEN 64 /* TKIP uses 48 bytes, CCMP uses 64 bytes */
#define AIRPDCAP_WPA_MICKEY_LEN 16 #define DOT11DECRYPT_WPA_MICKEY_LEN 16
#define AIRPDCAP_WEP_128_KEY_LEN 16 /* 128 bits */ #define DOT11DECRYPT_WEP_128_KEY_LEN 16 /* 128 bits */
/* General 802.11 constants */ /* General 802.11 constants */
#define AIRPDCAP_MAC_LEN 6 #define DOT11DECRYPT_MAC_LEN 6
#define AIRPDCAP_RADIOTAP_HEADER_LEN 24 #define DOT11DECRYPT_RADIOTAP_HEADER_LEN 24
#define AIRPDCAP_EAPOL_MAX_LEN 1024 #define DOT11DECRYPT_EAPOL_MAX_LEN 1024
#define AIRPDCAP_TK_LEN 16 #define DOT11DECRYPT_TK_LEN 16
/* Max length of capture data */ /* Max length of capture data */
#define AIRPDCAP_MAX_CAPLEN 8192 #define DOT11DECRYPT_MAX_CAPLEN 8192
#define AIRPDCAP_WEP_IVLEN 3 /* 24bit */ #define DOT11DECRYPT_WEP_IVLEN 3 /* 24bit */
#define AIRPDCAP_WEP_KIDLEN 1 /* 1 octet */ #define DOT11DECRYPT_WEP_KIDLEN 1 /* 1 octet */
#define AIRPDCAP_WEP_ICV 4 #define DOT11DECRYPT_WEP_ICV 4
#define AIRPDCAP_WEP_HEADER AIRPDCAP_WEP_IVLEN + AIRPDCAP_WEP_KIDLEN #define DOT11DECRYPT_WEP_HEADER DOT11DECRYPT_WEP_IVLEN + DOT11DECRYPT_WEP_KIDLEN
#define AIRPDCAP_WEP_TRAILER AIRPDCAP_WEP_ICV #define DOT11DECRYPT_WEP_TRAILER DOT11DECRYPT_WEP_ICV
/* /*
* 802.11i defines an extended IV for use with non-WEP ciphers. * 802.11i defines an extended IV for use with non-WEP ciphers.
@ -91,25 +91,25 @@
* EXTIV bit is likewise set but the 8 bytes represent the * EXTIV bit is likewise set but the 8 bytes represent the
* CCMP header rather than IV+extended-IV. * CCMP header rather than IV+extended-IV.
*/ */
#define AIRPDCAP_RSNA_EXTIV 0x20 #define DOT11DECRYPT_RSNA_EXTIV 0x20
#define AIRPDCAP_RSNA_EXTIVLEN 4 /* extended IV length */ #define DOT11DECRYPT_RSNA_EXTIVLEN 4 /* extended IV length */
#define AIRPDCAP_RSNA_MICLEN 8 /* trailing MIC */ #define DOT11DECRYPT_RSNA_MICLEN 8 /* trailing MIC */
#define AIRPDCAP_RSNA_HEADER AIRPDCAP_WEP_HEADER + AIRPDCAP_RSNA_EXTIVLEN #define DOT11DECRYPT_RSNA_HEADER DOT11DECRYPT_WEP_HEADER + DOT11DECRYPT_RSNA_EXTIVLEN
#define AIRPDCAP_CCMP_HEADER AIRPDCAP_RSNA_HEADER #define DOT11DECRYPT_CCMP_HEADER DOT11DECRYPT_RSNA_HEADER
#define AIRPDCAP_CCMP_TRAILER AIRPDCAP_RSNA_MICLEN #define DOT11DECRYPT_CCMP_TRAILER DOT11DECRYPT_RSNA_MICLEN
#define AIRPDCAP_TKIP_HEADER AIRPDCAP_RSNA_HEADER #define DOT11DECRYPT_TKIP_HEADER DOT11DECRYPT_RSNA_HEADER
#define AIRPDCAP_TKIP_TRAILER AIRPDCAP_RSNA_MICLEN + AIRPDCAP_WEP_ICV #define DOT11DECRYPT_TKIP_TRAILER DOT11DECRYPT_RSNA_MICLEN + DOT11DECRYPT_WEP_ICV
#define AIRPDCAP_CRC_LEN 4 #define DOT11DECRYPT_CRC_LEN 4
/************************************************************************/ /************************************************************************/
/* File includes */ /* File includes */
#include "airpdcap_interop.h" #include "dot11decrypt_interop.h"
#include "airpdcap_user.h" #include "dot11decrypt_user.h"
#include "ws_symbol_export.h" #include "ws_symbol_export.h"
/************************************************************************/ /************************************************************************/
@ -118,52 +118,52 @@
/************************************************************************/ /************************************************************************/
/* Type definitions */ /* Type definitions */
typedef struct _AIRPDCAP_SEC_ASSOCIATION_ID { typedef struct _DOT11DECRYPT_SEC_ASSOCIATION_ID {
UCHAR bssid[AIRPDCAP_MAC_LEN]; UCHAR bssid[DOT11DECRYPT_MAC_LEN];
UCHAR sta[AIRPDCAP_MAC_LEN]; UCHAR sta[DOT11DECRYPT_MAC_LEN];
} AIRPDCAP_SEC_ASSOCIATION_ID, *PAIRPDCAP_SEC_ASSOCIATION_ID; } DOT11DECRYPT_SEC_ASSOCIATION_ID, *PDOT11DECRYPT_SEC_ASSOCIATION_ID;
typedef struct _AIRPDCAP_SEC_ASSOCIATION { typedef struct _DOT11DECRYPT_SEC_ASSOCIATION {
/* This is for reassociations. A linked list of old security /* This is for reassociations. A linked list of old security
* associations is kept. GCS * associations is kept. GCS
*/ */
struct _AIRPDCAP_SEC_ASSOCIATION* next; struct _DOT11DECRYPT_SEC_ASSOCIATION* next;
/** /**
* This flag define whether this item is used or not. Accepted * This flag define whether this item is used or not. Accepted
* values are TRUE and FALSE * values are TRUE and FALSE
*/ */
UINT8 used; UINT8 used;
AIRPDCAP_SEC_ASSOCIATION_ID saId; DOT11DECRYPT_SEC_ASSOCIATION_ID saId;
AIRPDCAP_KEY_ITEM *key; DOT11DECRYPT_KEY_ITEM *key;
UINT8 handshake; UINT8 handshake;
UINT8 validKey; UINT8 validKey;
struct { struct {
UINT8 key_ver; /* Key descriptor version */ UINT8 key_ver; /* Key descriptor version */
UINT64 pn; /* only used with CCMP AES -if needed replay check- */ UINT64 pn; /* only used with CCMP AES -if needed replay check- */
UCHAR nonce[AIRPDCAP_WPA_NONCE_LEN]; UCHAR nonce[DOT11DECRYPT_WPA_NONCE_LEN];
/* used to derive PTK, ANonce stored, SNonce taken */ /* used to derive PTK, ANonce stored, SNonce taken */
/* the 2nd packet of the 4W handshake */ /* the 2nd packet of the 4W handshake */
UCHAR ptk[AIRPDCAP_WPA_PTK_LEN]; /* session key used in decryption algorithm */ UCHAR ptk[DOT11DECRYPT_WPA_PTK_LEN]; /* session key used in decryption algorithm */
} wpa; } wpa;
} AIRPDCAP_SEC_ASSOCIATION, *PAIRPDCAP_SEC_ASSOCIATION; } DOT11DECRYPT_SEC_ASSOCIATION, *PDOT11DECRYPT_SEC_ASSOCIATION;
typedef struct _AIRPDCAP_CONTEXT { typedef struct _DOT11DECRYPT_CONTEXT {
AIRPDCAP_SEC_ASSOCIATION sa[AIRPDCAP_MAX_SEC_ASSOCIATIONS_NR]; DOT11DECRYPT_SEC_ASSOCIATION sa[DOT11DECRYPT_MAX_SEC_ASSOCIATIONS_NR];
INT sa_index; INT sa_index;
AIRPDCAP_KEY_ITEM keys[AIRPDCAP_MAX_KEYS_NR]; DOT11DECRYPT_KEY_ITEM keys[DOT11DECRYPT_MAX_KEYS_NR];
size_t keys_nr; size_t keys_nr;
CHAR pkt_ssid[AIRPDCAP_WPA_SSID_MAX_LEN]; CHAR pkt_ssid[DOT11DECRYPT_WPA_SSID_MAX_LEN];
size_t pkt_ssid_len; size_t pkt_ssid_len;
INT index; INT index;
INT first_free_index; INT first_free_index;
} AIRPDCAP_CONTEXT, *PAIRPDCAP_CONTEXT; } DOT11DECRYPT_CONTEXT, *PDOT11DECRYPT_CONTEXT;
/************************************************************************/ /************************************************************************/
/* Function prototype declarations */ /* Function prototype declarations */
@ -183,7 +183,7 @@ extern "C" {
* @param data_len [IN] Total length of the MAC header and the payload * @param data_len [IN] Total length of the MAC header and the payload
* @param decrypt_data [OUT] Pointer to a buffer that will contain * @param decrypt_data [OUT] Pointer to a buffer that will contain
* decrypted data. If this parameter is set to NULL, decrypted data will * decrypted data. If this parameter is set to NULL, decrypted data will
* be discarded. Must have room for at least AIRPDCAP_MAX_CAPLEN bytes. * be discarded. Must have room for at least DOT11DECRYPT_MAX_CAPLEN bytes.
* @param decrypt_len [OUT] Length of decrypted data if decrypt_data * @param decrypt_len [OUT] Length of decrypted data if decrypt_data
* is not NULL. * is not NULL.
* @param key [OUT] Pointer to a preallocated key structure containing * @param key [OUT] Pointer to a preallocated key structure containing
@ -193,22 +193,22 @@ extern "C" {
* the 802.11 frame data is pointing to has key information and if so use * the 802.11 frame data is pointing to has key information and if so use
* it to setup potential decryption keys. Enables handshake return codes. * it to setup potential decryption keys. Enables handshake return codes.
* @return * @return
* - AIRPDCAP_RET_SUCCESS: Decryption has been done (decrypt_data and * - DOT11DECRYPT_RET_SUCCESS: Decryption has been done (decrypt_data and
* decrypt_length will contain the packet data decrypted and the length of * decrypt_length will contain the packet data decrypted and the length of
* the new packet) * the new packet)
* - AIRPDCAP_RET_NO_DATA: The packet is not a data packet * - DOT11DECRYPT_RET_NO_DATA: The packet is not a data packet
* - AIRPDCAP_RET_WRONG_DATA_SIZE: The size of the packet is below the * - DOT11DECRYPT_RET_WRONG_DATA_SIZE: The size of the packet is below the
* accepted minimum * accepted minimum
* - AIRPDCAP_RET_REQ_DATA: Required data is not available and the * - DOT11DECRYPT_RET_REQ_DATA: Required data is not available and the
* processing must be interrupted (can also occur after decryption when * processing must be interrupted (can also occur after decryption when
* scanHandshake is TRUE) * scanHandshake is TRUE)
* - AIRPDCAP_RET_NO_DATA_ENCRYPTED: Not encrypted and no attempt to * - DOT11DECRYPT_RET_NO_DATA_ENCRYPTED: Not encrypted and no attempt to
* extract key information * extract key information
* - AIRPDCAP_RET_UNSUCCESS: Generic unspecified error (decrypt_data * - DOT11DECRYPT_RET_UNSUCCESS: Generic unspecified error (decrypt_data
* and decrypt_length will be not modified). * and decrypt_length will be not modified).
* - AIRPDCAP_RET_SUCCESS_HANDSHAKE: An eapol handshake packet was successfuly parsed * - DOT11DECRYPT_RET_SUCCESS_HANDSHAKE: An eapol handshake packet was successfuly parsed
* and key information extracted * and key information extracted
* - AIRPDCAP_RET_NO_VALID_HANDSHAKE: The handshake is invalid or was not used * - DOT11DECRYPT_RET_NO_VALID_HANDSHAKE: The handshake is invalid or was not used
* for some reason. For encrypted packets decryption was still successful. * for some reason. For encrypted packets decryption was still successful.
* @note * @note
* The decrypted buffer should be allocated for a size equal or greater * The decrypted buffer should be allocated for a size equal or greater
@ -223,14 +223,14 @@ extern "C" {
* This function is not thread-safe when used in parallel with context * This function is not thread-safe when used in parallel with context
* management functions on the same context. * management functions on the same context.
*/ */
extern INT AirPDcapPacketProcess( extern INT Dot11DecryptPacketProcess(
PAIRPDCAP_CONTEXT ctx, PDOT11DECRYPT_CONTEXT ctx,
const guint8 *data, const guint8 *data,
const guint data_off, const guint data_off,
const guint data_len, const guint data_len,
UCHAR *decrypt_data, UCHAR *decrypt_data,
guint32 *decrypt_len, guint32 *decrypt_len,
PAIRPDCAP_KEY_ITEM key, PDOT11DECRYPT_KEY_ITEM key,
gboolean scanHandshake) gboolean scanHandshake)
; ;
@ -239,11 +239,11 @@ extern INT AirPDcapPacketProcess(
* Any key should be well-formed, thus: it should have a defined key * Any key should be well-formed, thus: it should have a defined key
* type and the specified length should be conforming WEP or WPA/WPA2 * type and the specified length should be conforming WEP or WPA/WPA2
* standards. A general WEP keys could be of any length (in the range * standards. A general WEP keys could be of any length (in the range
* defined in AIRPDCAP_KEY_ITEM), if a specific WEP key is used, the * defined in DOT11DECRYPT_KEY_ITEM), if a specific WEP key is used, the
* length of the key will be the one specified in 802.11i-2004 (40 bits or * length of the key will be the one specified in 802.11i-2004 (40 bits or
* 104 bits). * 104 bits).
* For WPA/WPA2 the password (passphrase and SSID), the PSK and the PMK * For WPA/WPA2 the password (passphrase and SSID), the PSK and the PMK
* are in alternative, as explain in the AIRPDCAP_KEY_ITEM structure * are in alternative, as explain in the DOT11DECRYPT_KEY_ITEM structure
* description. * description.
* @param ctx [IN] pointer to the current context * @param ctx [IN] pointer to the current context
* @param keys [IN] an array of keys to set. * @param keys [IN] an array of keys to set.
@ -255,9 +255,9 @@ extern INT AirPDcapPacketProcess(
* management functions and the packet process function on the same * management functions and the packet process function on the same
* context. * context.
*/ */
extern INT AirPDcapSetKeys( extern INT Dot11DecryptSetKeys(
PAIRPDCAP_CONTEXT ctx, PDOT11DECRYPT_CONTEXT ctx,
AIRPDCAP_KEY_ITEM keys[], DOT11DECRYPT_KEY_ITEM keys[],
const size_t keys_nr) const size_t keys_nr)
; ;
@ -269,15 +269,15 @@ extern INT AirPDcapSetKeys(
* be able to contain at least keys_nr keys) * be able to contain at least keys_nr keys)
* @return The number of keys returned * @return The number of keys returned
* @note * @note
* Any key could be modified, as stated in the AIRPDCAP_KEY_ITEM description. * Any key could be modified, as stated in the DOT11DECRYPT_KEY_ITEM description.
* @note * @note
* This function is not thread-safe when used in parallel with context * This function is not thread-safe when used in parallel with context
* management functions and the packet process function on the same * management functions and the packet process function on the same
* context. * context.
*/ */
INT AirPDcapGetKeys( INT Dot11DecryptGetKeys(
const PAIRPDCAP_CONTEXT ctx, const PDOT11DECRYPT_CONTEXT ctx,
AIRPDCAP_KEY_ITEM keys[], DOT11DECRYPT_KEY_ITEM keys[],
const size_t keys_nr) const size_t keys_nr)
; ;
@ -289,12 +289,12 @@ INT AirPDcapGetKeys(
* @param pkt_ssid [IN] pointer to the packet's SSID * @param pkt_ssid [IN] pointer to the packet's SSID
* @param pkt_ssid_len [IN] length of the packet's SSID * @param pkt_ssid_len [IN] length of the packet's SSID
* @return * @return
* AIRPDCAP_RET_SUCCESS: The key has been set. * DOT11DECRYPT_RET_SUCCESS: The key has been set.
* AIRPDCAP_RET_UNSUCCESS: The has not been set, e.g. the length was * DOT11DECRYPT_RET_UNSUCCESS: The has not been set, e.g. the length was
* too long. * too long.
*/ */
INT AirPDcapSetLastSSID( INT Dot11DecryptSetLastSSID(
PAIRPDCAP_CONTEXT ctx, PDOT11DECRYPT_CONTEXT ctx,
CHAR *pkt_ssid, CHAR *pkt_ssid,
size_t pkt_ssid_len) size_t pkt_ssid_len)
; ;
@ -303,8 +303,8 @@ INT AirPDcapSetLastSSID(
* Initialize a context used to manage decryption and keys collection. * Initialize a context used to manage decryption and keys collection.
* @param ctx [IN|OUT] pointer to a preallocated context structure * @param ctx [IN|OUT] pointer to a preallocated context structure
* @return * @return
* AIRPDCAP_RET_SUCCESS: the context has been successfully initialized * DOT11DECRYPT_RET_SUCCESS: the context has been successfully initialized
* AIRPDCAP_RET_UNSUCCESS: the context has not been initialized * DOT11DECRYPT_RET_UNSUCCESS: the context has not been initialized
* @note * @note
* Only a correctly initialized context can be used to manage decryption * Only a correctly initialized context can be used to manage decryption
* processes and keys. * processes and keys.
@ -313,8 +313,8 @@ INT AirPDcapSetLastSSID(
* management functions and the packet process function on the same context. * management functions and the packet process function on the same context.
*/ */
WS_DLL_PUBLIC WS_DLL_PUBLIC
INT AirPDcapInitContext( INT Dot11DecryptInitContext(
PAIRPDCAP_CONTEXT ctx) PDOT11DECRYPT_CONTEXT ctx)
; ;
/** /**
@ -322,33 +322,33 @@ INT AirPDcapInitContext(
* not be used anymore. * not be used anymore.
* @param ctx [IN|OUT] pointer to the current context structure * @param ctx [IN|OUT] pointer to the current context structure
* @return * @return
* AIRPDCAP_RET_SUCCESS: the context has been successfully initialized * DOT11DECRYPT_RET_SUCCESS: the context has been successfully initialized
* AIRPDCAP_RET_UNSUCCESS: the context has not been initialized * DOT11DECRYPT_RET_UNSUCCESS: the context has not been initialized
* @note * @note
* This function is not thread-safe when used in parallel with context * This function is not thread-safe when used in parallel with context
* management functions and the packet process function on the same * management functions and the packet process function on the same
* context. * context.
*/ */
WS_DLL_PUBLIC WS_DLL_PUBLIC
INT AirPDcapDestroyContext( INT Dot11DecryptDestroyContext(
PAIRPDCAP_CONTEXT ctx) PDOT11DECRYPT_CONTEXT ctx)
; ;
extern INT AirPDcapCcmpDecrypt( extern INT Dot11DecryptCcmpDecrypt(
UINT8 *m, UINT8 *m,
gint mac_header_len, gint mac_header_len,
INT len, INT len,
UCHAR TK1[16]) UCHAR TK1[16])
; ;
extern INT AirPDcapTkipDecrypt( extern INT Dot11DecryptTkipDecrypt(
UCHAR *tkip_mpdu, UCHAR *tkip_mpdu,
size_t mpdu_len, size_t mpdu_len,
UCHAR TA[AIRPDCAP_MAC_LEN], UCHAR TA[DOT11DECRYPT_MAC_LEN],
UCHAR TK[AIRPDCAP_TK_LEN]) UCHAR TK[DOT11DECRYPT_TK_LEN])
; ;
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* _AIRPDCAP_SYSTEM_H */ #endif /* _DOT11DECRYPT_SYSTEM_H */

View File

@ -35,10 +35,10 @@
/* */ /* */
#include <wsutil/pint.h> #include <wsutil/pint.h>
#include <wsutil/crc32.h> #include <wsutil/crc32.h>
#include "airpdcap_system.h" #include "dot11decrypt_system.h"
#include "airpdcap_int.h" #include "dot11decrypt_int.h"
#include "airpdcap_debug.h" #include "dot11decrypt_debug.h"
/* */ /* */
/******************************************************************************/ /******************************************************************************/
@ -47,21 +47,21 @@
/* */ /* */
#define PHASE1_LOOP_COUNT 8 #define PHASE1_LOOP_COUNT 8
#define AIRPDCAP_TTAK_LEN 6 #define DOT11DECRYPT_TTAK_LEN 6
/* */ /* */
/******************************************************************************/ /******************************************************************************/
/******************************************************************************/ /******************************************************************************/
/* Internal function prototypes declarations */ /* Internal function prototypes declarations */
/* */ /* */
static void AirPDcapTkipMixingPhase1( static void Dot11DecryptTkipMixingPhase1(
UINT16 *TTAK, UINT16 *TTAK,
const UINT8 *TK, const UINT8 *TK,
const UINT8 *TA, const UINT8 *TA,
UINT32 TSC) UINT32 TSC)
; ;
static void AirPDcapTkipMixingPhase2( static void Dot11DecryptTkipMixingPhase2(
UINT8 *wep_seed, UINT8 *wep_seed,
const UINT8 *TK, const UINT8 *TK,
UINT16 *PPK, UINT16 *PPK,
@ -144,7 +144,7 @@ static const UINT16 Sbox[256] = {
/******************************************************************************/ /******************************************************************************/
/* Function definitions */ /* Function definitions */
static void AirPDcapTkipMixingPhase1( static void Dot11DecryptTkipMixingPhase1(
UINT16 *TTAK, UINT16 *TTAK,
const UINT8 *TK, const UINT8 *TK,
const UINT8 *TA, const UINT8 *TA,
@ -169,7 +169,7 @@ static void AirPDcapTkipMixingPhase1(
} }
} }
static void AirPDcapTkipMixingPhase2( static void Dot11DecryptTkipMixingPhase2(
UINT8 *wep_seed, UINT8 *wep_seed,
const UINT8 *TK, const UINT8 *TK,
UINT16 *TTAK, UINT16 *TTAK,
@ -209,18 +209,18 @@ static void AirPDcapTkipMixingPhase2(
/* Note: taken from FreeBSD source code, RELENG 6, */ /* Note: taken from FreeBSD source code, RELENG 6, */
/* sys/net80211/ieee80211_crypto_tkip.c, 936 */ /* sys/net80211/ieee80211_crypto_tkip.c, 936 */
INT AirPDcapTkipDecrypt( INT Dot11DecryptTkipDecrypt(
UCHAR *tkip_mpdu, UCHAR *tkip_mpdu,
size_t mpdu_len, size_t mpdu_len,
UCHAR TA[AIRPDCAP_MAC_LEN], UCHAR TA[DOT11DECRYPT_MAC_LEN],
UCHAR TK[AIRPDCAP_TK_LEN]) UCHAR TK[DOT11DECRYPT_TK_LEN])
{ {
UINT64 TSC64; UINT64 TSC64;
UINT32 TSC; UINT32 TSC;
UINT16 TSC16; UINT16 TSC16;
UINT8 *IV; UINT8 *IV;
UINT16 TTAK[AIRPDCAP_TTAK_LEN]; UINT16 TTAK[DOT11DECRYPT_TTAK_LEN];
UINT8 wep_seed[AIRPDCAP_WEP_128_KEY_LEN]; UINT8 wep_seed[DOT11DECRYPT_WEP_128_KEY_LEN];
/* DEBUG_DUMP("TA", TA, 6); */ /* DEBUG_DUMP("TA", TA, 6); */
@ -233,15 +233,15 @@ INT AirPDcapTkipDecrypt(
/* We instead have to have READ_6() be returned to a UINT64 and shift *that* value. */ /* We instead have to have READ_6() be returned to a UINT64 and shift *that* value. */
TSC = (UINT32)(TSC64 >> 16); TSC = (UINT32)(TSC64 >> 16);
AirPDcapTkipMixingPhase1(TTAK, TK, TA, TSC); Dot11DecryptTkipMixingPhase1(TTAK, TK, TA, TSC);
AirPDcapTkipMixingPhase2(wep_seed, TK, TTAK, TSC16); Dot11DecryptTkipMixingPhase2(wep_seed, TK, TTAK, TSC16);
return AirPDcapWepDecrypt( return Dot11DecryptWepDecrypt(
wep_seed, wep_seed,
AIRPDCAP_WEP_128_KEY_LEN, DOT11DECRYPT_WEP_128_KEY_LEN,
tkip_mpdu + AIRPDCAP_TKIP_HEADER, tkip_mpdu + DOT11DECRYPT_TKIP_HEADER,
mpdu_len-(AIRPDCAP_TKIP_HEADER+AIRPDCAP_WEP_ICV)); /* MPDU - TKIP_HEADER - MIC */ mpdu_len-(DOT11DECRYPT_TKIP_HEADER+DOT11DECRYPT_WEP_ICV)); /* MPDU - TKIP_HEADER - MIC */
/* TODO check (IEEE 802.11i-2004, pg. 44) */ /* TODO check (IEEE 802.11i-2004, pg. 44) */

View File

@ -1,4 +1,4 @@
/* airpdcap_user.h /* dot11decrypt_user.h
* *
* Copyright (c) 2006 CACE Technologies, Davis (California) * Copyright (c) 2006 CACE Technologies, Davis (California)
* All rights reserved. * All rights reserved.
@ -32,13 +32,13 @@
* SUCH DAMAGE. * SUCH DAMAGE.
*/ */
#ifndef _AIRPDCAP_USER_H #ifndef _DOT11DECRYPT_USER_H
#define _AIRPDCAP_USER_H #define _DOT11DECRYPT_USER_H
/******************************************************************************/ /******************************************************************************/
/* File includes */ /* File includes */
/* */ /* */
#include "airpdcap_interop.h" #include "dot11decrypt_interop.h"
#include "ws_symbol_export.h" #include "ws_symbol_export.h"
/* */ /* */
@ -49,26 +49,26 @@
/* Constant definitions */ /* Constant definitions */
/* */ /* */
/* Decryption key types */ /* Decryption key types */
#define AIRPDCAP_KEY_TYPE_WEP 0 #define DOT11DECRYPT_KEY_TYPE_WEP 0
#define AIRPDCAP_KEY_TYPE_WEP_40 1 #define DOT11DECRYPT_KEY_TYPE_WEP_40 1
#define AIRPDCAP_KEY_TYPE_WEP_104 2 #define DOT11DECRYPT_KEY_TYPE_WEP_104 2
#define AIRPDCAP_KEY_TYPE_WPA_PWD 3 #define DOT11DECRYPT_KEY_TYPE_WPA_PWD 3
#define AIRPDCAP_KEY_TYPE_WPA_PSK 4 #define DOT11DECRYPT_KEY_TYPE_WPA_PSK 4
#define AIRPDCAP_KEY_TYPE_WPA_PMK 5 #define DOT11DECRYPT_KEY_TYPE_WPA_PMK 5
#define AIRPDCAP_KEY_TYPE_TKIP 6 #define DOT11DECRYPT_KEY_TYPE_TKIP 6
#define AIRPDCAP_KEY_TYPE_CCMP 7 #define DOT11DECRYPT_KEY_TYPE_CCMP 7
/* Decryption algorithms fields size definition (bytes) */ /* Decryption algorithms fields size definition (bytes) */
#define AIRPDCAP_WEP_KEY_MINLEN 1 #define DOT11DECRYPT_WEP_KEY_MINLEN 1
#define AIRPDCAP_WEP_KEY_MAXLEN 32 #define DOT11DECRYPT_WEP_KEY_MAXLEN 32
#define AIRPDCAP_WEP_40_KEY_LEN 5 #define DOT11DECRYPT_WEP_40_KEY_LEN 5
#define AIRPDCAP_WEP_104_KEY_LEN 13 #define DOT11DECRYPT_WEP_104_KEY_LEN 13
#define AIRPDCAP_WPA_PASSPHRASE_MIN_LEN 8 #define DOT11DECRYPT_WPA_PASSPHRASE_MIN_LEN 8
#define AIRPDCAP_WPA_PASSPHRASE_MAX_LEN 63 /* null-terminated string, the actual length of the storage is 64 */ #define DOT11DECRYPT_WPA_PASSPHRASE_MAX_LEN 63 /* null-terminated string, the actual length of the storage is 64 */
#define AIRPDCAP_WPA_SSID_MIN_LEN 0 #define DOT11DECRYPT_WPA_SSID_MIN_LEN 0
#define AIRPDCAP_WPA_SSID_MAX_LEN 32 #define DOT11DECRYPT_WPA_SSID_MAX_LEN 32
#define AIRPDCAP_WPA_PSK_LEN 32 #define DOT11DECRYPT_WPA_PSK_LEN 32
/* */ /* */
/* */ /* */
/******************************************************************************/ /******************************************************************************/
@ -95,13 +95,13 @@ typedef struct {
/** /**
* Key item used during the decryption process. * Key item used during the decryption process.
*/ */
typedef struct _AIRPDCAP_KEY_ITEM { typedef struct _DOT11DECRYPT_KEY_ITEM {
/** /**
* Type of key. The type will remain unchanged during the * Type of key. The type will remain unchanged during the
* processing, even if some fields could be changed (e.g., WPA * processing, even if some fields could be changed (e.g., WPA
* fields). * fields).
* @note * @note
* You can use constants AIRPDCAP_KEY_TYPE_xxx to indicate the * You can use constants DOT11DECRYPT_KEY_TYPE_xxx to indicate the
* key type. * key type.
*/ */
UINT8 KeyType; UINT8 KeyType;
@ -121,22 +121,22 @@ typedef struct _AIRPDCAP_KEY_ITEM {
* For WPA and WPA2 this implementation will use standards as * For WPA and WPA2 this implementation will use standards as
* defined in 802.11i (2004) and 802.1X (2004). * defined in 802.11i (2004) and 802.1X (2004).
*/ */
union AIRPDCAP_KEY_ITEMDATA { union DOT11DECRYPT_KEY_ITEMDATA {
struct AIRPDCAP_KEY_ITEMDATA_WEP { struct DOT11DECRYPT_KEY_ITEMDATA_WEP {
/** /**
* The binary value of the WEP key. * The binary value of the WEP key.
* @note * @note
* It is accepted a key of length between * It is accepted a key of length between
* AIRPDCAP_WEP_KEY_MINLEN and * DOT11DECRYPT_WEP_KEY_MINLEN and
* AIRPDCAP_WEP_KEY_MAXLEN. A WEP key * DOT11DECRYPT_WEP_KEY_MAXLEN. A WEP key
* standard-compliante should be either 40 bits * standard-compliante should be either 40 bits
* (10 hex-digits, 5 bytes) for WEP-40 or 104 bits * (10 hex-digits, 5 bytes) for WEP-40 or 104 bits
* (26 hex-digits, 13 bytes) for WEP-104. * (26 hex-digits, 13 bytes) for WEP-104.
*/ */
UCHAR WepKey[AIRPDCAP_WEP_KEY_MAXLEN]; UCHAR WepKey[DOT11DECRYPT_WEP_KEY_MAXLEN];
/** /**
* The length of the WEP key. Acceptable range * The length of the WEP key. Acceptable range
* is [AIRPDCAP_WEP_KEY_MINLEN;AIRPDCAP_WEP_KEY_MAXLEN]. * is [DOT11DECRYPT_WEP_KEY_MINLEN;DOT11DECRYPT_WEP_KEY_MAXLEN].
*/ */
size_t WepKeyLen; size_t WepKeyLen;
} Wep; } Wep;
@ -148,36 +148,36 @@ typedef struct _AIRPDCAP_KEY_ITEM {
* three fields and necessary fields will be automatically * three fields and necessary fields will be automatically
* calculated. * calculated.
*/ */
struct AIRPDCAP_KEY_ITEMDATA_WPA { struct DOT11DECRYPT_KEY_ITEMDATA_WPA {
UCHAR Psk[AIRPDCAP_WPA_PSK_LEN]; UCHAR Psk[DOT11DECRYPT_WPA_PSK_LEN];
UCHAR Ptk[AIRPDCAP_WPA_PTK_LEN]; UCHAR Ptk[DOT11DECRYPT_WPA_PTK_LEN];
} Wpa; } Wpa;
} KeyData; } KeyData;
struct AIRPDCAP_KEY_ITEMDATA_PWD { struct DOT11DECRYPT_KEY_ITEMDATA_PWD {
/** /**
* The string (null-terminated) value of * The string (null-terminated) value of
* the passphrase. * the passphrase.
*/ */
CHAR Passphrase[AIRPDCAP_WPA_PASSPHRASE_MAX_LEN+1]; CHAR Passphrase[DOT11DECRYPT_WPA_PASSPHRASE_MAX_LEN+1];
/** /**
* The value of the SSID (up to * The value of the SSID (up to
* AIRPDCAP_WPA_SSID_MAX_LEN octets). * DOT11DECRYPT_WPA_SSID_MAX_LEN octets).
* @note * @note
* A zero-length SSID indicates broadcast. * A zero-length SSID indicates broadcast.
*/ */
CHAR Ssid[AIRPDCAP_WPA_SSID_MAX_LEN]; CHAR Ssid[DOT11DECRYPT_WPA_SSID_MAX_LEN];
/** /**
*The length of the SSID *The length of the SSID
*/ */
size_t SsidLen; size_t SsidLen;
} UserPwd; } UserPwd;
} AIRPDCAP_KEY_ITEM, *PAIRPDCAP_KEY_ITEM; } DOT11DECRYPT_KEY_ITEM, *PDOT11DECRYPT_KEY_ITEM;
/** /**
* Collection of keys to use to decrypt packets * Collection of keys to use to decrypt packets
*/ */
typedef struct _AIRPDCAP_KEYS_COLLECTION { typedef struct _DOT11DECRYPT_KEYS_COLLECTION {
/** /**
* Number of stored keys * Number of stored keys
*/ */
@ -186,8 +186,8 @@ typedef struct _AIRPDCAP_KEYS_COLLECTION {
/** /**
* Array of nKeys keys * Array of nKeys keys
*/ */
AIRPDCAP_KEY_ITEM Keys[256]; DOT11DECRYPT_KEY_ITEM Keys[256];
} AIRPDCAP_KEYS_COLLECTION, *PAIRPDCAP_KEYS_COLLECTION; } DOT11DECRYPT_KEYS_COLLECTION, *PDOT11DECRYPT_KEYS_COLLECTION;
/* */ /* */
/******************************************************************************/ /******************************************************************************/
@ -205,10 +205,10 @@ typedef struct _AIRPDCAP_KEYS_COLLECTION {
* - MyPassword:MySSID (WPA + plaintext password + specific SSID) * - MyPassword:MySSID (WPA + plaintext password + specific SSID)
* - 01020304... (WPA + 256-bit raw key) * - 01020304... (WPA + 256-bit raw key)
* @param key_type [IN] Type of key used for string. Possibilities include: * @param key_type [IN] Type of key used for string. Possibilities include:
* - AIRPDCAP_KEY_TYPE_WEP (40/64-bit and 104/128-bit WEP) * - DOT11DECRYPT_KEY_TYPE_WEP (40/64-bit and 104/128-bit WEP)
* - AIRPDCAP_KEY_TYPE_WPA_PWD (WPA + plaintext password + "wildcard" SSID or * - DOT11DECRYPT_KEY_TYPE_WPA_PWD (WPA + plaintext password + "wildcard" SSID or
* WPA + plaintext password + specific SSID) * WPA + plaintext password + specific SSID)
* - AIRPDCAP_KEY_TYPE_WPA_PSK (WPA + 256-bit raw key) * - DOT11DECRYPT_KEY_TYPE_WPA_PSK (WPA + 256-bit raw key)
* @return A pointer to a freshly-g_malloc()ed decryption_key_t struct on * @return A pointer to a freshly-g_malloc()ed decryption_key_t struct on
* success, or NULL on failure. * success, or NULL on failure.
* @see get_key_string(), free_key_string() * @see get_key_string(), free_key_string()
@ -239,4 +239,4 @@ free_key_string(decryption_key_t *dk);
/******************************************************************************/ /******************************************************************************/
#endif /* _AIRPDCAP_USER_H */ #endif /* _DOT11DECRYPT_USER_H */

View File

@ -1,4 +1,4 @@
/* airpdcap_ws.h /* dot11decrypt_ws.h
* *
* Copyright (c) 2006 CACE Technologies, Davis (California) * Copyright (c) 2006 CACE Technologies, Davis (California)
* All rights reserved. * All rights reserved.
@ -32,20 +32,20 @@
* SUCH DAMAGE. * SUCH DAMAGE.
*/ */
#ifndef _AIRPDCAP_WS_H #ifndef _DOT11DECRYPT_WS_H
#define _AIRPDCAP_WS_H #define _DOT11DECRYPT_WS_H
#include "airpdcap_system.h" #include "dot11decrypt_system.h"
#include "ws_symbol_export.h" #include "ws_symbol_export.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif /* __cplusplus */ #endif /* __cplusplus */
WS_DLL_PUBLIC AIRPDCAP_CONTEXT airpdcap_ctx; WS_DLL_PUBLIC DOT11DECRYPT_CONTEXT dot11decrypt_ctx;
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif /* __cplusplus */ #endif /* __cplusplus */
#endif /* _AIRPDCAP_WS_H */ #endif /* _DOT11DECRYPT_WS_H */

View File

@ -76,7 +76,7 @@
#include "packet-sflow.h" #include "packet-sflow.h"
#include "packet-gre.h" #include "packet-gre.h"
#include <epan/crypt/airpdcap_ws.h> #include <epan/crypt/dot11decrypt_ws.h>
void proto_register_ieee80211(void); void proto_register_ieee80211(void);
void proto_reg_handoff_ieee80211(void); void proto_reg_handoff_ieee80211(void);
@ -161,22 +161,22 @@ uat_wep_key_record_update_cb(void* r, char** err)
dk_type = dk->type; dk_type = dk->type;
free_key_string(dk); free_key_string(dk);
switch (dk_type) { switch (dk_type) {
case AIRPDCAP_KEY_TYPE_WEP: case DOT11DECRYPT_KEY_TYPE_WEP:
case AIRPDCAP_KEY_TYPE_WEP_40: case DOT11DECRYPT_KEY_TYPE_WEP_40:
case AIRPDCAP_KEY_TYPE_WEP_104: case DOT11DECRYPT_KEY_TYPE_WEP_104:
if (rec->key != AIRPDCAP_KEY_TYPE_WEP) { if (rec->key != DOT11DECRYPT_KEY_TYPE_WEP) {
*err = g_strdup("Invalid key format"); *err = g_strdup("Invalid key format");
return FALSE; return FALSE;
} }
break; break;
case AIRPDCAP_KEY_TYPE_WPA_PWD: case DOT11DECRYPT_KEY_TYPE_WPA_PWD:
if (rec->key != AIRPDCAP_KEY_TYPE_WPA_PWD) { if (rec->key != DOT11DECRYPT_KEY_TYPE_WPA_PWD) {
*err = g_strdup("Invalid key format"); *err = g_strdup("Invalid key format");
return FALSE; return FALSE;
} }
break; break;
case AIRPDCAP_KEY_TYPE_WPA_PSK: case DOT11DECRYPT_KEY_TYPE_WPA_PSK:
if (rec->key != AIRPDCAP_KEY_TYPE_WPA_PSK) { if (rec->key != DOT11DECRYPT_KEY_TYPE_WPA_PSK) {
*err = g_strdup("Invalid key format"); *err = g_strdup("Invalid key format");
return FALSE; return FALSE;
} }
@ -211,7 +211,7 @@ ieee_80211_add_tagged_parameters(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree, int tagged_parameters_len, int ftype, proto_tree *tree, int tagged_parameters_len, int ftype,
association_sanity_check_t *association_sanity_check); association_sanity_check_t *association_sanity_check);
static tvbuff_t *try_decrypt(tvbuff_t *tvb, packet_info *pinfo, guint32 offset, guint32 len, guint8 *algorithm, guint32 *sec_header, guint32 *sec_trailer, PAIRPDCAP_KEY_ITEM used_key); static tvbuff_t *try_decrypt(tvbuff_t *tvb, packet_info *pinfo, guint32 offset, guint32 len, guint8 *algorithm, guint32 *sec_header, guint32 *sec_trailer, PDOT11DECRYPT_KEY_ITEM used_key);
static int weak_iv(guchar *iv); static int weak_iv(guchar *iv);
@ -2804,9 +2804,9 @@ static const value_string service_interval_granularity_vals[] = {
}; };
static const value_string wep_type_vals[] = { static const value_string wep_type_vals[] = {
{ AIRPDCAP_KEY_TYPE_WEP, STRING_KEY_TYPE_WEP }, { DOT11DECRYPT_KEY_TYPE_WEP, STRING_KEY_TYPE_WEP },
{ AIRPDCAP_KEY_TYPE_WPA_PWD, STRING_KEY_TYPE_WPA_PWD }, { DOT11DECRYPT_KEY_TYPE_WPA_PWD, STRING_KEY_TYPE_WPA_PWD },
{ AIRPDCAP_KEY_TYPE_WPA_PSK, STRING_KEY_TYPE_WPA_PSK }, { DOT11DECRYPT_KEY_TYPE_WPA_PSK, STRING_KEY_TYPE_WPA_PSK },
{ 0x00, NULL } { 0x00, NULL }
}; };
@ -5680,7 +5680,7 @@ static const val64_string number_of_taps_values[] = {
{0, NULL} {0, NULL}
}; };
AIRPDCAP_CONTEXT airpdcap_ctx; DOT11DECRYPT_CONTEXT dot11decrypt_ctx;
#define PSMP_STA_INFO_BROADCAST 0 #define PSMP_STA_INFO_BROADCAST 0
#define PSMP_STA_INFO_MULTICAST 1 #define PSMP_STA_INFO_MULTICAST 1
@ -15068,7 +15068,7 @@ ieee80211_tag_ssid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da
* assume that it's *valid* ASCII or *valid* UTF-8.) * assume that it's *valid* ASCII or *valid* UTF-8.)
* *
* So we really should extract it as an array of ssid_len bytes, * So we really should extract it as an array of ssid_len bytes,
* pass those bytes to AirPDcapSetLastSSID(), and: * pass those bytes to Dot11DecryptSetLastSSID(), and:
* *
* If the UTF-8 SSID subfield isn't set to 1, put the SSID in * If the UTF-8 SSID subfield isn't set to 1, put the SSID in
* as an ENC_ASCII string; * as an ENC_ASCII string;
@ -15102,7 +15102,7 @@ ieee80211_tag_ssid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da
*/ */
ssid = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, ssid_len, ENC_ASCII); ssid = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, ssid_len, ENC_ASCII);
if (ssid_len == (gint)tag_len) { if (ssid_len == (gint)tag_len) {
AirPDcapSetLastSSID(&airpdcap_ctx, (CHAR *) ssid, ssid_len); Dot11DecryptSetLastSSID(&dot11decrypt_ctx, (CHAR *) ssid, ssid_len);
} }
proto_tree_add_item(tree, hf_ieee80211_tag_ssid, tvb, offset, tag_len, proto_tree_add_item(tree, hf_ieee80211_tag_ssid, tvb, offset, tag_len,
ENC_ASCII|ENC_NA); ENC_ASCII|ENC_NA);
@ -20017,7 +20017,7 @@ dissect_ieee80211_common(tvbuff_t *tvb, packet_info *pinfo,
tvbuff_t *next_tvb = NULL; tvbuff_t *next_tvb = NULL;
wlan_hdr_t *whdr; wlan_hdr_t *whdr;
AIRPDCAP_KEY_ITEM used_key; DOT11DECRYPT_KEY_ITEM used_key;
p_add_proto_data(wmem_file_scope(), pinfo, proto_wlan, IS_DMG_KEY, GINT_TO_POINTER(isDMG)); p_add_proto_data(wmem_file_scope(), pinfo, proto_wlan, IS_DMG_KEY, GINT_TO_POINTER(isDMG));
@ -20937,7 +20937,7 @@ dissect_ieee80211_common(tvbuff_t *tvb, packet_info *pinfo,
if (enable_decryption && !pinfo->fd->flags.visited) { if (enable_decryption && !pinfo->fd->flags.visited) {
const guint8 *enc_data = tvb_get_ptr(tvb, 0, hdr_len+reported_len); const guint8 *enc_data = tvb_get_ptr(tvb, 0, hdr_len+reported_len);
/* The processing will take care of 4-way handshake sessions for WPA and WPA2 decryption */ /* The processing will take care of 4-way handshake sessions for WPA and WPA2 decryption */
AirPDcapPacketProcess(&airpdcap_ctx, enc_data, hdr_len, hdr_len+reported_len, NULL, 0, NULL, TRUE); Dot11DecryptPacketProcess(&dot11decrypt_ctx, enc_data, hdr_len, hdr_len+reported_len, NULL, 0, NULL, TRUE);
} }
/* /*
@ -21024,9 +21024,9 @@ dissect_ieee80211_common(tvbuff_t *tvb, packet_info *pinfo,
guint32 iv; guint32 iv;
guint8 key, keybyte; guint8 key, keybyte;
#define PROTECTION_ALG_WEP AIRPDCAP_KEY_TYPE_WEP #define PROTECTION_ALG_WEP DOT11DECRYPT_KEY_TYPE_WEP
#define PROTECTION_ALG_TKIP AIRPDCAP_KEY_TYPE_TKIP #define PROTECTION_ALG_TKIP DOT11DECRYPT_KEY_TYPE_TKIP
#define PROTECTION_ALG_CCMP AIRPDCAP_KEY_TYPE_CCMP #define PROTECTION_ALG_CCMP DOT11DECRYPT_KEY_TYPE_CCMP
#define PROTECTION_ALG_RSNA PROTECTION_ALG_CCMP | PROTECTION_ALG_TKIP #define PROTECTION_ALG_RSNA PROTECTION_ALG_CCMP | PROTECTION_ALG_TKIP
guint8 algorithm=G_MAXUINT8; guint8 algorithm=G_MAXUINT8;
#define IS_TKIP(tvb, hdr_len) (tvb_get_guint8(tvb, hdr_len + 1) == \ #define IS_TKIP(tvb, hdr_len) (tvb_get_guint8(tvb, hdr_len + 1) == \
@ -21109,16 +21109,16 @@ dissect_ieee80211_common(tvbuff_t *tvb, packet_info *pinfo,
can_decrypt = TRUE; can_decrypt = TRUE;
/* Add Key information to packet */ /* Add Key information to packet */
bytes_to_hexstr(out_buff, used_key.KeyData.Wpa.Ptk+32, AIRPDCAP_TK_LEN); /* TK is stored in PTK at offset 32 bytes and 16 bytes long */ bytes_to_hexstr(out_buff, used_key.KeyData.Wpa.Ptk+32, DOT11DECRYPT_TK_LEN); /* TK is stored in PTK at offset 32 bytes and 16 bytes long */
out_buff[2*AIRPDCAP_TK_LEN] = '\0'; out_buff[2*DOT11DECRYPT_TK_LEN] = '\0';
if (key == 0) { /* encrypted with pairwise key */ if (key == 0) { /* encrypted with pairwise key */
ti = proto_tree_add_string(wep_tree, hf_ieee80211_fc_analysis_tk, tvb, 0, 0, out_buff); ti = proto_tree_add_string(wep_tree, hf_ieee80211_fc_analysis_tk, tvb, 0, 0, out_buff);
PROTO_ITEM_SET_GENERATED(ti); PROTO_ITEM_SET_GENERATED(ti);
/* Also add the PMK used to to decrypt the packet. (PMK==PSK) */ /* Also add the PMK used to to decrypt the packet. (PMK==PSK) */
bytes_to_hexstr(out_buff, used_key.KeyData.Wpa.Psk, AIRPDCAP_WPA_PSK_LEN); /* 32 bytes */ bytes_to_hexstr(out_buff, used_key.KeyData.Wpa.Psk, DOT11DECRYPT_WPA_PSK_LEN); /* 32 bytes */
out_buff[2*AIRPDCAP_WPA_PSK_LEN] = '\0'; out_buff[2*DOT11DECRYPT_WPA_PSK_LEN] = '\0';
ti = proto_tree_add_string(wep_tree, hf_ieee80211_fc_analysis_pmk, tvb, 0, 0, out_buff); ti = proto_tree_add_string(wep_tree, hf_ieee80211_fc_analysis_pmk, tvb, 0, 0, out_buff);
PROTO_ITEM_SET_GENERATED(ti); PROTO_ITEM_SET_GENERATED(ti);
@ -21898,12 +21898,12 @@ dissect_wlan_rsna_eapol_wpa_or_rsn_key(tvbuff_t *tvb, packet_info *pinfo, proto_
/* It returns the algorithm used for decryption and the header and trailer lengths. */ /* It returns the algorithm used for decryption and the header and trailer lengths. */
static tvbuff_t * static tvbuff_t *
try_decrypt(tvbuff_t *tvb, packet_info *pinfo, guint offset, guint len, guint8 *algorithm, guint32 *sec_header, guint32 *sec_trailer, PAIRPDCAP_KEY_ITEM used_key) try_decrypt(tvbuff_t *tvb, packet_info *pinfo, guint offset, guint len, guint8 *algorithm, guint32 *sec_header, guint32 *sec_trailer, PDOT11DECRYPT_KEY_ITEM used_key)
{ {
const guint8 *enc_data; const guint8 *enc_data;
tvbuff_t *decr_tvb = NULL; tvbuff_t *decr_tvb = NULL;
guint32 dec_caplen; guint32 dec_caplen;
guchar dec_data[AIRPDCAP_MAX_CAPLEN]; guchar dec_data[DOT11DECRYPT_MAX_CAPLEN];
if (!enable_decryption) if (!enable_decryption)
return NULL; return NULL;
@ -21911,24 +21911,24 @@ try_decrypt(tvbuff_t *tvb, packet_info *pinfo, guint offset, guint len, guint8 *
/* get the entire packet */ /* get the entire packet */
enc_data = tvb_get_ptr(tvb, 0, len+offset); enc_data = tvb_get_ptr(tvb, 0, len+offset);
/* process packet with AirPDcap */ /* process packet with Dot11Decrypt */
if (AirPDcapPacketProcess(&airpdcap_ctx, enc_data, offset, offset+len, dec_data, &dec_caplen, if (Dot11DecryptPacketProcess(&dot11decrypt_ctx, enc_data, offset, offset+len, dec_data, &dec_caplen,
used_key, FALSE)==AIRPDCAP_RET_SUCCESS) used_key, FALSE)==DOT11DECRYPT_RET_SUCCESS)
{ {
guint8 *tmp; guint8 *tmp;
*algorithm=used_key->KeyType; *algorithm=used_key->KeyType;
switch (*algorithm) { switch (*algorithm) {
case AIRPDCAP_KEY_TYPE_WEP: case DOT11DECRYPT_KEY_TYPE_WEP:
*sec_header=AIRPDCAP_WEP_HEADER; *sec_header=DOT11DECRYPT_WEP_HEADER;
*sec_trailer=AIRPDCAP_WEP_TRAILER; *sec_trailer=DOT11DECRYPT_WEP_TRAILER;
break; break;
case AIRPDCAP_KEY_TYPE_CCMP: case DOT11DECRYPT_KEY_TYPE_CCMP:
*sec_header=AIRPDCAP_RSNA_HEADER; *sec_header=DOT11DECRYPT_RSNA_HEADER;
*sec_trailer=AIRPDCAP_CCMP_TRAILER; *sec_trailer=DOT11DECRYPT_CCMP_TRAILER;
break; break;
case AIRPDCAP_KEY_TYPE_TKIP: case DOT11DECRYPT_KEY_TYPE_TKIP:
*sec_header=AIRPDCAP_RSNA_HEADER; *sec_header=DOT11DECRYPT_RSNA_HEADER;
*sec_trailer=AIRPDCAP_TKIP_TRAILER; *sec_trailer=DOT11DECRYPT_TKIP_TRAILER;
break; break;
default: default:
return NULL; return NULL;
@ -21948,10 +21948,10 @@ try_decrypt(tvbuff_t *tvb, packet_info *pinfo, guint offset, guint len, guint8 *
/* Collect our WEP and WPA keys */ /* Collect our WEP and WPA keys */
static void static void
set_airpdcap_keys(void) set_dot11decrypt_keys(void)
{ {
guint i; guint i;
AIRPDCAP_KEYS_COLLECTION *keys = g_new(AIRPDCAP_KEYS_COLLECTION, 1); DOT11DECRYPT_KEYS_COLLECTION *keys = g_new(DOT11DECRYPT_KEYS_COLLECTION, 1);
GByteArray *bytes = NULL; GByteArray *bytes = NULL;
keys->nKeys = 0; keys->nKeys = 0;
@ -21963,21 +21963,21 @@ set_airpdcap_keys(void)
if (dk != NULL) if (dk != NULL)
{ {
AIRPDCAP_KEY_ITEM key; DOT11DECRYPT_KEY_ITEM key;
if (dk->type == AIRPDCAP_KEY_TYPE_WEP) if (dk->type == DOT11DECRYPT_KEY_TYPE_WEP)
{ {
gboolean res; gboolean res;
key.KeyType = AIRPDCAP_KEY_TYPE_WEP; key.KeyType = DOT11DECRYPT_KEY_TYPE_WEP;
bytes = g_byte_array_new(); bytes = g_byte_array_new();
res = hex_str_to_bytes(dk->key->str, bytes, FALSE); res = hex_str_to_bytes(dk->key->str, bytes, FALSE);
if (dk->key->str && res && (bytes->len > 0) && (bytes->len <= AIRPDCAP_WEP_KEY_MAXLEN)) if (dk->key->str && res && (bytes->len > 0) && (bytes->len <= DOT11DECRYPT_WEP_KEY_MAXLEN))
{ {
/* /*
* WEP key is correct (well, the can be even or odd, so it is not * WEP key is correct (well, the can be even or odd, so it is not
* a real check, I think... is a check performed somewhere in the * a real check, I think... is a check performed somewhere in the
* AirPDcap function???) * Dot11Decrypt function???)
*/ */
memcpy(key.KeyData.Wep.WepKey, bytes->data, bytes->len); memcpy(key.KeyData.Wep.WepKey, bytes->data, bytes->len);
key.KeyData.Wep.WepKeyLen = bytes->len; key.KeyData.Wep.WepKeyLen = bytes->len;
@ -21985,16 +21985,16 @@ set_airpdcap_keys(void)
keys->nKeys += 1; keys->nKeys += 1;
} }
} }
else if (dk->type == AIRPDCAP_KEY_TYPE_WPA_PWD) else if (dk->type == DOT11DECRYPT_KEY_TYPE_WPA_PWD)
{ {
key.KeyType = AIRPDCAP_KEY_TYPE_WPA_PWD; key.KeyType = DOT11DECRYPT_KEY_TYPE_WPA_PWD;
/* XXX - This just lops the end if the key off if it's too long. /* XXX - This just lops the end if the key off if it's too long.
* Should we handle this more gracefully? */ * Should we handle this more gracefully? */
g_strlcpy(key.UserPwd.Passphrase, dk->key->str, AIRPDCAP_WPA_PASSPHRASE_MAX_LEN+1); g_strlcpy(key.UserPwd.Passphrase, dk->key->str, DOT11DECRYPT_WPA_PASSPHRASE_MAX_LEN+1);
key.UserPwd.SsidLen = 0; key.UserPwd.SsidLen = 0;
if ((dk->ssid != NULL) && (dk->ssid->len <= AIRPDCAP_WPA_SSID_MAX_LEN)) if ((dk->ssid != NULL) && (dk->ssid->len <= DOT11DECRYPT_WPA_SSID_MAX_LEN))
{ {
memcpy(key.UserPwd.Ssid, dk->ssid->data, dk->ssid->len); memcpy(key.UserPwd.Ssid, dk->ssid->data, dk->ssid->len);
key.UserPwd.SsidLen = dk->ssid->len; key.UserPwd.SsidLen = dk->ssid->len;
@ -22003,15 +22003,15 @@ set_airpdcap_keys(void)
keys->Keys[keys->nKeys] = key; keys->Keys[keys->nKeys] = key;
keys->nKeys += 1; keys->nKeys += 1;
} }
else if (dk->type == AIRPDCAP_KEY_TYPE_WPA_PSK) else if (dk->type == DOT11DECRYPT_KEY_TYPE_WPA_PSK)
{ {
key.KeyType = AIRPDCAP_KEY_TYPE_WPA_PSK; key.KeyType = DOT11DECRYPT_KEY_TYPE_WPA_PSK;
bytes = g_byte_array_new(); bytes = g_byte_array_new();
hex_str_to_bytes(dk->key->str, bytes, FALSE); hex_str_to_bytes(dk->key->str, bytes, FALSE);
/* XXX - Pass the correct array of bytes... */ /* XXX - Pass the correct array of bytes... */
if (bytes->len <= AIRPDCAP_WPA_PSK_LEN) { if (bytes->len <= DOT11DECRYPT_WPA_PSK_LEN) {
memcpy(key.KeyData.Wpa.Psk, bytes->data, bytes->len); memcpy(key.KeyData.Wpa.Psk, bytes->data, bytes->len);
keys->Keys[keys->nKeys] = key; keys->Keys[keys->nKeys] = key;
@ -22027,7 +22027,7 @@ set_airpdcap_keys(void)
} }
/* Now set the keys */ /* Now set the keys */
AirPDcapSetKeys(&airpdcap_ctx, keys->Keys, keys->nKeys); Dot11DecryptSetKeys(&dot11decrypt_ctx, keys->Keys, keys->nKeys);
g_free(keys); g_free(keys);
} }
@ -22036,12 +22036,12 @@ init_wepkeys(void)
{ {
/* /*
* XXX - AirPDcap - That God sends it to us beautiful (che dio ce la mandi bona) * XXX - Dot11Decrypt - That God sends it to us beautiful (che dio ce la mandi bona)
* The next lines will add a key to the AirPDcap context. The keystring will be added * The next lines will add a key to the Dot11Decrypt context. The keystring will be added
* to the old WEP array too, but we don't care, because the packets will come here * to the old WEP array too, but we don't care, because the packets will come here
* already decrypted... One of these days we will fix this too * already decrypted... One of these days we will fix this too
*/ */
set_airpdcap_keys(); set_dot11decrypt_keys();
} }
/* /*

View File

@ -184,37 +184,37 @@ PATH_SPECIFIC_WHITELISTED_LICENSES = {
'UNKNOWN', 'UNKNOWN',
], ],
# The airpcap code is using BSD (3 clause) # The airpcap code is using BSD (3 clause)
'epan/crypt/airpdcap_interop.h': [ 'epan/crypt/dot11decrypt_interop.h': [
'BSD (3 clause) GPL (v2)' 'BSD (3 clause) GPL (v2)'
], ],
'epan/crypt/airpdcap_tkip.c': [ 'epan/crypt/dot11decrypt_tkip.c': [
'BSD (3 clause) GPL (v2)' 'BSD (3 clause) GPL (v2)'
], ],
'epan/crypt/airpdcap_ws.h': [ 'epan/crypt/dot11decrypt_ws.h': [
'BSD (3 clause) GPL (v2)' 'BSD (3 clause) GPL (v2)'
], ],
'epan/crypt/wep-wpadefs.h': [ 'epan/crypt/wep-wpadefs.h': [
'BSD (3 clause) GPL (v2)' 'BSD (3 clause) GPL (v2)'
], ],
'epan/crypt/airpdcap_system.h': [ 'epan/crypt/dot11decrypt_system.h': [
'BSD (3 clause) GPL (v2)' 'BSD (3 clause) GPL (v2)'
], ],
'epan/crypt/airpdcap_user.h': [ 'epan/crypt/dot11decrypt_user.h': [
'BSD (3 clause) GPL (v2)' 'BSD (3 clause) GPL (v2)'
], ],
'epan/crypt/airpdcap_ccmp.c': [ 'epan/crypt/dot11decrypt_ccmp.c': [
'BSD (3 clause) GPL (v2)' 'BSD (3 clause) GPL (v2)'
], ],
'epan/crypt/airpdcap_int.h': [ 'epan/crypt/dot11decrypt_int.h': [
'BSD (3 clause) GPL (v2)' 'BSD (3 clause) GPL (v2)'
], ],
'epan/crypt/airpdcap.c': [ 'epan/crypt/dot11decrypt.c': [
'BSD (3 clause) GPL (v2)' 'BSD (3 clause) GPL (v2)'
], ],
'epan/crypt/airpdcap_debug.h': [ 'epan/crypt/dot11decrypt_debug.h': [
'BSD (3 clause) GPL (v2)' 'BSD (3 clause) GPL (v2)'
], ],
'wsutil/airpdcap_wep.c': [ 'wsutil/dot11decrypt_wep.c': [
'BSD (3 clause) GPL (v2)' 'BSD (3 clause) GPL (v2)'
], ],
} }

View File

@ -38,7 +38,7 @@
#include <epan/prefs-int.h> #include <epan/prefs-int.h>
#include <epan/uat-int.h> #include <epan/uat-int.h>
#include <epan/strutil.h> #include <epan/strutil.h>
#include <epan/crypt/airpdcap_ws.h> #include <epan/crypt/dot11decrypt_ws.h>
#include <epan/crypt/wep-wpadefs.h> #include <epan/crypt/wep-wpadefs.h>
#include <epan/packet.h> #include <epan/packet.h>
@ -293,7 +293,7 @@ static guint
get_wep_key(pref_t *pref, gpointer ud) get_wep_key(pref_t *pref, gpointer ud)
{ {
gchar *key_string = NULL; gchar *key_string = NULL;
guint8 key_type = AIRPDCAP_KEY_TYPE_WEP; guint8 key_type = DOT11DECRYPT_KEY_TYPE_WEP;
keys_cb_data_t* user_data; keys_cb_data_t* user_data;
uat_t *uat; uat_t *uat;
guint i; guint i;
@ -322,16 +322,16 @@ get_wep_key(pref_t *pref, gpointer ud)
{ {
/* strip out key type if present */ /* strip out key type if present */
if (g_ascii_strncasecmp(wep_keys->string, STRING_KEY_TYPE_WEP ":", 4) == 0) { if (g_ascii_strncasecmp(wep_keys->string, STRING_KEY_TYPE_WEP ":", 4) == 0) {
key_type = AIRPDCAP_KEY_TYPE_WEP; key_type = DOT11DECRYPT_KEY_TYPE_WEP;
key_string = (gchar*)wep_keys->string+4; key_string = (gchar*)wep_keys->string+4;
} }
else if (g_ascii_strncasecmp(wep_keys->string, STRING_KEY_TYPE_WPA_PWD ":", 8) == 0) { else if (g_ascii_strncasecmp(wep_keys->string, STRING_KEY_TYPE_WPA_PWD ":", 8) == 0) {
key_string = (gchar*)wep_keys->string+8; key_string = (gchar*)wep_keys->string+8;
key_type = AIRPDCAP_KEY_TYPE_WPA_PWD; key_type = DOT11DECRYPT_KEY_TYPE_WPA_PWD;
} }
else if (g_ascii_strncasecmp(wep_keys->string, STRING_KEY_TYPE_WPA_PSK ":", 8) == 0) { else if (g_ascii_strncasecmp(wep_keys->string, STRING_KEY_TYPE_WPA_PSK ":", 8) == 0) {
key_string = (gchar*)wep_keys->string+8; key_string = (gchar*)wep_keys->string+8;
key_type = AIRPDCAP_KEY_TYPE_WPA_PSK; key_type = DOT11DECRYPT_KEY_TYPE_WPA_PSK;
} }
else { else {
key_type = wep_keys->key; key_type = wep_keys->key;
@ -435,7 +435,7 @@ write_wlan_driver_wep_keys_to_registry(GList* key_list)
*/ */
n = g_list_length(key_list); n = g_list_length(key_list);
for(k = 0; k < n; k++ ) for(k = 0; k < n; k++ )
if (((decryption_key_t*)g_list_nth_data(key_list,k))->type == AIRPDCAP_KEY_TYPE_WEP) if (((decryption_key_t*)g_list_nth_data(key_list,k))->type == DOT11DECRYPT_KEY_TYPE_WEP)
keys_in_list++; keys_in_list++;
/* /*
@ -471,14 +471,14 @@ write_wlan_driver_wep_keys_to_registry(GList* key_list)
key_item = (decryption_key_t*)g_list_nth_data(key_list,i); key_item = (decryption_key_t*)g_list_nth_data(key_list,i);
/* /*
* XXX - The AIRPDCAP_KEY_TYPE_WEP is the only supported right now! * XXX - The DOT11DECRYPT_KEY_TYPE_WEP is the only supported right now!
* We will have to modify the AirpcapKey structure in order to * We will have to modify the AirpcapKey structure in order to
* support the other two types! What happens now, is that simply the * support the other two types! What happens now, is that simply the
* not supported keys will just be discarded (they will be saved in Wireshark though) * not supported keys will just be discarded (they will be saved in Wireshark though)
*/ */
if (key_item->type == AIRPDCAP_KEY_TYPE_WEP) if (key_item->type == DOT11DECRYPT_KEY_TYPE_WEP)
{ {
KeysCollection->Keys[y].KeyType = AIRPDCAP_KEY_TYPE_WEP; KeysCollection->Keys[y].KeyType = DOT11DECRYPT_KEY_TYPE_WEP;
new_key = g_string_new(key_item->key->str); new_key = g_string_new(key_item->key->str);
@ -497,11 +497,11 @@ write_wlan_driver_wep_keys_to_registry(GList* key_list)
y++; y++;
g_string_free(new_key,TRUE); g_string_free(new_key,TRUE);
} }
else if (key_item->type == AIRPDCAP_KEY_TYPE_WPA_PWD) else if (key_item->type == DOT11DECRYPT_KEY_TYPE_WPA_PWD)
{ {
/* XXX - The driver cannot deal with this kind of key yet... */ /* XXX - The driver cannot deal with this kind of key yet... */
} }
else if (key_item->type == AIRPDCAP_KEY_TYPE_WPA_PMK) else if (key_item->type == DOT11DECRYPT_KEY_TYPE_WPA_PMK)
{ {
/* XXX - The driver cannot deal with this kind of key yet... */ /* XXX - The driver cannot deal with this kind of key yet... */
} }
@ -622,7 +622,7 @@ write_wlan_wep_keys_to_registry(airpcap_if_info_t* info_if, GList* key_list)
for(i = 0; i < keys_in_list; i++) for(i = 0; i < keys_in_list; i++)
{ {
KeysCollection->Keys[i].KeyType = AIRPDCAP_KEY_TYPE_WEP; KeysCollection->Keys[i].KeyType = DOT11DECRYPT_KEY_TYPE_WEP;
/* Retrieve the Item corresponding to the i-th key */ /* Retrieve the Item corresponding to the i-th key */
key_item = (decryption_key_t*)g_list_nth_data(key_list,i); key_item = (decryption_key_t*)g_list_nth_data(key_list,i);
@ -679,7 +679,7 @@ airpcap_get_key_string(AirpcapKey key)
dst = NULL; dst = NULL;
src = NULL; src = NULL;
if (key.KeyType == AIRPDCAP_KEY_TYPE_WEP) if (key.KeyType == DOT11DECRYPT_KEY_TYPE_WEP)
{ {
if (key.KeyLen != 0) if (key.KeyLen != 0)
{ {
@ -699,11 +699,11 @@ airpcap_get_key_string(AirpcapKey key)
g_free(src); g_free(src);
} }
} }
else if (key.KeyType == AIRPDCAP_KEY_TYPE_WPA_PWD) else if (key.KeyType == DOT11DECRYPT_KEY_TYPE_WPA_PWD)
{ {
/* XXX - Add code here */ /* XXX - Add code here */
} }
else if (key.KeyType == AIRPDCAP_KEY_TYPE_WPA_PMK) else if (key.KeyType == DOT11DECRYPT_KEY_TYPE_WPA_PMK)
{ {
/* XXX - Add code here */ /* XXX - Add code here */
} }
@ -748,7 +748,7 @@ save_wlan_driver_wep_keys(void)
for(i=0; i<keys_in_list; i++) for(i=0; i<keys_in_list; i++)
{ {
/* Only if it is a WEP key... */ /* Only if it is a WEP key... */
if (fake_info_if->keysCollection->Keys[i].KeyType == AIRPDCAP_KEY_TYPE_WEP) if (fake_info_if->keysCollection->Keys[i].KeyType == DOT11DECRYPT_KEY_TYPE_WEP)
{ {
tmp_key = airpcap_get_key_string(fake_info_if->keysCollection->Keys[i]); tmp_key = airpcap_get_key_string(fake_info_if->keysCollection->Keys[i]);
key_list = g_list_append(key_list,g_strdup(tmp_key)); key_list = g_list_append(key_list,g_strdup(tmp_key));
@ -902,11 +902,11 @@ print_key_list(GList* key_list)
g_print("BITS: %d\n",tmp->bits); g_print("BITS: %d\n",tmp->bits);
if (tmp->type == AIRPDCAP_KEY_TYPE_WEP) if (tmp->type == DOT11DECRYPT_KEY_TYPE_WEP)
g_print("TYPE: %s\n",AIRPCAP_WEP_KEY_STRING); g_print("TYPE: %s\n",AIRPCAP_WEP_KEY_STRING);
else if (tmp->type == AIRPDCAP_KEY_TYPE_WPA_PWD) else if (tmp->type == DOT11DECRYPT_KEY_TYPE_WPA_PWD)
g_print("TYPE: %s\n",AIRPCAP_WPA_PWD_KEY_STRING); g_print("TYPE: %s\n",AIRPCAP_WPA_PWD_KEY_STRING);
else if (tmp->type == AIRPDCAP_KEY_TYPE_WPA_PMK) else if (tmp->type == DOT11DECRYPT_KEY_TYPE_WPA_PMK)
g_print("TYPE: %s\n",AIRPCAP_WPA_BIN_KEY_STRING); g_print("TYPE: %s\n",AIRPCAP_WPA_BIN_KEY_STRING);
else else
g_print("TYPE: %s\n","???"); g_print("TYPE: %s\n","???");
@ -945,7 +945,7 @@ get_airpcap_device_keys(airpcap_if_info_t* info_if)
for(i=0; i<keys_in_list; i++) for(i=0; i<keys_in_list; i++)
{ {
/* Different things to do depending on the key type */ /* Different things to do depending on the key type */
if (info_if->keysCollection->Keys[i].KeyType == AIRPDCAP_KEY_TYPE_WEP) if (info_if->keysCollection->Keys[i].KeyType == DOT11DECRYPT_KEY_TYPE_WEP)
{ {
/* allocate memory for the new key item */ /* allocate memory for the new key item */
new_key = (decryption_key_t*)g_malloc(sizeof(decryption_key_t)); new_key = (decryption_key_t*)g_malloc(sizeof(decryption_key_t));
@ -968,11 +968,11 @@ get_airpcap_device_keys(airpcap_if_info_t* info_if)
/* Append the new element in the list */ /* Append the new element in the list */
key_list = g_list_append(key_list,(gpointer)new_key); key_list = g_list_append(key_list,(gpointer)new_key);
} }
else if (info_if->keysCollection->Keys[i].KeyType == AIRPDCAP_KEY_TYPE_WPA_PWD) else if (info_if->keysCollection->Keys[i].KeyType == DOT11DECRYPT_KEY_TYPE_WPA_PWD)
{ {
/* XXX - Not supported yet */ /* XXX - Not supported yet */
} }
else if (info_if->keysCollection->Keys[i].KeyType == AIRPDCAP_KEY_TYPE_WPA_PMK) else if (info_if->keysCollection->Keys[i].KeyType == DOT11DECRYPT_KEY_TYPE_WPA_PMK)
{ {
/* XXX - Not supported yet */ /* XXX - Not supported yet */
} }
@ -1017,7 +1017,7 @@ get_airpcap_driver_keys(void)
for(i=0; i<keys_in_list; i++) for(i=0; i<keys_in_list; i++)
{ {
/* Different things to do depending on the key type */ /* Different things to do depending on the key type */
if (fake_info_if->keysCollection->Keys[i].KeyType == AIRPDCAP_KEY_TYPE_WEP) if (fake_info_if->keysCollection->Keys[i].KeyType == DOT11DECRYPT_KEY_TYPE_WEP)
{ {
/* allocate memory for the new key item */ /* allocate memory for the new key item */
new_key = (decryption_key_t*)g_malloc(sizeof(decryption_key_t)); new_key = (decryption_key_t*)g_malloc(sizeof(decryption_key_t));
@ -1040,11 +1040,11 @@ get_airpcap_driver_keys(void)
/* Append the new element in the list */ /* Append the new element in the list */
key_list = g_list_append(key_list,(gpointer)new_key); key_list = g_list_append(key_list,(gpointer)new_key);
} }
else if (fake_info_if->keysCollection->Keys[i].KeyType == AIRPDCAP_KEY_TYPE_WPA_PWD) else if (fake_info_if->keysCollection->Keys[i].KeyType == DOT11DECRYPT_KEY_TYPE_WPA_PWD)
{ {
/* XXX - Not supported yet */ /* XXX - Not supported yet */
} }
else if (fake_info_if->keysCollection->Keys[i].KeyType == AIRPDCAP_KEY_TYPE_WPA_PMK) else if (fake_info_if->keysCollection->Keys[i].KeyType == DOT11DECRYPT_KEY_TYPE_WPA_PMK)
{ {
/* XXX - Not supported yet */ /* XXX - Not supported yet */
} }
@ -1295,7 +1295,7 @@ keys_are_equals(decryption_key_t *k1,decryption_key_t *k2)
return FALSE; return FALSE;
/* XXX - Remove this check when we will have the WPA/WPA2 decryption in the Driver! */ /* XXX - Remove this check when we will have the WPA/WPA2 decryption in the Driver! */
/** if ( (k1->type == AIRPDCAP_KEY_TYPE_WPA_PWD) || (k2->type == AIRPDCAP_KEY_TYPE_WPA_PWD) || (k1->type == AIRPDCAP_KEY_TYPE_WPA_PMK) || (k2->type == AIRPDCAP_KEY_TYPE_WPA_PMK) ) **/ /** if ( (k1->type == DOT11DECRYPT_KEY_TYPE_WPA_PWD) || (k2->type == DOT11DECRYPT_KEY_TYPE_WPA_PWD) || (k1->type == DOT11DECRYPT_KEY_TYPE_WPA_PMK) || (k2->type == DOT11DECRYPT_KEY_TYPE_WPA_PMK) ) **/
/** return TRUE; **/ /** return TRUE; **/
if (g_string_equal(k1->key,k2->key) && if (g_string_equal(k1->key,k2->key) &&
@ -1341,7 +1341,7 @@ key_lists_are_equal(GList* list1, GList* list2)
for(i=0;i<n1;i++) for(i=0;i<n1;i++)
{ {
dk1=(decryption_key_t*)g_list_nth_data(list1,i); dk1=(decryption_key_t*)g_list_nth_data(list1,i);
if (dk1->type == AIRPDCAP_KEY_TYPE_WEP) if (dk1->type == DOT11DECRYPT_KEY_TYPE_WEP)
{ {
wep_list1 = g_list_append(wep_list1,(gpointer)dk1); wep_list1 = g_list_append(wep_list1,(gpointer)dk1);
wep_n1++; wep_n1++;
@ -1350,7 +1350,7 @@ key_lists_are_equal(GList* list1, GList* list2)
for(i=0;i<n2;i++) for(i=0;i<n2;i++)
{ {
dk2=(decryption_key_t*)g_list_nth_data(list2,i); dk2=(decryption_key_t*)g_list_nth_data(list2,i);
if (dk2->type == AIRPDCAP_KEY_TYPE_WEP) if (dk2->type == DOT11DECRYPT_KEY_TYPE_WEP)
{ {
wep_list2 = g_list_append(wep_list2,(gpointer)dk2); wep_list2 = g_list_append(wep_list2,(gpointer)dk2);
wep_n2++; wep_n2++;
@ -1584,7 +1584,7 @@ airpcap_fill_key_list(GtkListStore *key_list_store)
{ {
curr_key = (decryption_key_t*)g_list_nth_data(wireshark_key_list,i); curr_key = (decryption_key_t*)g_list_nth_data(wireshark_key_list,i);
if (curr_key->type == AIRPDCAP_KEY_TYPE_WEP) if (curr_key->type == DOT11DECRYPT_KEY_TYPE_WEP)
{ {
gtk_list_store_insert_with_values(key_list_store , &iter, G_MAXINT, gtk_list_store_insert_with_values(key_list_store , &iter, G_MAXINT,
KL_COL_TYPE, AIRPCAP_WEP_KEY_STRING, KL_COL_TYPE, AIRPCAP_WEP_KEY_STRING,
@ -1592,7 +1592,7 @@ airpcap_fill_key_list(GtkListStore *key_list_store)
KL_COL_SSID, "", KL_COL_SSID, "",
-1); -1);
} }
else if (curr_key->type == AIRPDCAP_KEY_TYPE_WPA_PWD) else if (curr_key->type == DOT11DECRYPT_KEY_TYPE_WPA_PWD)
{ {
if (curr_key->ssid != NULL) if (curr_key->ssid != NULL)
{ {
@ -1613,7 +1613,7 @@ airpcap_fill_key_list(GtkListStore *key_list_store)
-1); -1);
} }
} }
else if (curr_key->type == AIRPDCAP_KEY_TYPE_WPA_PMK) else if (curr_key->type == DOT11DECRYPT_KEY_TYPE_WPA_PMK)
{ {
gtk_list_store_insert_with_values(key_list_store , &iter, G_MAXINT, gtk_list_store_insert_with_values(key_list_store , &iter, G_MAXINT,
KL_COL_TYPE, AIRPCAP_WPA_BIN_KEY_STRING, KL_COL_TYPE, AIRPCAP_WPA_BIN_KEY_STRING,
@ -2044,11 +2044,11 @@ airpcap_add_keys_to_driver_from_list(GtkListStore *key_list_store, airpcap_if_in
-1); -1);
if (g_ascii_strcasecmp(row_type,AIRPCAP_WEP_KEY_STRING) == 0) if (g_ascii_strcasecmp(row_type,AIRPCAP_WEP_KEY_STRING) == 0)
KeysCollection->Keys[i].KeyType = AIRPDCAP_KEY_TYPE_WEP; KeysCollection->Keys[i].KeyType = DOT11DECRYPT_KEY_TYPE_WEP;
else if (g_ascii_strcasecmp(row_type,AIRPCAP_WPA_PWD_KEY_STRING) == 0) else if (g_ascii_strcasecmp(row_type,AIRPCAP_WPA_PWD_KEY_STRING) == 0)
KeysCollection->Keys[i].KeyType = AIRPDCAP_KEY_TYPE_WPA_PWD; KeysCollection->Keys[i].KeyType = DOT11DECRYPT_KEY_TYPE_WPA_PWD;
else if (g_ascii_strcasecmp(row_type,AIRPCAP_WPA_BIN_KEY_STRING) == 0) else if (g_ascii_strcasecmp(row_type,AIRPCAP_WPA_BIN_KEY_STRING) == 0)
KeysCollection->Keys[i].KeyType = AIRPDCAP_KEY_TYPE_WPA_PMK; KeysCollection->Keys[i].KeyType = DOT11DECRYPT_KEY_TYPE_WPA_PMK;
/* Retrieve the Item corresponding to the i-th key */ /* Retrieve the Item corresponding to the i-th key */
key_len = strlen(row_key); key_len = strlen(row_key);
@ -2057,7 +2057,7 @@ airpcap_add_keys_to_driver_from_list(GtkListStore *key_list_store, airpcap_if_in
memset(&KeysCollection->Keys[i].KeyData, 0, sizeof(KeysCollection->Keys[i].KeyData)); memset(&KeysCollection->Keys[i].KeyData, 0, sizeof(KeysCollection->Keys[i].KeyData));
/* Key must be saved in a different way, depending on its type... */ /* Key must be saved in a different way, depending on its type... */
if (KeysCollection->Keys[i].KeyType == AIRPDCAP_KEY_TYPE_WEP) if (KeysCollection->Keys[i].KeyType == DOT11DECRYPT_KEY_TYPE_WEP)
{ {
for(j = 0 ; j < key_len; j += 2) for(j = 0 ; j < key_len; j += 2)
{ {
@ -2127,7 +2127,7 @@ airpcap_read_and_save_decryption_keys_from_list_store(GtkListStore* key_list_sto
tmp_dk = (decryption_key_t*)g_malloc(sizeof(decryption_key_t)); tmp_dk = (decryption_key_t*)g_malloc(sizeof(decryption_key_t));
tmp_dk->key = g_string_new(tmp_key); tmp_dk->key = g_string_new(tmp_key);
tmp_dk->ssid = NULL; tmp_dk->ssid = NULL;
tmp_dk->type = AIRPDCAP_KEY_TYPE_WEP; tmp_dk->type = DOT11DECRYPT_KEY_TYPE_WEP;
tmp_dk->bits = (guint) tmp_dk->key->len * 4; tmp_dk->bits = (guint) tmp_dk->key->len * 4;
key_list = g_list_append(key_list,tmp_dk); key_list = g_list_append(key_list,tmp_dk);
} }
@ -2137,7 +2137,7 @@ airpcap_read_and_save_decryption_keys_from_list_store(GtkListStore* key_list_sto
tmp_dk->key = g_string_new(tmp_key); tmp_dk->key = g_string_new(tmp_key);
tmp_dk->ssid = g_byte_array_new(); tmp_dk->ssid = g_byte_array_new();
uri_str_to_bytes(tmp_ssid?tmp_ssid:"", tmp_dk->ssid); uri_str_to_bytes(tmp_ssid?tmp_ssid:"", tmp_dk->ssid);
tmp_dk->type = AIRPDCAP_KEY_TYPE_WPA_PWD; tmp_dk->type = DOT11DECRYPT_KEY_TYPE_WPA_PWD;
tmp_dk->bits = 256; tmp_dk->bits = 256;
key_list = g_list_append(key_list,tmp_dk); key_list = g_list_append(key_list,tmp_dk);
} }
@ -2146,7 +2146,7 @@ airpcap_read_and_save_decryption_keys_from_list_store(GtkListStore* key_list_sto
tmp_dk = (decryption_key_t*)g_malloc(sizeof(decryption_key_t)); tmp_dk = (decryption_key_t*)g_malloc(sizeof(decryption_key_t));
tmp_dk->key = g_string_new(tmp_key); tmp_dk->key = g_string_new(tmp_key);
tmp_dk->ssid = NULL; /* No SSID in this case */ tmp_dk->ssid = NULL; /* No SSID in this case */
tmp_dk->type = AIRPDCAP_KEY_TYPE_WPA_PMK; tmp_dk->type = DOT11DECRYPT_KEY_TYPE_WPA_PMK;
tmp_dk->bits = 256; tmp_dk->bits = 256;
key_list = g_list_append(key_list,tmp_dk); key_list = g_list_append(key_list,tmp_dk);
} }

View File

@ -198,7 +198,7 @@
#include "airpcap_gui_utils.h" #include "airpcap_gui_utils.h"
#endif #endif
#include <epan/crypt/airpdcap_ws.h> #include <epan/crypt/dot11decrypt_ws.h>
#define INVALID_OPTION 1 #define INVALID_OPTION 1
@ -2018,7 +2018,7 @@ main(int argc, char *argv[])
/* initialize the funnel mini-api */ /* initialize the funnel mini-api */
initialize_funnel_ops(); initialize_funnel_ops();
AirPDcapInitContext(&airpdcap_ctx); Dot11DecryptInitContext(&dot11decrypt_ctx);
#ifdef _WIN32 #ifdef _WIN32
/* Load wpcap if possible. Do this before collecting the run-time version information */ /* Load wpcap if possible. Do this before collecting the run-time version information */
@ -2631,7 +2631,7 @@ main(int argc, char *argv[])
epan_cleanup(); epan_cleanup();
extcap_cleanup(); extcap_cleanup();
AirPDcapDestroyContext(&airpdcap_ctx); Dot11DecryptDestroyContext(&dot11decrypt_ctx);
#ifdef _WIN32 #ifdef _WIN32
/* hide the (unresponsive) main window, while asking the user to close the console window */ /* hide the (unresponsive) main window, while asking the user to close the console window */

View File

@ -44,7 +44,7 @@
#include "airpcap_dlg.h" #include "airpcap_dlg.h"
#include "airpcap_gui_utils.h" #include "airpcap_gui_utils.h"
#include <epan/crypt/airpdcap_ws.h> #include <epan/crypt/dot11decrypt_ws.h>
gboolean block_toolbar_signals = FALSE; gboolean block_toolbar_signals = FALSE;

View File

@ -112,7 +112,7 @@
//# include "airpcap_gui_utils.h" //# include "airpcap_gui_utils.h"
#endif #endif
#include "epan/crypt/airpdcap_ws.h" #include "epan/crypt/dot11decrypt_ws.h"
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0)) #if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
#include <QTextCodec> #include <QTextCodec>
@ -544,7 +544,7 @@ int main(int argc, char *qt_argv[])
// xxx qtshark // xxx qtshark
//initialize_funnel_ops(); //initialize_funnel_ops();
AirPDcapInitContext(&airpdcap_ctx); Dot11DecryptInitContext(&dot11decrypt_ctx);
QString cf_name; QString cf_name;
unsigned int in_file_type = WTAP_TYPE_AUTO; unsigned int in_file_type = WTAP_TYPE_AUTO;
@ -940,7 +940,7 @@ int main(int argc, char *qt_argv[])
extcap_cleanup(); extcap_cleanup();
AirPDcapDestroyContext(&airpdcap_ctx); Dot11DecryptDestroyContext(&dot11decrypt_ctx);
#ifdef _WIN32 #ifdef _WIN32
/* Shutdown windows sockets */ /* Shutdown windows sockets */

View File

@ -11,7 +11,7 @@ indent_size = 2
indent_style = tab indent_style = tab
indent_size = tab indent_size = tab
[airpdcap_wep.[ch]] [dot11decrypt_wep.[ch]]
indent_style = tab indent_style = tab
indent_size = tab indent_size = tab

View File

@ -87,7 +87,6 @@ set(WSUTIL_PUBLIC_HEADERS
set(WSUTIL_COMMON_FILES set(WSUTIL_COMMON_FILES
adler32.c adler32.c
airpdcap_wep.c
base32.c base32.c
base64.c base64.c
bitswap.c bitswap.c
@ -104,6 +103,7 @@ set(WSUTIL_COMMON_FILES
crc7.c crc7.c
crc8.c crc8.c
crc11.c crc11.c
dot11decrypt_wep.c
eax.c eax.c
filesystem.c filesystem.c
frequency-utils.c frequency-utils.c

View File

@ -124,7 +124,6 @@ libwsutil_sse42_la_CFLAGS = $(AM_CFLAGS) $(CFLAGS_SSE42)
libwsutil_la_SOURCES = \ libwsutil_la_SOURCES = \
adler32.c \ adler32.c \
airpdcap_wep.c \
base32.c \ base32.c \
base64.c \ base64.c \
bitswap.c \ bitswap.c \
@ -142,6 +141,7 @@ libwsutil_la_SOURCES = \
crc16.c \ crc16.c \
crc16-plain.c \ crc16-plain.c \
crc32.c \ crc32.c \
dot11decrypt_wep.c \
eax.c \ eax.c \
filesystem.c \ filesystem.c \
frequency-utils.c \ frequency-utils.c \

View File

@ -93,7 +93,7 @@ WS_DLL_PUBLIC guint32 crc32_0x0AA725CF_seed(const guint8 *buf, guint len, guint3
*/ */
WS_DLL_PUBLIC guint32 crc32_0x5D6DCB_seed(const guint8 *buf, guint len, guint32 seed); WS_DLL_PUBLIC guint32 crc32_0x5D6DCB_seed(const guint8 *buf, guint len, guint32 seed);
WS_DLL_PUBLIC int AirPDcapWepDecrypt( WS_DLL_PUBLIC int Dot11DecryptWepDecrypt(
const guchar *seed, const guchar *seed,
const size_t seed_len, const size_t seed_len,
guchar *cypher_text, guchar *cypher_text,

View File

@ -1,4 +1,4 @@
/* airpcap_wep.c /* dot11decrypt_wep.c
* *
* Copyright (c) 2002-2005 Sam Leffler, Errno Consulting * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting
* Copyright (c) 2006 CACE Technologies, Davis (California) * Copyright (c) 2006 CACE Technologies, Davis (California)
@ -45,7 +45,7 @@
/* Note: copied from FreeBSD source code, RELENG 6, */ /* Note: copied from FreeBSD source code, RELENG 6, */
/* sys/net80211/ieee80211_crypto_wep.c, 391 */ /* sys/net80211/ieee80211_crypto_wep.c, 391 */
int AirPDcapWepDecrypt( int Dot11DecryptWepDecrypt(
const guchar *seed, const guchar *seed,
const size_t seed_len, const size_t seed_len,
guchar *cypher_text, guchar *cypher_text,
@ -90,11 +90,11 @@ int AirPDcapWepDecrypt(
S_SWAP(i, j); S_SWAP(i, j);
if ((icv[k] ^ S[(S[i] + S[j]) & 0xff]) != *cypher_text++) { if ((icv[k] ^ S[(S[i] + S[j]) & 0xff]) != *cypher_text++) {
/* ICV mismatch - drop frame */ /* ICV mismatch - drop frame */
return 1/*AIRPDCAP_RET_UNSUCCESS*/; return 1/*DOT11DECRYPT_RET_UNSUCCESS*/;
} }
} }
return 0/*AIRPDCAP_RET_SUCCESS*/; return 0/*DOT11DECRYPT_RET_SUCCESS*/;
} }
/* /*