2

我正在嘗試爲遠程協助創建票證。其中一部分需要創建PassStub參數。由於文檔:加密難題/如何爲遠程協助票證創建PassStub

http://msdn.microsoft.com/en-us/library/cc240115(PROT.10).aspx

PassStub:加密的新手電腦的密碼字符串。當通過電子郵件將遠程支持連接字符串作爲文件發送時,爲了提供額外的安全性,將使用密碼 。 < 16>

在第16部分,他們詳細介紹瞭如何創建PassStub。 在Windows XP和Windows Server 2003中,當使用密碼時,它使用 加密PROV_RSA_FULL預定義加密提供程序與MD5哈希和CALG_RC4,RC4 流加密算法。

由於PassStub看起來像這樣的文件: PassStub =「#LK * 6Lh gCmNDpj」

如果你想生成一個自己運行msra.exe在Vista或運行在WinXP的遠程協助工具。

該文檔說這個存根是CryptEncrypt函數的結果,該函數使用從密碼派生的密鑰並使用會話標識進行加密(這些也在ticket文件中)。

問題是CryptEncrypt產生比15字節PassStub大的二進制輸出方式。此外,PassStub不以我以前見過的任何方式進行編碼。

有關PassStub編碼的一些有趣的事情。在做統計分析後,第三個字符總是一個:#$ &()+ - = @ ^。只有到處可見的符號是:* _。否則,有效字符是0-9 a-z A-Z。總共有75個有效字符,它們總是15個字節。

使用相同的密碼運行msra.exe總是會生成一個不同的PassStub,指示它不是直接散列,而是包含rasessionid。

我的另一個想法是,它不是CryptEncrypt的直接結果,而是MD5散列中rasessionid的結果。在MS-RA(http://msdn.microsoft.com/en-us/library/cc240013(PROT.10).aspx)中。 「PassStub新手」只是十六進制編碼,看起來是正確的長度。問題是我不知道如何從任何哈希到PassStub的樣子。

回答

2

我很好奇,你是否已經:

  • 使用ISAFEncrypt::EncryptString(bstrEncryptionkey, bstrInputString)作爲更高級別的替代直接與CryptEncrypt做所有的髒活考慮? (該tlbhlpsvc.exe
  • 往裏看c:\WINDOWS\pchealth\helpctr\Vendors\CN=Microsoft Corporation,L=Redmond,S=Washington,C=US\Remote Assistance\Escalation\Email\rcscreen9.htm(操作系統),看看有什麼是當你挑選邀請保存爲文件(高級)選項,並提供密碼要參加嗎? (隨時在OnSave()內添加alert()來電)
+0

謝謝,我幾天前才發現。事實證明,PassStub根本不是加密密碼,但顯然只是一個隨機字符串。 MS真的應該更新關於此的MS-RAI文檔。 – 2010-04-11 22:02:33