/* * WPA Supplicant - ASCII passphrase to WPA PSK tool * Copyright (c) 2003-2005, Jouni Malinen <j@w1.fi> * * This software may be distributed under the terms of the BSD license. * See README for more details. */#include"includes.h"#include"common.h"#include"crypto/sha1.h"intmain(intargc,char*argv[]){unsignedcharpsk[32];inti;char*ssid,*passphrase,buf[64],*pos;size_tlen;if(argc<2){printf("usage: wpa_passphrase <ssid> [passphrase]\n""\nIf passphrase is left out, it will be read from ""stdin\n");return1;}ssid=argv[1];if(argc>2){passphrase=argv[2];}else{printf("# reading passphrase from stdin\n");if(fgets(buf,sizeof(buf),stdin)==NULL){printf("Failed to read passphrase\n");return1;}buf[sizeof(buf)-1]='\0';pos=buf;while(*pos!='\0'){if(*pos=='\r'||*pos=='\n'){*pos='\0';break;}pos++;}passphrase=buf;}len=os_strlen(passphrase);if(len<8||len>63){printf("Passphrase must be 8..63 characters\n");return1;}if(has_ctrl_char((u8*)passphrase,len)){printf("Invalid passphrase character\n");return1;}pbkdf2_sha1(passphrase,(u8*)ssid,os_strlen(ssid),4096,psk,32);printf("network={\n");printf("\tssid=\"%s\"\n",ssid);printf("\t#psk=\"%s\"\n",passphrase);printf("\tpsk=");for(i=0;i<32;i++)printf("%02x",psk[i]);printf("\n");printf("}\n");return0;}