Exemplo n.º 1
0
int main(int argc, char** argv) {
    int cmd;
    const char *port = "11210";
    const char *host = "localhost";
    const char *user = NULL;
    const char *pass = NULL;
    int secure = 0;
    char *ptr;
    SSL_CTX* ctx;
    BIO* bio;
    int result = EXIT_FAILURE;

    /* Initialize the socket subsystem */
    cb_initialize_sockets();

    while ((cmd = getopt(argc, argv, "h:p:u:P:s")) != EOF) {
        switch (cmd) {
        case 'h' :
            host = optarg;
            ptr = strchr(optarg, ':');
            if (ptr != NULL) {
                *ptr = '\0';
                port = ptr + 1;
            }
            break;
        case 'p':
            port = optarg;
            break;
        case 'u' :
            user = optarg;
            break;
        case 'P':
            pass = optarg;
            break;
        case 's':
            secure = 1;
            break;
        default:
            return usage();
        }
    }

    if (create_ssl_connection(&ctx, &bio, host, port, user, pass, secure) != 0) {
        return 1;
    }

    /* Need at least two more arguments: get/set and a property name. */
    if (optind + 1 >= argc) {
        return usage();
    } else {
        const char* property = argv[optind+1];
        if (strcmp(argv[optind], "get") == 0) {
            result = ioctl_get(bio, property);
        } else if (strcmp(argv[optind], "set") == 0) {
            const char* value = (optind + 2 >= argc) ? argv[optind+2] : NULL;
            result = ioctl_set(bio, property, value);
        }
    }

    BIO_free_all(bio);
    if (secure) {
        SSL_CTX_free(ctx);
    }

    return result;
}
Exemplo n.º 2
0
int main(int argc, char *argv[])
{
	int sockfd;
	int count=0, val;
	unsigned int ii=0,OID,len; 
	struct iwreq iwr;
	struct iw_freq ifrq;
	unsigned char buffer[200], sub_oid=0;
	unsigned int num_args=0, min =0, fixed =0, max=0;
	int status;

	if (argc == 2)
	{
		printf("nl80211_util:Invalid number of arguments\n");   
		return 1;
	}
	else if(argc == 1)
	{
		printf("NL80211 Private IOCTL Application\n");
		printf("Usage: ./nl80211_util <interface name> <ioctl name> <input> \n");
		return 1;
	}

	len = strlen(argv[2]);
	num_args = argc - 3;
	memset(buffer, 0, 200);

	if((strncmp(argv[2], "set", 3) == 0) && argc > 3)
	{
		if(strncmp(argv[2], "set_short_gi", strlen("set_short_gi")) == 0)
		{
			buffer[0] = IEEE80211_PARAM_SHORT_GI;
			buffer[4] = atoi(argv[3]);
			if(buffer[4] < 0 || buffer[4] > 3)
			{
				printf("Enter a valid value\n");
				printf("Usage: 0 - Disable Short_Gi\n");
				printf("Usage: 1 - Enaable Short_Gi for 20MHz\n");
				printf("Usage: 2 - Enaable Short_Gi for 40MHz\n");
				printf("Usage: 3 - Enaable Short_Gi for both 20/40MHz\n");
				return 0;
			}
			ioctl_set(buffer, argv);
			return 0;
		}
		else if(strncmp(argv[2], "set_mode", strlen("set_mode")) == 0)
		{
			buffer[0] = IEEE80211_PARAM_MODE;
			//sub_oid = 2;
			buffer[1] = strlen(argv[3]);
			if(buffer[1])
			{
				memcpy(&buffer[5], argv[3], strlen(argv[3]));
				ioctl_set(buffer, argv);
				//break;
			}
			else
			{
				printf("Please Specify the mode to Set\n");
			}
			return 0;
		}
		else if(strncmp(argv[2], "set_rate", strlen("set_rate")) == 0)
		{
			buffer[0] = IEEE80211_PARAM_RATE;
			buffer[1] = 1;
			buffer[4] = atoi(argv[3]);
			//printf("The rate is %d\n", buffer[1]);
			ioctl_set(buffer, argv);
			return 0;
		}
		else if(strncmp(argv[2], "set_deauth", strlen("set_deauth")) == 0)
		{
			buffer[0] = IEEE80211_PARAM_ROAMING;
			buffer[1] = 1;
			buffer[4] = atoi(argv[3]);
			ioctl_set(buffer, argv);
			return 0;
		}
		else if(strncmp(argv[2], "set_preamble", strlen("set_preamble")) == 0)
		{
			buffer[0] = IEEE80211_PARAM_SHPREAMBLE;
			if(strncmp(argv[3], "auto", strlen("auto")) == 0)
			{
				buffer[1] = 1;
				printf("The preamble value set is auto %d\n", buffer[1]);
			}
			else
			{
				printf("The preamble value set is long %d\n", buffer[1]);
				buffer[1] = 0;
			}
			ioctl_set(buffer, argv);
			return 0;
		}
		else if(strncmp(argv[2], "set_bmiss_th", strlen("set_bmiss_th")) == 0)
		{
			buffer[0] = IEEE80211_PARAM_BEACON_MISS_THRESH;
			buffer[1] = atoi(argv[3]);
			printf("The threshold val is %d\n", buffer[1]);
			ioctl_set(buffer, argv);
			return 0;
		}
#if 0
		else if(strncmp(argv[2], "set_country", strlen("set_country")) == 0)
		{
			buffer[0] = IEEE80211_PARAM_CHANGE_COUNTRY_IE;
		}
		else if(strncmp(argv[2], "set_hide_ssid", strlen("set_hide_ssid")) == 0)
		{
			buffer[0] = IEEE80211_PARAM_HIDESSID;
		}
		else if(strncmp(argv[2], "set_wmm", strlen("set_wmm")) == 0)
		{
			buffer[0] = IEEE80211_PARAM_WMM;
		}
		else if(strncmp(argv[2], "set_ampdu_dens",len) == 0)
		{
			buffer[0] = IEEE80211_PARAM_AMPDU_DENSITY;
		}
		else if(strncmp(argv[2], "set_pureg", strlen("set_pureg")) == 0)
		{
			buffer[0] = IEEE80211_PARAM_PUREG;
		}
		else if(strncmp(argv[2], "set_puren", strlen("set_puren")) == 0)
		{
			buffer[0] = IEEE80211_PARAM_PUREN;
		}
#endif
		else
		{
			printf("Invalid set Ioctl cmd\n");
			printf("In valid Set IOctl command \n Set Ioctls USAGE: \n");
			printf("./nl80211_util vap_name set_short_gi value(0/1/2)\n");
			printf("./nl80211_util vap_name set_mode $mode_name\n");
			printf("./nl80211_util vap_name set_rate $rate_value (Eg: If user wants to set data rate as 6Mbps then value should be given as 12)\n");
			//printf("./nl80211_util vap_name set_privacy\n");
		}
	}
	else if(strncmp(argv[2], "get", 3) == 0)
	{
		if(strncmp(argv[2],"get_short_gi", strlen("get_short_gi")) == 0)
		{
			buffer[0] = IEEE80211_PARAM_SHORT_GI;
			ioctl_get(buffer, &argv[0]);
			printf(" The short_gi is %d \n", buffer[0]);
			return 0;
		}
		else if(strncmp(argv[2],"get_mode", strlen("get_mode")) == 0)
		{
			buffer[1] = 1;
			buffer[0] = IEEE80211_PARAM_MODE;
			ioctl_get(buffer, &argv[0]);
			printf(" The mode is %s \n", buffer);
			return 0;
		}
		else if(strncmp(argv[2],"get_name", strlen("get_name")) == 0)
		{
			buffer[1] = 1;
			buffer[0] = IEEE80211_PARAM_NAME;
			ioctl_get(buffer, &argv[0]);
			printf(" The name is %s \n", buffer);
			return 0;
		}
		else if(strncmp(argv[2],"get_rate", strlen("get_rate")) == 0)
		{
			buffer[1] = 1;
			buffer[0] = IEEE80211_PARAM_RATE;
			ioctl_get(buffer, &argv[0]);
			//printf("The Data rate is %d \n" , buffer[0]);
			printf("The Data rate is %0.1f \n", (float )buffer[0]/2);
			return 0;
		}
		else if(strncmp(argv[2],"get_privacy", strlen("get_privacy")) == 0)
		{
			buffer[0] = IEEE80211_PARAM_PRIVACY;
			ioctl_get(buffer, &argv[0]);
			if(buffer[0] == PRIVACY_ENABLED)
			{
				printf("The privacy is Enabled\n" );
			}
			else if(buffer[0] == PRIVACY_DISABLED)
			{
				printf("The privacy is Disabled\n" );
			}
			return 0;
		}
		else if(strncmp(argv[2],"get_opt_bw", strlen("get_opt_bw")) == 0)
		{
			buffer[1] = 1;
			buffer[0] = IEEE80211_PARAM_BW;
			ioctl_get(buffer, &argv[0]);
			if(buffer[0] == BW_40Mhz)
			{
				printf("Device is in 40Mhz Mode\n");
			}
			else if(buffer[0] == BW_20Mhz)
			{
				printf("Device is in 20Mhz Mode\n");
			}
		}
		else
		{
			printf("In valid Get IOctl command \n Get Ioctls USAGE: \n");
			printf("./nl80211_util vap_name get_short_gi\n");
			printf("./nl80211_util vap_name get_mode\n");
			printf("./nl80211_util vap_name get_name\n");
			printf("./nl80211_util vap_name get_rate\n");
			printf("./nl80211_util vap_name get_privacy\n");
			printf("./nl80211_util vap_name get_opt_bw\n");
		}
	}
    
  
  return 0;
}