我正在尝试为远程协助创建票证。其中一部分需要创建一个PassStub参数。截至文档发布时:
http://msdn.microsoft.com/en-us/library/cc240115(PROT.10).aspx
PassStub:加密的新手计算机的密码字符串。当远程协助连接字符串以文件形式通过电子邮件发送时,为了提供更高的安全性,口令为used.<16>
在第16部分中,他们详细介绍了如何创建为PassStub。在Windows XP和Windows Server2003中,当使用密码时,会使用PROV_RSA_FULL预定义的加密提供程序和MD5哈希以及CALG_RC4 ( RC4流加密算法)对密码进行加密。
因为PassStub在文件中如下所示: PassStub="LK#6Lh*gCmNDpj“
如果您想自己生成一个远程协助,请在Vista中运行msra.exe,或者在WinXP中运行远程协助工具。
文档说这个存根是函数CryptEncrypt的结果,该函数使用从密码派生的密钥,并使用会话id加密(这些密钥也在票证文件中)。
问题是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的样子。
发布于 2010-04-10 17:02:49
我很好奇,你有没有:
ISAFEncrypt::EncryptString(bstrEncryptionkey, bstrInputString)作为直接使用CryptEncrypt完成所有繁琐工作的更高级别的替代方案?( tlb在hlpsvc.exe中)c:\WINDOWS\pchealth\helpctr\Vendors\CN=Microsoft Corporation,L=Redmond,S=Washington,C=US\Remote Assistance\Escalation\Email\rcscreen9.htm (WinXP)内部,以了解当您选择将邀请另存为文件(高级)选项并提供密码时发生了什么?(您可以随意在OnSave())中添加alert()调用
https://stackoverflow.com/questions/2569678
复制相似问题