
//WEP Random Key Generate v1.0
//By DreamVB


#include <iostream>
#include <time.h>
using namespace std;
using std::cout;
using std::endl;

string WepKey(int KeySize){
	string sCharMap = "\"'!#$%&()*+-./0123456789:;,<=>?@ABCDEFGHIJKL"
		"MNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~";
	string rPws = "";
	int i = 0;

	//Create random key of KeySize
	while (i < KeySize){
		rPws += sCharMap[rand() % strlen(sCharMap.c_str() +1)];
		//INC Counter
		i++;
	}
	
	//Return random key
	return rPws;
}

int main(int argc, char *argv[]){
	char c = '\0';
	int option = 0;
	int s_keysize = 0;

top:
	//Clear screen.
	system("cls");
	cout << "--------------------------------" << endl;
	cout << "|        WEP Key Generator     |" << endl;
	cout << "--------------------------------" << endl;
	cout << "[1] Generate 64-bit key" << endl;
	cout << "[2] Generate 128-bit key" << endl;
	cout << "[3] Generate 152-bit key" << endl;
	cout << "[4] Generate 256-bit key" << endl;
	cout << "Enter option: ";
	cin >> option;

	//Test option
	switch (option){
		case 0:
			cout << "Wrong option entered" << endl;
			exit(1);
		case 1:
			s_keysize = 5;
			break;
		case 2:
			s_keysize = 13;
			break;
		case 3:
			s_keysize = 16;
			break;
		case 4:
			s_keysize = 29;
			break;
		}
		
	//Output random wep key
	cout << endl << "Your random wep key is : " << WepKey(s_keysize).c_str();
	cout << endl << endl;

	//Ask user do they want to try agian.
	cout << "Generate new wep key Yes(y) / No(n) ";
	//Read in char
	cin >> c;

	if ((c == 'y') || (c =='Y')){
		//Goto start of program.
		goto top;
	}

	return 0;
}