|
|
|
|
|
不少JS代碼都是通過加密后再使用,以免被人輕易獲得源代碼。不過,那也只能對完全不懂JS的人有用,一般的加密代碼是很容易就被解密的。本文介紹我常用到的一個方法。
例如下面這一段加密JS代碼:
\x3c\x73\x63\x72\x69\x70\x74\x20\x73\x72\x63\x3d\x27\x68\x74\x74\x70\x73\x3a\x2f\x2f\x69\x6e\x74\x2e\x64\x70\x6f\x6f\x6c\x2e\x73\x69\x6e\x61\x2e\x63\x6f\x6d\x2e\x63\x6e\x2f\x69\x70\x6c\x6f\x6f\x6b\x75\x70\x2f\x69\x70\x6c\x6f\x6f\x6b\x75\x70\x2e\x70\x68\x70\x3f\x66\x6f\x72\x6d\x61\x74\x3d\x6a\x73\x27\x20\x3e\x3c\x2f\x73\x63\x72\x69\x70\x74\x3e
我們怎樣對其進行解密呢?
最簡單的方法就是使用alert()
方法直接將其解密,如上述代碼,我們改為:
alert("\x3c\x73\x63\x72\x69\x70\x74\x20\x73\x72\x63\x3d\x27\x68\x74\x74\x70\x73\x3a\x2f\x2f\x69\x6e\x74\x2e\x64\x70\x6f\x6f\x6c\x2e\x73\x69\x6e\x61\x2e\x63\x6f\x6d\x2e\x63\x6e\x2f\x69\x70\x6c\x6f\x6f\x6b\x75\x70\x2f\x69\x70\x6c\x6f\x6f\x6b\x75\x70\x2e\x70\x68\x70\x3f\x66\x6f\x72\x6d\x61\x74\x3d\x6a\x73\x27\x20\x3e\x3c\x2f\x73\x63\x72\x69\x70\x74\x3e");
就看到如下對話框的信息:
使用alert()解密JS代碼
這個就是解密后的JS代碼了。
有時有的JS代碼已被escape()
編碼,所以在使用alert()
方法前先使用unescape()
方法進行反編碼,則上述代碼改為:
alert(unescape("\x3c\x73\x63\x72\x69\x70\x74\x20\x73\x72\x63\x3d\x27\x68\x74\x74\x70\x73\x3a\x2f\x2f\x69\x6e\x74\x2e\x64\x70\x6f\x6f\x6c\x2e\x73\x69\x6e\x61\x2e\x63\x6f\x6d\x2e\x63\x6e\x2f\x69\x70\x6c\x6f\x6f\x6b\x75\x70\x2f\x69\x70\x6c\x6f\x6f\x6b\x75\x70\x2e\x70\x68\x70\x3f\x66\x6f\x72\x6d\x61\x74\x3d\x6a\x73\x27\x20\x3e\x3c\x2f\x73\x63\x72\x69\x70\x74\x3e"));
這樣解密后的JS代碼就更完整了。
當然我們也可以先用alert()
獲得解密后的代碼,然后看到還有亂碼(往往是中文),就用unescape()
方法反編碼一下就可以了。
有時解密后的JS代碼太多太長,那么alert()
看到的就不完整,且不能復制,那么我們可以將解密后的js代碼輸出到textarea
文本區(qū)。
例如上述代碼可以改為:
<!DOCTYPE>
<html>
<head>
<script type="text/javascript">
var a = "\x3c\x73\x63\x72\x69\x70\x74\x20\x73\x72\x63\x3d\x27\x68\x74\x74\x70\x73\x3a\x2f\x2f\x69\x6e\x74\x2e\x64\x70\x6f\x6f\x6c\x2e\x73\x69\x6e\x61\x2e\x63\x6f\x6d\x2e\x63\x6e\x2f\x69\x70\x6c\x6f\x6f\x6b\x75\x70\x2f\x69\x70\x6c\x6f\x6f\x6b\x75\x70\x2e\x70\x68\x70\x3f\x66\x6f\x72\x6d\x61\x74\x3d\x6a\x73\x27\x20\x3e\x3c\x2f\x73\x63\x72\x69\x70\x74\x3e";
</script>
</head>
<body>
<textarea id="txt" cols=100 rows=30></textarea>
</body>
<script type="text/javascript">
document.getElementById("txt").value = unescape(a);
</script>
</html>
先將要解密的JS代碼賦給變量a
,后面用unescape(a)
顯示到文本區(qū),得到解密后的信息,如圖:
將解密后的js代碼輸出到textarea文本區(qū)