⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cardif.h

📁 linux 下通过802.1认证的安装包
💻 H
字号:
/**
 * Card driver specific interface.
 *
 * Licensed under a dual GPL/BSD license.  (See LICENSE file for more info.)
 *
 * \file cardif.h
 *
 * \author chris@open1x.org
 *
 **/

#ifndef _CARDIF_H_
#define _CARDIF_H_

#include "../context.h"

// Alg methods to use when doing WPA.
#define WPA_NONE 0
#define WPA_WEP  1
#define WPA_TKIP 2
#define WPA_CCMP 3

// Abilities that will be stored in the SSID cache, for a "quick look" at
// what the SSID supports.
#define ENC       0x02
#define WPA_IE    0x04
#define RSN_IE    0x08

#define DRIVER_NONE        0
#define DRIVER_WEXT        1
#define DRIVER_ATMEL       3

#define FRAMESIZE          1520

// Reasons for a disassociation.
// Valid sections include 7.3.1.7 in 802.11i-2004.
#define DISASSOC_UNSPECIFIED          1     // Unspecified reason
#define DISASSOC_INVALID_IE           13    // Invalid information element
#define DISASSOC_MIC_FAILURE          14    // MIC failure
#define DISASSOC_4WAY_TIMEOUT         15    // 4-way handshake timeout
#define DISASSOC_GROUPKEY_TIMEOUT     16    // group key handshake timeout
#define DISASSOC_DIFF_IE              17    // IEs in assoc, and 4-way differ.
#define DISASSOC_INVALID_GROUP_CIPHER 18    // Invalid group cipher
#define DISASSOC_INVALID_PAIR_CIPHER  19    // Invalid pairwise cipher
#define DISASSOC_INVALID_AKMP         20    // Invalid AKMP
#define DISASSOC_BAD_RSN_VERSION      21    // Unsupported RSN version
#define DISASSOC_INVALID_RSN_CAPS     22    // Invalid RSN capabilities
#define DISASSOC_DOT1X_FAILURE        23    // 802.1X authentication failure.
#define DISASSOC_CIPHER_REJECT        24    // Cipher suite rejected.

// Return values for associated, and unassociated.
#define IS_ASSOCIATED                 1
#define IS_UNASSOCIATED               2

// Different encryption/authentication modes that are supported.  (Since
// any interface should be able to do 802.1X, we don't flag that here.)
#define DOES_WPA                      0x00000001
#define DOES_WPA2                     0x00000002
#define DOES_WEP40                    0x00000004
#define DOES_WEP104                   0x00000008
#define DOES_TKIP                     0x00000010
#define DOES_CCMP                     0x00000020

/* RFC 2863 operational status (using different names to avoid compile problems) */
enum {
  XIF_OPER_UNKNOWN,
  XIF_OPER_NOTPRESENT,
  XIF_OPER_DOWN,
  XIF_OPER_LOWERLAYERDOWN,
  XIF_OPER_TESTING,
  XIF_OPER_DORMANT,
  XIF_OPER_UP,
};

enum {
  XIF_LINK_MODE_DEFAULT,
  XIF_LINK_MODE_DORMANT,
};

struct cardif_funcs {

  // Issue a scan request.
  int (*scan)(context *, char);

  // Send a disassociate message to the AP
  int (*disassociate)(context *, int);

  // Set a WEP key
  int (*set_wep_key)(context *, uint8_t *, int, int);

  // Set a TKIP key.
  int (*set_tkip_key)(context *, unsigned char *, int, int, 
		      char *, int);

  // Set a CCMP (AES) key.
  int (*set_ccmp_key)(context *, unsigned char *, int, int,
		      char *, int);

  // Delete a key.
  int (*delete_key)(context *, int, int);

  // Tell the card to associate to a specific SSID.
  void (*associate)(context *);

  // Request the SSID for this card.
  int (*get_ssid)(context *, char *, unsigned int);

  // Request the BSSID.
  int (*get_bssid)(context *, char *);

  // Enable the WPA state.  (Set the IEs, etc.)
  int (*wpa_state)(context *, char);

  // Enable WPA in the card.
  int (*wpa)(context *, char);

  // Set WEP keys needed to connect to a new AP.
  int (*wep_associate)(context *, int);

  // Tell the driver to enable countermeasures.
  int (*countermeasures)(context *, char);

  // Tell the driver to drop all unencrypted frames.
  int (*drop_unencrypted)(context *, char);

  // Return the WPA IE we need for this driver.
  int (*get_wpa_ie)(context *, char *, int *);

  // Return the WPA2 IE we need for this driver.
  int (*get_wpa2_ie)(context *, char *, int *);

  // Disable encryption.
  int (*enc_disable)(context *);

  // Get the encryption capabilities of the card. (WEP, WPA, WPA2, TKIP, CCMP)
  void (*enc_capabilities)(context *);

  // Change the bssid that we are connected to.
  int (*setbssid)(context *, uint8_t *);

  // Notify the kernel (and any listeners) of the RFC2863 state of the 
  // interface.
  void (*set_operstate)(context *, uint8_t);

  // Notify the kernel that the link should start in dormant.
  void (*set_linkmode)(context *, uint8_t);

  // Get the percentage of the signal strength.
  int (*get_signal_percent)(context *);
};

// Stuff needed by both wired, and wireless interfaces.

int cardif_init(context *, char);
int cardif_deinit(context *);
int cardif_get_socket(context *);
int cardif_sendframe(context *);
int cardif_getframe(context *);
void cardif_clock_tick(context *);
int cardif_get_if_state(context *);
int cardif_int_is_valid(char *);
int cardif_check_dest(context *);
int cardif_validate(char *);
char *cardif_get_search_ssid();
void cardif_set_search_ssid(char *);
void cardif_enum_ints();
char *cardif_get_ip(context *);
char *cardif_get_netmask(context *);
char *cardif_get_gw(context *);
char *cardif_get_dns1(context *);
char *cardif_get_dns2(context *);
char *cardif_get_dns3(context *);
char *cardif_find_description(char *);
char *cardif_get_mac_str(char *);
int cardif_is_wireless_by_name(char *);
void cardif_cancel_io(context *);
void cardif_restart_io(context *);

// Stuff needed by wireless interfaces.  (If wireless isn't supported they
// should either return XENOTWIRELSS, or just return (in the case of a void)

int cardif_enable_wpa(context *);
int cardif_do_wireless_scan(context *, char);
int cardif_set_wep_key(context *, uint8_t *, int, int);
int cardif_set_tkip_key(context *, char *, int, int, char *, 
			int);
int cardif_set_ccmp_key(context *, char *, int, int, char *, 
			int);
int cardif_delete_key(context *, int, int);
void cardif_associate(context *);
int cardif_disassociate(context *, int);
int cardif_GetSSID(context *, char *, unsigned int);
int cardif_check_ssid(context *);
int cardif_GetBSSID(context *, char *);
void cardif_setBSSID(context *, uint8_t *);
int cardif_int_is_wireless(context *);
int cardif_wep_associate(context *, int);
int cardif_disable_wpa_state(context *);
int cardif_enable_wpa_state(context *);
int cardif_drop_unencrypted(context *, char);
int cardif_countermeasures(context *, char);
int cardif_get_wpa_ie(context *, char *, int *);
int cardif_get_wpa2_ie(context *, char *, int *);
int cardif_clear_keys(context *);
int cardif_check_associated(context *);
void cardif_reassociate(context *, uint8_t);
void cardif_association_timeout_expired(context *);
int cardif_enc_disable(context *);
void cardif_get_abilities(context *);
void cardif_passive_scan_timeout(context *);
void cardif_operstate(context *, uint8_t);
void cardif_linkmode(context *, uint8_t);
int cardif_get_signal_strength_percent(context *);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -