static void unicode(IN char * src, IN int src_len, OUT char * dst, OUT int * dst_len){
int i ;
for( i = 0 ; i < src_len; i ++){
dst[2*i] = src[i];
dst[2*i +1] = 0;
}
if(dst_len != NULL)
* dst_len = src_len * 2;
}
void nt_hash(IN char * src, IN int is_unicode,OUT unsigned char * dst, OUT int * dst_len){
char * source = NULL;
int len = strlen(src);
if(!is_unicode){
source = (char * ) malloc(len *2 );
unicode(src,len,source,&len);
}else{
source = src;
}
MD4String (source,len,dst);
if(dst_len != NULL)
* dst_len = 16;
if(!is_unicode)
free(source);
}
调用例子:
unsigned char dst[16];
nt_hash("123456",0,dst,NULL)
相关链接:我的网络通信相关文章
NTLM的实现:
-
- 实现PROXY穿越(16):NTLM的PROXY穿越
- 实现PROXY穿越(15):NTLM Session Security
- 实现PROXY穿越(14):NTLM type3 Message
- 实现PROXY穿越(13):NTLM type2 Message
- 实现PROXY穿越(12):NTLM type1 Message
- 实现PROXY穿越(11):NTLMv2 session response
- 实现PROXY穿越(10):NTLMv2 response
- 实现PROXY穿越(9):NTLMv1 response
- 实现PROXY穿越(8):NT-Hash的实现
- 实现PROXY穿越(7):MD4和MD5
- 实现PROXY穿越(6):LM-Hash的实现
- 实现PROXY穿越(5):DES算法之三
- 实现PROXY穿越(4):DES算法之二
- 实现PROXY穿越(3):DES算法之一
- 实现PROXY穿越(2):Base64算法
- 实现PROXY穿越(1):流程和NTLM算法