本篇还是以HP ILO为例,本篇承接上篇 《远程管理之java applet》。HP ilo除了支持使用java进行远程管理外,还支持.net进行远程管理。基于windows .net的远程管理技术有两种:Silverlight、XBAP。前者现在已被微软自己给废弃了,后都流行度也不高,而且主要只支持IE浏览器(据说火狐安装插件才能支持)。不过这两者的技术流行度都不如java applet或jnlp流行。不过从使用体验上来说,XBAP确实有其优势,因为其可以提取exe文件,完全脱离浏览器本身进行执行。

一、.net XBAP的岔路

在查看js/iLO.js文件内容,可以发现如下代码:

startirc
startirc

其中startirc方法,就是调用.net进行远程管理的代码。可以看出其实际调用了/html/IRC.application程序,将该内容下载后,发现其内容类似如下:

 1<exe.manifest" size="17082">
 2      <assemblyidentity language="neutral" name="IRC.exe" processorarchitecture="msil" publickeytoken="ccbf8ed862428044" type="win32" version="1.2.3.1405"></assemblyidentity>
 3      <hash>
 4        <transforms>
 5          <transform algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></transform>
 6        </transforms>
 7        <digestmethod algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></digestmethod>
 8        <digestvalue>eUpl5IM8ly9wJ4j7PWA2U5Y/ZSk=</digestvalue>
 9      </hash>
10    
11  
12<publisheridentity issuerkeyhash="cf99a9ea7b26f44bc98e8fd7f00526efe3d2a79d" name="CN=Hewlett-Packard Company, OU=Digital ID Class 3 - Microsoft Software Validation v2, O=Hewlett-Packard Company, L=Andover, S=Massachusetts, C=US" xmlns="urn:schemas-microsoft-com:asm.v2"></publisheridentity><signature id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#">
13    <signedinfo>
14        <canonicalizationmethod algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></canonicalizationmethod>
15        <signaturemethod algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></signaturemethod>
16        <reference uri="">
17            <transforms>
18                <transform algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></transform>
19                <transform algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></transform>
20            </transforms>
21            <digestmethod algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></digestmethod>
22            <digestvalue>puK4UgCWhK8X54AhcxsFbiO/2bA=</digestvalue>
23        </reference>
24    </signedinfo>
25    <signaturevalue>Qe9pDbBcEt2ln/IFuAFGR6QQvEPhg/juc2dy3wJdwwiwZR4SnE7R4RQ7SK5n86ndABiGP1HPgStseappAaR2Rsww2Dp0HQruvwA1QNac4ifTlNQgZ7kxVPL3riyi2p7ubSLFcZuKrD/cRpPMQ9a1spLxARi0HkbHon+qcTyUYCYLbv80K4x7YRMMe5PbKLLXCjowmGpH4n4v8OH9QrTXAtp3sszdRqyWfjrGZl3CEkMebwo56tIR8Z4O37JMzMgYmyaBA3pmPVksZCXlPqasG78fOqOZWeSQm9A0e33eHd+X2gUXfrNkfBf2Wg26aFPbR2d93lP/nN1MMN6QJGej9g==</signaturevalue>
26    <keyinfo id="StrongNameKeyInfo">
27        <keyvalue>
28            <rsakeyvalue>
29                <modulus>sVoOw9as6Hzu1zHv9ww9WWKUGSch3BbpGGJ1mbFZkwNbdDGUsZxk3stjQa4IvVAgh+DzFXQnAB4E9JA4v99iJG02eEhbEIRH7OsMsutlHp+53Rs65F85L0P2uZHb0aHWzXdmrPu0SqGnUdYIPKfqkvFqrtlGWFPs3aDjRJGeeOG3f2LoafALvrSC50JyjiyfV9iRVuHobXray+jSRSpTXVN3zxUIOlAzyOMetfKUbN44KL4vhJ6GNuln0L1jx9lKaP3o1mNHT8+XQ4PbWj2ql8FHxUfeygVUs0k1k2nQQObUx73UrT8zy/XH4tkCQbGMPg4Z0J8qDhJtwFJy5lEppQ==</modulus>
30                <exponent>AQAB</exponent>
31            </rsakeyvalue>
32        </keyvalue></keyinfo></signature>

我这里只列了部分(基本上全文都是RSA密文),因为最初网上找IRC技术,发现都是网络chat协议相关的,跟本对不上,而查看该代码,发现是RSA加解密,密文从表象上看使用base64加密,不过使用base64 decodestring时,发现并不能正常解成可以理解的内容,甚至可以认为是乱码。

通过查找该文件内的相关关键字,也找不到相应的内容,从网上查找.net相关的类似jnlp和applet的相关技术时,发现只有Silverlight、XBAP,而前者基本已经废弃。XBAP对应技术的页面为 http://www.xbap.org/ 。其上面有对应的示例:http://www.xbap.org/samples.html

能过查看示例及了解原理,基本判断其使用的就是xbap技术。

二、验证

xbap说白了,也是通过页面技术,最终调用的是exe文件,查看上面的IRC.application,发现有如下一行:

1<assemblyidentity language="neutral" name="IRC.exe" publickeytoken="ccbf8ed862428044" version="1.2.3.1405">

正常使用.net页面调用以后,理论上会在主机上保存有对应的exe文件,通过搜索找到了对应的文件和目录。选择irc.exe文件执行,会发现这个比较清爽,感觉也比较java的占用资源较少。(注意不能单独拉出irc.exe用,需要这几个文件放在一起才能使用。)

net-xbap
net-xbap

其还支持使用命令行的方式进行调用:

irc-command
irc-command

了解原理后,后续使用管理口进行远程管理就不需要再打开页面进行操作了,只需要打开该程序输入IP、用户名密码就可以搞定了。不过刀片机无法该些调用,后面再说刀片调用的方法。火狐浏览器和chrome浏览器也想支持xbap调用的话,需要使用NPWPF.dll文件,该文件可以从安装好.net的主机上提取的。不过上面的exe程序本身就需要.net支持的,只需要找到该文件,放到相应的位置就可以了。

参考技术文档: https://cloud.tencent.com/developer/ask/112147

http://www.xbap.org/