1214503Srpaulo/* 2214503Srpaulo * hostapd - Plaintext password to NtPasswordHash 3214503Srpaulo * Copyright (c) 2005, Jouni Malinen <j@w1.fi> 4214503Srpaulo * 5252726Srpaulo * This software may be distributed under the terms of the BSD license. 6252726Srpaulo * See README for more details. 7214503Srpaulo */ 8214503Srpaulo 9214503Srpaulo#include "includes.h" 10214503Srpaulo 11214503Srpaulo#include "common.h" 12214503Srpaulo#include "crypto/ms_funcs.h" 13214503Srpaulo 14214503Srpaulo 15214503Srpauloint main(int argc, char *argv[]) 16214503Srpaulo{ 17214503Srpaulo unsigned char password_hash[16]; 18214503Srpaulo size_t i; 19214503Srpaulo char *password, buf[64], *pos; 20214503Srpaulo 21214503Srpaulo if (argc > 1) 22214503Srpaulo password = argv[1]; 23214503Srpaulo else { 24214503Srpaulo if (fgets(buf, sizeof(buf), stdin) == NULL) { 25214503Srpaulo printf("Failed to read password\n"); 26214503Srpaulo return 1; 27214503Srpaulo } 28214503Srpaulo buf[sizeof(buf) - 1] = '\0'; 29214503Srpaulo pos = buf; 30214503Srpaulo while (*pos != '\0') { 31214503Srpaulo if (*pos == '\r' || *pos == '\n') { 32214503Srpaulo *pos = '\0'; 33214503Srpaulo break; 34214503Srpaulo } 35214503Srpaulo pos++; 36214503Srpaulo } 37214503Srpaulo password = buf; 38214503Srpaulo } 39214503Srpaulo 40214503Srpaulo if (nt_password_hash((u8 *) password, strlen(password), password_hash)) 41214503Srpaulo return -1; 42214503Srpaulo for (i = 0; i < sizeof(password_hash); i++) 43214503Srpaulo printf("%02x", password_hash[i]); 44214503Srpaulo printf("\n"); 45214503Srpaulo 46214503Srpaulo return 0; 47214503Srpaulo} 48