實現PROXY穿越(8):NT-Hash的實現

來源:互聯網
上載者:User

  最近忙,事比較多,活多了,還要降薪,唉。沒什麼時間看書,將以前的一些技術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的實現:

  • 實現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演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.