<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[阿Tim日志]]></title> 
<link>https://atim.cn/index.php</link> 
<description><![CDATA[专业的php开发者.开发团队的带队人]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[阿Tim日志]]></copyright>
<item>
<link>https://atim.cn/post//</link>
<title><![CDATA[k3cloud接口的加密算法]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[有感而发]]></category>
<pubDate>Wed, 12 May 2021 01:59:18 +0000</pubDate> 
<guid>https://atim.cn/post//</guid> 
<description>
<![CDATA[ 
	知识储备,目前公司使用了k3cloud,但接口提供的接口实在是有点少.所以在考虑是不是可以通用使用界面的接口.来完成功能.<br/><br/>但查看返回来的数据是这样的<br/><div class="code"><br/>H4sIAAAAAAAEAA3JOwrAIBAFwLu8egshkMJzpBOLNVmI4Cfomka8ezLtuAk+NdZSOAssuugRs9ShIDzcOHdYN/FyGv9vuzEEKRySXLDahhBu4RaE9W9jll80l/8ABPfqSlgAAAA=<br/></div><br/><br/>这明显是一个base64的数据.但尝试解析出来是字节内容来的.然后查看源来.找到了doPostAsync()方法,里的的算法大概是这样的<br/><div class="code"><br/>this.doPostAsync(e.url, t, e)&#123;<br/>&nbsp;&nbsp;d = KD.utf8Decode(KD.decompress(a)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;t = new JXG.Util.Unzip(JXG.Util.Base64.decodeAsArray(e)).unzip()&#91;0&#93;&#91;0&#93;<br/>&nbsp;&nbsp;&#125;)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var t, i, a, n, o, r;<br/>&nbsp;&nbsp;&nbsp;&nbsp;for (t = &quot;&quot;, a = e.length, i = 0; a &gt; i;) switch (n = e.charCodeAt(i++), n &gt;&gt; 4) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;case 0:<br/>&nbsp;&nbsp;&nbsp;&nbsp;case 1:<br/>&nbsp;&nbsp;&nbsp;&nbsp;case 2:<br/>&nbsp;&nbsp;&nbsp;&nbsp;case 3:<br/>&nbsp;&nbsp;&nbsp;&nbsp;case 4:<br/>&nbsp;&nbsp;&nbsp;&nbsp;case 5:<br/>&nbsp;&nbsp;&nbsp;&nbsp;case 6:<br/>&nbsp;&nbsp;&nbsp;&nbsp;case 7:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t += e.charAt(i - 1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;case 12:<br/>&nbsp;&nbsp;&nbsp;&nbsp;case 13:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o = e.charCodeAt(i++),<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t += String.fromCharCode((31 &amp; n) &lt;&lt; 6 &amp;#124; 63 &amp; o);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;case 14:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o = e.charCodeAt(i++),<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r = e.charCodeAt(i++),<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t += String.fromCharCode((15 &amp; n) &lt;&lt; 12 &amp;#124; (63 &amp; o) &lt;&lt; 6 &amp;#124; (63 &amp; r) &lt;&lt; 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return t<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/><br/></div><br/>上面的是伪代码.只是显示了使用的算法主要是:unzip+base64<br/>然后尝试使用php来解压<br/><div class="code"><br/>$string= &#039;H4sIAAAAAAAEAA3JOwrAIBAFwLu8egshkMJzpBOLNVmI4Cfomka8ezLtuAk+NdZSOAssuugRs9ShIDzcOHdYN/FyGv9vuzEEKRySXLDahhBu4RaE9W9jll80l/8ABPfqSlgAAAA=&#039;;<br/>$base64_str = base64_decode($string);<br/>var_dump(gzdecode ($base64_str));<br/></div><br/>输出的结果<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">string(88) "[&#123;"actionname":"setTimeout","params":[&#123;"value":3600,"enabled":true,"hearbeat":300&#125;]&#125;,&#123;&#125;]"</div></div>
]]>
</description>
</item><item>
<link>https://atim.cn/post//#blogcomment</link>
<title><![CDATA[[评论] k3cloud接口的加密算法]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://atim.cn/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>