ntlmlib.h

来自「Windows的NTLM认证方式的加密和解密库(含例子程序)。」· C头文件 代码 · 共 47 行

H
47
字号
#ifndef NTLM_LIB_HEADER
#define NTLM_LIB_HEADER

typedef BYTE CODE[8];

typedef BYTE MD4[16];

typedef struct
{
	CODE code[2];
} LMHASH, * LPLMHASH;
typedef const LMHASH * LPCLMHASH;

typedef struct
{
	MD4 code;
} NTLMHASH, * LPNTLMHASH;
typedef const NTLMHASH * LPCNTLMHASH;

typedef enum{LMAuth=0,NTLMAuth} AuthMode;

typedef BYTE RESPONSE[24];	//24字节的响应字符串;

typedef const BYTE * LPCBYTE;

//将7字节的明文lpSrc转换成8字节的散列密文;
BOOL StringToKey(LPCSTR lpSrc,LPSTR lpKey);

//转换lpStr字符串中的内容到LMHASH结构中去;
BOOL StringToLMHash(LPLMHASH lpHash,LPCSTR lpStr);

//将长度是len的原文lpSrc用MD4算法加密成16字节的密文ret返回;
void md4(MD4 ret,LPCBYTE lpSrc,int len);

//转换lpStr字符串中的内容到NTLMHASH结构中去;
BOOL StringToNTLMHash(LPNTLMHASH lpHash,LPCSTR lpStr);

//对密码szPwd用服务器给定的钥匙challenge得到回应串ret;AuthMode是验证类型,可以是NTLMAuth或LMAuth;
BOOL LMAuthen(RESPONSE ret,LPCSTR szPwd,CODE challenge,AuthMode);

//将16进制数据lpCode按可见方式输出到szHex缓冲中,形成可输出字符串;szHex至少可容纳len*2+1个字符;
void CodeToHex(LPSTR szHex,LPCBYTE lpCode,int len);

//将可见的16进制字符串转换成数据形式,len是lpCode的最大缓冲长度,返回实际转换的字节数;
int HexToCode(LPBYTE lpCode,int len,LPCSTR szHex);

#endif

⌨️ 快捷键说明

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