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

📄 wetctl.c

📁 VT665 无线网卡驱动 LINUX平台下
💻 C
📖 第 1 页 / 共 3 页
字号:
/* * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc. * All rights reserved. * * This software is copyrighted by and is the sole property of * VIA Networking Technologies, Inc. This software may only be used * in accordance with the corresponding license agreement. Any unauthorized * use, duplication, transmission, distribution, or disclosure of this * software is expressly forbidden. * * This software is provided by VIA Networking Technologies, Inc. "as is" * and any express or implied warranties, including, but not limited to, the * implied warranties of merchantability and fitness for a particular purpose * are disclaimed. In no event shall VIA Networking Technologies, Inc. * be liable for any direct, indirect, incidental, special, exemplary, or * consequential damages.    * * * File: wetctl.c * * Purpose:  * *      Command mode utility for Solomon 802.11a/b/g wireless card * * Author: lyndon chen * * Date: Jan 2, 2003 * * Functions: *      s_cmdBSSJoin- join an existing BSS set via ioctl command *      s_cmdScan- scan all channels via ioctl command *      s_cmdSetWEP- set wep key via ioctl command   *      s_cmdGetLink- get link status via ioctl command *      s_cmdGetList- get scan list via ioctl command *      s_cmdGetMIB- get DOT11 MIB via ioctl command *      s_cmdGetSTAT- get Statistics via ioctl command *      vShowList- print scan list *      vByteToWEP232- byte string to Hex key *      vAddrToStr- print MAC address *      vCmdUsage- command help list * Revision History: * */  #include <stdlib.h>#include <stdio.h>#include <string.h>#include <sys/socket.h>#include <sys/types.h>#include <sys/ioctl.h>#include "wetctl.h"#include "ttype.h"#include "iocmd.h"/*---------------------  Static Definitions -------------------------*//*---------------------  Static Classes  ----------------------------*//*---------------------  Static Variables  --------------------------*/BYTE AppName[20];/*---------------------  Static Functions  --------------------------*/static int s_cmdBSSJoin(int skfd, int argc, char **argv);static int s_cmdAPStart(int skfd, int argc, char **argv);static int s_cmdScan(int skfd, int argc, char **argv);static int s_cmdSetWEP(int skfd, int argc, char **argv);static int s_cmdGetLink(int skfd, int argc, char **argv);static int s_cmdGetList(int skfd, int argc, char **argv);static int s_cmdGetMIB(int skfd, int argc, char **argv);//static int s_cmdGetSTAT(int skfd, int argc, char **argv);static int s_cmdStopMAC(int skfd, int argc, char **argv);static int s_cmdStartMAC(int skfd, int argc, char **argv);static int s_cmdGetNodeList(int skfd, int argc, char **argv);static VOID vShowList(PSBSSIDList pList);static VOID vShowNodeList(PSNodeList pList);static VOID vByteToWEP232(PBYTE abyKey, char *abyStr);static VOID vAddrToStr(PBYTE abyAddr, PBYTE abyStr);static VOID vWEPToStr(PBYTE abyWEP, PBYTE abyStr);static VOID vCmdUsage(void);/*---------------------  Export Variables  --------------------------*//*---------------------  Export Functions  --------------------------*//*+ * * Description: *    Entry of utility  * * Parameters: *  In: *      argc, argv *  Out: *      none * * Return Value: int *-*/int main(int argc, char *argv[]) {    int skfd;	int result = 0;	SCmdRequest	sReq;		strcpy((char*)AppName, APPNAME);		if (argc <= 2) {	    vCmdUsage();	    result = 1;	    return result;	};	            	// get a socket	skfd = socket(AF_INET, SOCK_STREAM, 0);		if (skfd < 0) {	    printf("%s: can't find the socket driver!\n", AppName);	    result = 1;	    return result;	};   	    	strcpy((char *)sReq.name, argv[1]);	sReq.wResult = 0;	sReq.data = NULL;	sReq.wCmdCode = 0;	result = ioctl(skfd, IOCTL_CMD_TEST, &sReq);		if ((result < 0) || (sReq.wResult != MAGIC_CODE)) {		printf("%s: failed in testing interface, '%s'may be not running.",				AppName, argv[1]);        					    result = 1;	    return result;					}	if (strcasecmp(argv[2], PRIVACY) == 0) {	    result = s_cmdSetWEP(skfd, argc, argv);	}	else if (strcasecmp(argv[2], SCAN) == 0) {	    result = s_cmdScan(skfd, argc, argv);	}	else if (strcasecmp(argv[2], JOIN) == 0) {	    result = s_cmdBSSJoin(skfd, argc, argv);	}	else if ( strcasecmp(argv[2], GETLIST) == 0) {	    result = s_cmdGetList(skfd, argc, argv);	}	else if ( strcasecmp(argv[2], GETLINK) == 0) {	    result = s_cmdGetLink(skfd, argc, argv);	}	else if ( strcasecmp(argv[2], GETMIB) == 0) {	    result = s_cmdGetMIB(skfd, argc, argv);	}/*		else if ( strcasecmp(argv[2], GETSTAT) == 0) {	    result = s_cmdGetSTAT(skfd, argc, argv);	}	*/		else if (strcasecmp(argv[2], STOP) == 0) {	    result = s_cmdStopMAC(skfd, argc, argv);	}	else if (strcasecmp(argv[2], START) == 0) {	    result = s_cmdStartMAC(skfd, argc, argv);	}	else if (strcasecmp(argv[2], APSTART) == 0) {	    result = s_cmdAPStart(skfd, argc, argv);	}	else if (strcasecmp(argv[2], GETNODE) == 0) {	    result = s_cmdGetNodeList(skfd, argc, argv);	}		else {		printf("%s: %s is an invalid command\n",AppName, argv[2]);		vCmdUsage();		result = 1;	}		if (result < 0) {	    printf("%s: failed in ioctl sRequest! result= %d\n",				AppName, result);    }	return result;}/*+ * * Description: *     Reformat input string to wep key    * * Parameters: *  In: *      array of string *  Out: *      array of hex char * * Return Value: none *-*/VOID vByteToWEP232(PBYTE abyKey, char *abyStr) {	PBYTE	pChr;	int		ii;	UINT	val;    // i = 29 byte/232 bit	for (ii = 0; ii < 29; ii++) {		pChr = (PBYTE)strchr(abyStr, ':');		if (pChr == NULL) {            break;		}		else {			*pChr = '\0';			sscanf((char *)abyStr, "%x", &val);			abyKey[ii] = (BYTE)val;			abyStr = (char *)(pChr+1);		}	}    sscanf((char *)abyStr, "%x", &val);    abyKey[ii] = (BYTE)val;}/*+ * * Description: *     Print MAC address * * Parameters: *  In: *      MAC address *  Out: *      none * * Return Value: none *-*/VOID vAddrToStr(PBYTE abyAddr, PBYTE abyStr){	sprintf((char *)abyStr, "%02x:%02x:%02x:%02x:%02x:%02x", 		abyAddr[0], abyAddr[1], abyAddr[2], abyAddr[3], abyAddr[4], abyAddr[5]);}/*+ * * Description: *     Print WEP key * * Parameters: *  In: *      array of hex wep key *  Out: *      array of wep key string * * Return Value: none *-*/VOID vWEPToStr(PBYTE abyWEP, PBYTE abyStr){	sprintf((char *)abyStr, "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", 		abyWEP[0], abyWEP[1], abyWEP[2], abyWEP[3], abyWEP[4], abyWEP[5],		abyWEP[6], abyWEP[7], abyWEP[8], abyWEP[9], abyWEP[10], abyWEP[11],		abyWEP[12]				);}/*+ * * Description: * *  Called when the user set the 'scan' command at the *	command line to scan all available channels.  *      * * Parameters: *  In: *      skfd, argc, argv *  Out: *      none * * Return Value: '0' if success *-*/int s_cmdScan(int skfd, int argc, char **argv) {	int			result = 0;	SCmdRequest sReq;	SCmdScan	cmd;		strcpy((char *)sReq.name, argv[1]);	cmd.ssid[0] = SSID_ID;	cmd.ssid[1] = 0;	cmd.ssid[2] = 0;	if (argc > 3) {		if ((cmd.ssid[1] = strlen(argv[3])) <= 32 ) {		    if (strcmp(argv[3], "any") != 0 ) {			    memcpy( &(cmd.ssid[2]), argv[3], cmd.ssid[1]);			}    		}	    	}	sReq.wResult = 0;	sReq.data = &cmd;    sReq.wCmdCode = WLAN_CMD_BSS_SCAN;	result = ioctl(skfd, IOCTL_CMD_SET, &sReq);	if (sReq.wResult) {		printf( "%s: fail in scan command !\n",AppName);		result = 1;	}    return result;}/*+ * * Description: * *  Called when the user set the 'stop' command at the *	command line to stop the MAC  * * Parameters: *  In: *      skfd, argc, argv *  Out: *      none * * Return Value: '0' if success *-*/int s_cmdStopMAC( int skfd, int argc, char **argv ) {	int			result = 0;	SCmdRequest	sReq;		strcpy((char *)sReq.name, argv[1]);	sReq.wResult = 0;	sReq.data = NULL;    sReq.wCmdCode = WLAN_CMD_STOP_MAC;	result = ioctl(skfd, IOCTL_CMD_SET, &sReq);	if ( sReq.wResult ) {		printf( "%s: fail in stop command !\n",AppName);		result = 1;	}    return result;}/*+ * * Description: * *	Called when the user set the 'start' command at the *	command line to enable the MAC  * * Parameters: *  In: *      skfd, argc, argv *  Out: *      none * * Return Value: '0' if success *-*/int s_cmdStartMAC( int skfd, int argc, char **argv ) {	int			result = 0;	SCmdRequest	sReq;		strcpy((char *)sReq.name, argv[1]);	sReq.wResult = 0;	sReq.data = NULL;    sReq.wCmdCode = WLAN_CMD_START_MAC;	result = ioctl(skfd, IOCTL_CMD_SET, &sReq);	if ( sReq.wResult ) {		printf( "%s: fail in start command !\n",AppName);		result = 1;	}    return result;}/*+ * * Description: * *	Called when the user set 'join' command at the *	command line to join an existing BSS set * * Parameters: *  In: *      skfd, argc, argv *  Out: *      none * * Return Value: '0' if success *-*/int s_cmdBSSJoin(int skfd, int argc, char **argv) {	int					result = 0;	SCmdRequest	        sReq;	SCmdBSSJoin		    cmd;	if ( argc < 5 ) {		printf("%s: not enough arguments for the 'join' command;\n ", AppName);		vCmdUsage();		result = 1;	}	else {		strcpy((char *)sReq.name, argv[1]);		sReq.wResult = 0;		sReq.data = &cmd;		sReq.wCmdCode = WLAN_CMD_BSS_JOIN;		if ( (strcmp(argv[3], "adhoc") == 0) ||		     (strcmp(argv[3], "ad-hoc") == 0) ) {			cmd.wBSSType = ADHOC;

⌨️ 快捷键说明

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