显示以下JS代码的密码

时间:2013-07-03 19:18:57

标签: javascript html

我在求职面试中得到了这个,我不知道答案...... 我是由一个运行JS的HTML文件给出的,我需要找到密码。

当我运行HTML文件时,除了“好工作”或“太糟糕”字符串外,我得到了所有内容。 我发现可能有一个隐藏的代码超过了这个代码(我想是因为我在这个HTML文件中找到的代码中看不到这样的字符串)。

无论如何......我从原​​始文件中复制了代码并将其保存为新的HTML,然后我得到了“太糟糕”而不是隐藏代码的奇怪消息。

如果有人能向我解释以下代码并告诉我他是如何透露正确的密码,我会非常高兴。

谢谢!

代码:

<script type="text/javascript">
function c(x){ alert((document.getElementsByTagName('input')[0].value == window.location.hostname.replace(/a-f/, '%')) ? 'Good job!' : 'Too bad!'); }
</script>
Password: <input /><br />
<button onclick="c()">Check</button>

我将HTML文件上传到:http://www.filedropper.com/secretpass

3 个答案:

答案 0 :(得分:3)

document.getElementsByTagName('input')[0].value == window.location.hostname.replace(/a-f/, '%')

此代码将输入值与从URL主机名派生的字符串进行比较。

它用作显示消息的条件运算符的比较。

答案 1 :(得分:0)

我认为密码取决于托管此脚本的网站。 c函数查看window.location.hostname(例如www.google.com)并用百分号“%”替换a,b,c,d,e或f的第一次出现。我认为百分号在JS正则表达式中没有任何意义,所以如果脚本托管在www.yahoo.com上,密码将是www.y%hoo.com

答案 2 :(得分:0)

This fiddle显示了该事物的行为。我添加了一个额外的功能,只显示预期的密码。在这种情况下,预期密码为fiddle.jshell.net,因为这是生成文档所在框架的主机。

所以,是的,密码直接来自网页的网址。如果它只是您本地计算机上的HTML文件,就像您上面提到的那样,它的URL就像

file:///C:/Users/yourname/Desktop/jobtest.html

这是地址栏中显示的内容。但是,我怀疑是这么简单,因为对于在file://网址上运行的网页,我们有

window.location.hostname == ""

意味着密码只是空字符串。因此,您将输入字段留空并单击按钮。也许如果你在本地服务器上运行它可以工作,在这种情况下,密码将是localhost,正如@Chris所提到的那样。

但我也怀疑你可能有点复制代码有点错误。也许不是,也许这只是一个让你失望的技巧,但replace()函数中的正则表达似乎是错误的。而不是

`window.location.hostname.replace(/a-f/, '%')`

我希望

`window.location.hostname.replace(/[a-f]/, '%')`

将{{1}替换第一个小写abcdef }}。因此,您需要%而不是localhost

无论如何,从您的问题来看,密码只是网址的主机名部分,第一个lo%alhost实例被a-f取代。因此,您需要%而不是www.zelda-forever.com