实现PROXY穿越(8):NT-Hash的实现

  最近忙,事比较多,活多了,还要降薪,唉。没什么时间看书,将以前的一些技术blog也移到这里。NTLM在去年年底和今年年初研究过一阵子,写了总结和例子程序。里面涉及很多算法,在网上查了很久。(下面是以前的博客)最近想实现一个通过PROXY穿越的网络编程,将相关的内容进行一下汇总。很多东西来自网络共产主义,也应该为共产主义有所回馈。介绍NT-hash的实现。
  从IBM设计的LM Hash算法存在几个弱点,微软在保持向后兼容性的同时提出了自己的挑战响应机制,NTLM Hash应运而生。假设明文口令是“123456”,首先转换成Unicode字符串,与LM Hash算法不同,这次不需要添加0x00补足14字节,并且是区分大小写的。
      "123456" -> 310032003300340035003600。
  SMB报文解码中。0x80之前的标准ASCII码转换成Unicode码,就是简单地从0x??变成0x00??。此 类标准ASCII串按little- endian序转换成Unicode串,就是简单地在原有每个字节之后添加0x00。对所获取的Unicode串进行标准MD4单向哈希,无论数据源有多 少字节,MD4固定产生128-bit的哈希值。
     16字节310032003300340035003600 -进行标准MD4单向哈希-> 32ED87BDB5FDC5E9CBA88547376818D4
  就得到了最后的NTLM Hash: 32ED87BDB5FDC5E9CBA88547376818D4。

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的实现:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
破解hash加密。{:3_55:} 这两天为了找这几张表可把我累的不轻啊。。今天终于让我给弄完了。。。 虽然我那个求彩虹表的帖子里有7.5G+8G的。。而120G的网上也能搜索到。。不过250G的那个还不是很多。。 为了方便大家。所以就把我弄到的种子打包发上来了。 包里有: XP special (7.5GB) formerly known as WS-20k [XP特殊(7.5GB) 前身为WS - 20K] 成功率:96% 字符集:0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ !"#$%&'()*+,-./:;?@[ \ ]^_`{|}~(包括空格字符) Vista special (8.0GB) formerly known as NTHASH Vista的特殊(8.0GB) 原名为NTHASH 成功率:99% 密码长度为6或以下 字符集:0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ !"#$%&'()*+,-./:;?@[ \ ]^_`{|}~(包括空格字符) 密码长度为7 字符集:0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 密码长度为8 字符集:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 还有 网上流传的一个120G的种子。。 和 在看雪学院发现的一个250G的种子。。 就是上面的这些了。。 顺便给大家个ophcrack的下载地址。。。[url]http://ophcrack.sourceforge.net/[/url] ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- 120G的太难下了。现在2天了才13%。。。唉。。250G那个我暂时是不想下了。。也没时间下。。。 下午用了7.5G的表跑了下win2003的。。。14位以内。数字+字母+特殊符号。。30分钟跑出来了。感觉真的很不错。 不过如果用来跑XP的话可能会没结果的。因为现在大家很多人都是用的GOHST版的xp。。这系统的SAM文件加密方式好像很多都被改了。。 至少我在跑自己的时候没有成功。。不过2003的全成功了。。。 好了。不多说废话了。 要的拿走吧。。。 剩下的度娘会告诉你了。 {:3_63:} 没文化。。打点字都不知道怎么打。。累死我了。。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值