krpano允许对XML文件进行加密,对XML进行相应的保护。加密分为两种,第一种为公共加密,即允许其他krpano全景读取该XML,而另一种为私有加密,仅允许加密的用户读取XML。两种加密方式的算法是一致的,只是公有加密使用了一个公共的解密密钥,而私有加密则是根据某个用户自己的密钥进行加密的。
不过,由于krpano可以运行于浏览器中,XML会在解析的过程中在内存中出现,所以可以利用浏览器调试技术提取出解密好的XML。
一个典型的加过密的XML文件如下
1 |
|
以<encrypted></encrypted>为标签,同时密文前三个字母为KEN
手动解密XML详细步骤
以http://vr.pacificparkbrooklyn.com/该网址上的一个全景项目中的密文为例,进行手动解密分析:
1、在Chrome中打开网址,按F12进行打开调试界面,在Network页面可以查看到某个加密的XML
2.打开source标签,找到ppb.js,格式化代码({}按钮),定位到500,499,436行的位置添各加一个断点
3.重新刷新网页,代码会在该位置被中断,继续执行代码,当代码停在436行的eval处时,点击step into按钮进入到该函数中
4.进入到该函数后,对函数进行格式化,按Ctrl+F搜索"ken",可以找到某个函数,该函数即为解密函数
5.在函数的开头和末尾各添加一个断点,多次点击执行,直到出现加密的文件名
6.执行到函数末尾,便可以在内存中看到解密后的xml了,在console窗口中输入变量名n,即可完整得到解密后的XML了,可以把他从console中复制出来,保存在本地。
可见,krpano对XML保护并不够理想,如果想得到更强的保护效果,可以从以下的几个方面进行考虑
1.考虑对KEN这个加密文件头进行处理,可以避免在调试时直接被定位到解密函数
2.考虑修改加密解密算法,防止被软件自动解密
3.考虑分段解密,不在内存中某个位置出现完整的解密后的xml,增加解密的难度
如果你希望使用软件进行自动解密XML文件,可以参考这篇文章http://rentu.azurewebsites.net/post/2016/08/23/krpano-krpano-xml
最新博客地址:http://blog.turenlong.com/