记录一下这个简单的解决js加密的方法。
最近在看一个网站的时候,发现有一个很有意思的加密,如果想从源码直接获取到它的文本,呵呵,没门!! ,不会最基本的javaScript,呵呵,没门!!。网站加密手段很简单,但是刚开始看时候却找不着方法,记录一下。
1.问题展示
1.看一下下图,这是网页的亚子。(手动复制过来的,只上了文本)
2.查看一下源码
3.没错,这一堆东西进行了加密,看起来还不简单的样子。接下来看一下如何解决它。
4.网页源码。(可手动复制保存为html格式)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
</html>
<script type="text/javascript">
var sentence= "~5982~679c~4f60~5df2~7ecf~9519~8fc7~4e86~5341~5e74~524d~79cd~6811~7684~65f6~673a~ff0c~4e0d~8981~61ca~6094~ff0c~73b0~5728~64ad~79cd~ff0c~603b~6709~4e00~5929~ff0c~5b83~4e5f~4f1a~4ead~4ead~5982~76d6~3002~002d~002d~3010~0073~0075~006e~0072~0069~0073~0065~0063~0061~0069~5171~52c9~3011\n"
var sentence_=unescape(sentence.replace(/~/g,'%u'));
document.write(sentence_)
</script>
2.解析
- 首先看到源码内的var sentence定义了一串很长的字符串,看一下有什么规律。
var sentence = ~5982~679c~4f60~5df2~7ecf~9519~8fc7~4e86~5341~5e74~524d~79cd~6811~7684~65f6~673a~ff0c~4e0d~8981~61ca~6094~ff0c~73b0~5728~64ad~79cd~ff0c~603b~6709~4e00~5929~ff0c~5b83~4e5f~4f1a~4ead~4ead~5982~76d6~3002~002d~002d~3010~0073~0075~006e~0072~0069~0073~0065~0063~0061~0069~5171~52c9~3011
- 发现是一个 ~ + 4位字母或数字组成的字符串,,
- 再看下面一句,sentence_ 是 sentence 先经过 replace字符替换然后经过 unescape 解密的变量。
var sentence_=unescape(sentence.replace(/~/g,'%u'));
- 百度一下,unescape是:unescape() 函数可对通过 escape() 编码的字符串进行解码。
- 那接下来就是看懂这句 replace(/~/g,’%u’) 的意思就可以了。
在js里面,/~/ 等价于 ‘~’,g代表全局,%u等价于 \u
换句话说就是:replace(/~/g,’%u’) 的意思就是将字符串的所有的 ~ ,替换成 \u.
- 所以,进行字符替换后,就可以拿到替换后的数据了。
取到字符替换后的字符串后,去解码网站,选择Unicode转中文,看一下是否是我们需要用数据。
- 很明显,这是我们需要的数据。接下来看一下用python如何实现解码。
# 先将字符串编码为'utf-8',然后解码为'unicode_escape'
string = string.encode('utf-8').decode('unicode_escape')
- 添加了这一行代码,就大功告成了。
3.完整代码
string = '~5982~679c~4f60~5df2~7ecf~9519~8fc7~4e86~5341~5e74~524d~79cd~6811~7684~65f6~673a~ff0c~4e0d' \
'~8981~61ca~6094~ff0c~73b0~5728~64ad~79cd~ff0c~603b~6709~4e00~5929~ff0c~5b83~4e5f~4f1a~4ead~4ead' \
'~5982~76d6~3002~002d~002d~3010~0073~0075~006e~0072~0069~0073~0065~0063~0061~0069~5171~52c9~3011'
string = string.replace(r'~',r'\u')
string = string.encode('utf-8').decode('unicode_escape')
print(string)
不由感慨编程语言的神奇之处。
好了,本次的分享到此结束。
有任何疑问欢迎在下方留言哦。