⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ntpwdhash_main.c

📁 Linux上的802.1x 的supplicant的实现。很多supplicant程序都是基于它开发的
💻 C
字号:
#include <openssl/ssl.h>#include <string.h>#include <strings.h>#include <stdint.h>char *to_unicode(char *non_uni){  char *retUni;  int i;  if (!non_uni)    {      printf("Invalid value passed in to to_unicode()! (%s:%d)\n", 	     __FUNCTION__, __LINE__);      return NULL;    }  retUni = (char *)malloc((strlen(non_uni)+1)*2);  if (retUni == NULL)    {      printf("Error with MALLOC in to_unicode()! (%s:%d)\n", __FUNCTION__,	     __LINE__);      return NULL;    }  bzero(retUni, ((strlen(non_uni)+1)*2));  for (i=0; i<strlen(non_uni); i++)    {      retUni[(2*i)] = non_uni[i];    }  return retUni;}void NtPasswordHash(char *Password, char *PasswordHash){  EVP_MD_CTX cntx;  char retVal[20];  int i, len;  char *uniPassword;  if ((!Password) || (!PasswordHash))    {      printf("Invalid data passed in to NtPasswordHash()! (%s:%d)\n",	     __FUNCTION__, __LINE__);      return;    }  bzero(retVal, 20);  uniPassword = to_unicode(Password);  len = (strlen(Password))*2;  EVP_DigestInit(&cntx, EVP_md4());  EVP_DigestUpdate(&cntx, uniPassword, len);  EVP_DigestFinal(&cntx, (uint8_t *)&retVal, (u_int *)&i);  memcpy(PasswordHash, &retVal, 16);  free(uniPassword);}int main(int argc, char *argv[]){  char pwd_hash[16];  int i;  if (argc <= 1)    {      printf("ntpwdhash <password>\n");      return 255;    }  NtPasswordHash(argv[1], (char *)&pwd_hash);  printf("Resulting hash value (copy and paste to Xsupplicant configuration)"	 " :\n");  for (i=0;i<16;i++)    {      printf("%02X", (unsigned char)pwd_hash[i]);    }  printf("\n");  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -