📄 wetctl.c
字号:
};
if(pList->sBSSIDList[ii].bWEPOn == TRUE) {
printf("yes ");
}
else {
printf("no ");
};
printf("%04d ", (int)pList->sBSSIDList[ii].uRSSI);
memcpy(buf, pList->sBSSIDList[ii].abySSID, SSID_MAXLEN +1);
printf("%s\n", buf);
}
}
/*+
*
* Description:
*
*
* Called when the user has requested the 'nodes' command at the
* command line.
*
* Parameters:
* In:
* skfd, argc, argv
* Out:
* none
*
* Return Value: '0' if success
*
-*/
int s_cmdGetNodeList(int skfd, int argc, char **argv)
{
int result;
SCmdRequest sReq;
SNodeList sList;
PSNodeList pList;
result = 0;
memset(&sList, 0, sizeof(SNodeList));
strcpy((char *)sReq.name, argv[1]);
sReq.wResult = 0;
sReq.data = &sList;
sReq.wCmdCode = WLAN_CMD_GET_NODE_CNT;
result = ioctl( skfd, IOCTL_CMD_SET, &sReq);
if (result || sReq.wResult) {
printf( "%s: failed in get node list command.\n", AppName);
result = 1;
}
else {
pList = malloc( sizeof(SNodeList) + (sList.uItem * sizeof(SNodeItem)));
pList->uItem = sList.uItem;
sReq.wResult = 0;
sReq.data = pList;
sReq.wCmdCode = WLAN_CMD_GET_NODE_LIST;
result = ioctl( skfd, IOCTL_CMD_SET, &sReq);
if (result || sReq.wResult) {
printf( "%s: failed get node list command\n", AppName);
result = 1;
}
else {
vShowNodeList(pList);
}
}
return result;
}
/*+
*
* Description:
*
*
* Show stations list
*
* Parameters:
* In:
* pList
* Out:
* none
*
* Return Value: none
*
-*/
VOID vShowNodeList(PSNodeList pList)
{
int ii;
BYTE buf[80];
printf("Associated Nodes Count = %d\n", (int)(pList->uItem -1));
printf("AID MAC RATE AGE QUE FG PW RATO KEY LEN\n");
for (ii = 0; ii < pList->uItem; ii++) {
printf("%02d ", pList->sNodeList[ii].wAID);
vAddrToStr(pList->sNodeList[ii].abyMACAddr, buf);
printf("%s ", buf);
printf("%02d ", pList->sNodeList[ii].wTxDataRate);
printf("%04d ", pList->sNodeList[ii].wInActiveCount);
printf("%02d ", pList->sNodeList[ii].wEnQueueCnt);
printf("%02x ", pList->sNodeList[ii].wFlags);
if(pList->sNodeList[ii].bPWBitOn == TRUE) {
printf("yes ");
}
else {
printf("no ");
};
printf("%04d ", pList->sNodeList[ii].wFailureRatio);
printf("%02d ", pList->sNodeList[ii].byKeyIndex);
printf("%04d ", pList->sNodeList[ii].wWepKeyLength);
printf("\n");
vWEPToStr(pList->sNodeList[ii].abyWepKey, buf);
printf("KEY = %s \n", buf);
}
}
/*+
*
* Description:
*
* Called when the user set the 'link' command at the
* command line to get link status
*
* Parameters:
* In:
* skfd, argc, argv
* Out:
* none
*
* Return Value: '0' if success
*
-*/
int s_cmdGetLink(int skfd, int argc, char **argv)
{
int result;
SCmdRequest sReq;
SCmdLinkStatus sLink;
BYTE buf[SSID_MAXLEN + 1];
result = 0;
strcpy((char *)sReq.name, argv[1]);
sReq.wResult = 0;
sReq.data = &sLink;
sReq.wCmdCode = WLAN_CMD_GET_LINK;
result = ioctl(skfd, IOCTL_CMD_SET, &sReq);
if (sReq.wResult ) {
printf( "%s: failed in link command.\n", AppName);
}
else {
if (sLink.bLink == TRUE) {
memcpy(buf, sLink.abySSID, SSID_MAXLEN + 1);
if (sLink.wBSSType == ADHOC) {
if (sLink.byState == ADHOC_STARTED)
printf("Adhoc Starting, SSID = '%s'\n", buf);
else if (sLink.byState == ADHOC_JOINTED)
printf("Adhoc Link with, SSID = '%s'\n", buf);
}
else {
if (sLink.wBSSType == INFRA)
printf("Link with AP, SSID = '%s'\n", buf);
}
printf("Channel = %02d", (int)sLink.uChannel);
vAddrToStr(sLink.abyBSSID, buf);
printf(", Data Rate = ");
switch(sLink.uLinkRate) {
case RATE_1M:
printf("1Mbps");
break;
case RATE_2M:
printf("2Mbps");
break;
case RATE_5M:
printf("5.5Mbps");
break;
case RATE_11M:
printf("11Mbps");
break;
case RATE_6M:
printf("6Mbps");
break;
case RATE_9M:
printf("9Mbps");
break;
case RATE_12M:
printf("12Mbps");
break;
case RATE_18M:
printf("18Mbps");
break;
case RATE_24M:
printf("24Mbps");
break;
case RATE_36M:
printf("36Mbps");
break;
case RATE_48M:
printf("48Mbps");
break;
case RATE_54M:
printf("54Mbps");
break;
default:
printf("54Mbps");
}
printf("\n");
printf("BSSID = %s\n", buf);
}
else {
printf("Link fail, disconnected !\n");
}
}
return result;
}
/*+
*
* Description:
*
* Called when the user has requested the 'mib' command at the
* command line.
*
* Parameters:
* In:
* skfd, argc, argv
* Out:
* none
*
* Return Value: '0' if success
*
-*/
int s_cmdGetMIB(int skfd, int argc, char **argv)
{
int result;
SCmdRequest sReq;
SDot11MIBCount sMIB;
result = 0;
strcpy((char *)sReq.name, argv[1]);
sReq.wResult = 0;
sReq.data = &sMIB;
sReq.wCmdCode = WLAN_CMD_GET_MIB;
result = ioctl( skfd, IOCTL_CMD_SET, &sReq);
if (result || sReq.wResult) {
printf( "%s: failed in get mib command.\n", AppName);
result = 1;
}
else {
printf("TxFragmentCount =%12d ", (INT)sMIB.TransmittedFragmentCount);
printf("MulticastTxCount=%12d\n", (INT)sMIB.MulticastTransmittedFrameCount);
printf("FailedCount =%12d ", (INT)sMIB.FailedCount);
printf("RetryCount =%12d\n", (INT)sMIB.RetryCount);
printf("MultipleRetry =%12d ", (INT)sMIB.MultipleRetryCount);
printf("RTSSuccessCount =%12d\n", (INT)sMIB.RTSSuccessCount);
printf("RTSFailureCount =%12d ", (INT)sMIB.RTSFailureCount);
printf("ACKFailureCount =%12d\n", (INT)sMIB.ACKFailureCount);
printf("DuplicateCount =%12d ", (INT)sMIB.FrameDuplicateCount);
printf("RxFragmentCount =%12d\n", (INT)sMIB.ReceivedFragmentCount);
printf("MulticastRxCount=%12d ", (INT)sMIB.MulticastReceivedFrameCount);
printf("FCSErrorCount =%12d\n",(INT)sMIB.FCSErrorCount);
}
return result;
}
/*+
*
* Description:
*
* Called when the user has requested the 'stat'(statistics)command at the
* command line.
*
* Parameters:
* In:
* skfd, argc, argv
* Out:
* none
*
* Return Value: '0' if success
*
-*/
int s_cmdGetSTAT(int skfd, int argc, char **argv)
{
int result;
SCmdRequest sReq;
SStatMIBCount sSTAT;
result = 0;
strcpy((char *)sReq.name, argv[1]);
sReq.wResult = 0;
sReq.data = &sSTAT;
sReq.wCmdCode = WLAN_CMD_GET_STAT;
result = ioctl( skfd, IOCTL_CMD_SET, &sReq);
if (result || sReq.wResult) {
printf("%s: failed in get stat command.\n", AppName);
result = 1;
}
else {
printf("IsrTx0OK =%12d ", (INT)sSTAT.dwIsrTx0OK);
printf("IsrTx1OK =%12d\n", (INT)sSTAT.dwIsrTx1OK);
printf("IsrBeaconTxOK =%12d ", (INT)sSTAT.dwIsrBeaconTxOK);
printf("IsrRxOK =%12d\n", (INT)sSTAT.dwIsrRxOK);
printf("IsrTBTTInt =%12d ", (INT)sSTAT.dwIsrTBTTInt);
printf("IsrSTIMERInt =%12d\n", (INT)sSTAT.dwIsrSTIMERInt);
printf("IsrUnrecovErr =%12d ", (INT)sSTAT.dwIsrUnrecoverableError);
printf("IsrSoftInt =%12d\n", (INT)sSTAT.dwIsrSoftInterrupt);
printf("IsrRxNoBuf =%12d ", (INT)sSTAT.dwIsrRxNoBuf);
printf("IsrUnknown =%12d\n", (INT)sSTAT.dwIsrUnknown);
printf("RsrFrmAlgnErr =%12d ", (INT)sSTAT.dwRsrFrmAlgnErr);
printf("RsrErr =%12d\n", (INT)sSTAT.dwRsrErr);
printf("RsrCRCErr =%12d ", (INT)sSTAT.dwRsrCRCErr);
printf("RsrCRCOk =%12d\n", (INT)sSTAT.dwRsrCRCOk);
printf("RsrBSSIDOk =%12d ", (INT)sSTAT.dwRsrBSSIDOk);
printf("RsrADDROk =%12d\n", (INT)sSTAT.dwRsrADDROk);
printf("RsrICVOk =%12d ", (INT)sSTAT.dwRsrICVOk);
printf("RsrShortPre =%12d\n", (INT)sSTAT.dwNewRsrShortPreamble);
printf("RsrLong =%12d ", (INT)sSTAT.dwRsrLong);
printf("RsrRunt =%12d\n", (INT)sSTAT.dwRsrRunt);
printf("RsrRxControl =%12d ", (INT)sSTAT.dwRsrRxControl);
printf("RsrRxData =%12d\n", (INT)sSTAT.dwRsrRxData);
printf("RsrRxManage =%12d ", (INT)sSTAT.dwRsrRxManage);
printf("RsrRxPacket =%12d\n", (INT)sSTAT.dwRsrRxPacket);
printf("RsrRxOctet =%12d ", (INT)sSTAT.dwRsrRxOctet);
printf("RsrBroadcast =%12d\n", (INT)sSTAT.dwRsrBroadcast);
printf("RsrMulticast =%12d ", (INT)sSTAT.dwRsrMulticast);
printf("RsrDirected =%12d\n", (INT)sSTAT.dwRsrDirected);
printf("RsrOK =%12d\n\n", (INT)sSTAT.ullRsrOK);
printf("RxBroadcstBytes=%12d ", (INT)sSTAT.ullRxBroadcastBytes);
printf("RxMulticstBytes=%12d\n", (INT)sSTAT.ullRxMulticastBytes);
printf("RxDirectedBytes=%12d ", (INT)sSTAT.ullRxDirectedBytes);
printf("RxBroadcstFrame=%12d\n", (INT)sSTAT.ullRxBroadcastFrames);
printf("RxMulticstFrame=%12d ", (INT)sSTAT.ullRxMulticastFrames);
printf("RxDirectedFrame=%12d\n", (INT)sSTAT.ullRxDirectedFrames);
printf("RxLen64 =%12d ", (INT)sSTAT.dwRsrRxFrmLen64);
printf("RxLen65_127 =%12d\n", (INT)sSTAT.dwRsrRxFrmLen65_127);
printf("RxLen128_255 =%12d ", (INT)sSTAT.dwRsrRxFrmLen128_255);
printf("RxLen256_511 =%12d\n", (INT)sSTAT.dwRsrRxFrmLen256_511);
printf("RxLen512_1023 =%12d ", (INT)sSTAT.dwRsrRxFrmLen512_1023);
printf("RxLen1024_1518 =%12d\n", (INT)sSTAT.dwRsrRxFrmLen1024_1518);
printf("RsrRxOctet =%12d ", (INT)sSTAT.dwRsrRxOctet);
printf("RsrBroadcast =%12d\n", (INT)sSTAT.dwRsrBroadcast);
printf("RsrMulticast =%12d ", (INT)sSTAT.dwRsrMulticast);
printf("RsrDirected =%12d\n", (INT)sSTAT.dwRsrDirected);
printf("RsrOK =%12d ", (INT)sSTAT.ullRsrOK);
printf("RxBroadcstByte =%12d\n", (INT)sSTAT.ullRxBroadcastBytes);
printf("RsrRxFragment =%12d\n\n", (INT)sSTAT.dwRsrRxFragment);
printf("TsrTotalRetry =%12d ", (INT)sSTAT.dwTsrTotalRetry[1]);
printf("TsrOnceRetry =%12d\n", (INT)sSTAT.dwTsrOnceRetry[1]);
printf("TsrMoreOneRetry=%12d ", (INT)sSTAT.dwTsrMoreThanOnceRetry[1]);
printf("TsrRetry =%12d\n", (INT)sSTAT.dwTsrRetry[1]);
printf("TsrACKData =%12d ", (INT)sSTAT.dwTsrACKData[1]);
printf("TsrErr =%12d\n", (INT)sSTAT.dwTsrErr[1]);
printf("AllTsrOK =%12d ", (INT)sSTAT.dwAllTsrOK[1]);
printf("TsrRetryTimeout=%12d\n", (INT)sSTAT.dwTsrRetryTimeout[1]);
printf("TsrTxTimeout =%12d ", (INT)sSTAT.dwTsrTransmitTimeout[1]);
printf("TsrTxPacket =%12d\n", (INT)sSTAT.dwTsrTxPacket[1]);
printf("TsrTxOctet =%12d ", (INT)sSTAT.dwTsrTxOctet[1]);
printf("TsrBroadcast =%12d\n", (INT)sSTAT.dwTsrBroadcast[1]);
printf("TsrMulticast =%12d ", (INT)sSTAT.dwTsrMulticast[1]);
printf("TsrDirected =%12d\n", (INT)sSTAT.dwTsrDirected[1]);
/*
printf("CntRxDataErr =%12d ", (INT)sSTAT.dwCntRxDataErr);
printf("CntDecryptErr =%12d\n", (INT)sSTAT.dwCntDecryptErr);
printf("CntRxICVErr =%12d ", (INT)sSTAT.dwCntRxICVErr);
printf("RxErrorDesc =%12d\n", (INT)sSTAT.idxRxErrorDesc);
*/
}
return result;
}
/*+
*
* Description:
*
* This function displays usages of the wetctl utility.
*
*
* Parameters:
* In:
* void
* Out:
* none
*
* Return Value: none
*
-*/
VOID vCmdUsage(void)
{
printf("\nUtility for Solomon-A/B/G wireless cards: %s Version %s\n", AppName, VERSION);
printf("Usage: %s interface command\n\n", AppName);
printf(" where \"interface\" is the name of a network interface\n");
printf(" such as eth0 or eth1.. Running 'ifconfig' will list all\n");
printf(" network interfaces.\n\n");
printf("Example: %s eth0 link\n\n", AppName);
printf("Command List: \n");
printf(" scan : scan all channels to collect available BSS(AP)\n");
printf(" list : show all BSS(AP) list\n");
printf(" link : show link status\n");
printf(" mib : show 802.11 mib counters\n");
// printf(" stop : turn off radio\n");
// printf(" stat : show statistics\n");
// printf(" nodes: show station nodes\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -