To get the key for “Access Level 1” we need to pass an authentication form. When trying to submit a key, we get the following reply:
So we need to have a look into the source code of the password validation functions. At first we are going to see the HTML lines (index.php). The interesting ones are these:
<script type="text/javascript" src="crypto.js"></script> <form action="login.php" method="POST" onsubmit="return encrypt(this);"> <input id="key" type="hidden" name="key" value="" /> <input id="verification" type="hidden" name="verification" value="yes" /> </form>
As we can see the page uses an external JavaScript file to calculate the validation of the password. Next step will be to examine this script file (crypto.js). It looks like this:
var _0x52ae=["\x66\x20\x6F\x28\x38\x29\x7B\x63\x20\x69... ...,"\x67"];eval(function (_0x7038x1,_0x7038x2,_0x7038x3.. ...toString(36));};if(!_0x52ae[4][_0x52ae[6]](/^/,String).. ...[0],46,46,_0x52ae[3][_0x52ae[2]](_0x52ae[1]),0,{}));
The JavaScript itself uses many “eval” (evaluation) functions, confusing variable names and is incredible obfuscated at all. It cannot be read this way! So we need make it readable again – at best evaluate the “eval” function to get the real plain source code. It very good way to do so is using raw SpiderMonkey – the Mozilla JavaScript engine: