2013-07-03 65 views
-2

我在求職面試中得到了這個,我不知道答案... 我被運行JS的HTML文件給出了,我需要找到密碼。顯示以下JS代碼的密碼

當我運行HTML文件時,除了'Good job'或'太糟糕'字符串外,我得到了所有的東西。 我發現有可能是一個隱藏的代碼,而不是使用這段代碼(我認爲是這樣,因爲我在這個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

+0

你讀這個JS代碼?你不瞭解什麼部分? – SLaks

+0

document.getElementsByTagName( '輸入')[0]。價值== window.location.hostname.replace(/ A-F /, '%') 什麼輸入密碼這一條件的意思?我如何顯示密碼?我不知道網址,我不知道(首先)的這個條件... – Batman

+0

這是一個普通的相等比較(例如,'一=== B')的意思。你不瞭解什麼部分? – SLaks

回答

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

此代碼輸入的值進行比較以從所述URL主機名衍生出的字符串。

它被用作顯示消息的條件操作符的比較值。

+0

那麼,我應該怎麼做才能真正獲得密碼? – Batman

+0

@Batman:看看代碼將它與什麼進行比較。 – SLaks

+0

我不知道在JS中document.getElementsByTagName('input')[0] .value == window.location.hostname.replace(/ af /,'%') 是什麼意思......但是我在這裏理解,我需要找到主機名以揭示通行證。這個過程對我來說非常重要,我非常想要揭示它,但是我不能... – Batman

0

我相信密碼將取決於哪個網站託管此腳本。 c函數查找window.location.hostname(例如www.google.com),並用百分號「%」替換a,b,c,d,e或f中的第一個出現。我不認爲百分號在JS正則表示法中具有任何意義,因此如果腳本託管在www.yahoo.com上,密碼將爲www.y%hoo.com

+0

我收到了一個脫機工作的HTML文件,並且沒有連接到任何URL ... – Batman

+0

我可以保證它有一個網址;它可能是一個file://或http:// localhost/URL,但它肯定會有一個。 – Chris

+0

那麼應該如何找到它?我認爲他們在文件中以某種隱藏方式找到它...... – Batman

0

This fiddle顯示事物的行爲。我添加了一個簡單顯示預期密碼的附加功能。在這種情況下,預期密碼爲fiddle.jshell.net,因爲它是生成文檔所在框架的主機。

所以是的,密碼直接來自網頁的URL。如果它只是你的本地計算機上的HTML文件,像你上面提到的,它的網址是一樣的東西

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

這是無論在地址欄顯示。不過,我懷疑這是這個簡單的,因爲對於一個網頁在file:// URL運行,我們有

window.location.hostname == "" 

表示密碼簡直是空字符串。所以你會把輸入欄留空並點擊按鈕。也許如果你在本地服務器上運行它,它會工作,在這種情況下,密碼將是localhost,正如@Chris所述。

但我也懷疑你可能已經複製了代碼有點不對。也許不是,也許這只是一個伎倆讓你滑倒,但0​​函數中的正則表達式似乎是錯誤的。取而代之的

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

我希望

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

將取代第一小寫abcde,或f%。所以,而不是localhost,你將有lo%alhost

無論如何,從您的問題來看,密碼僅僅是URL的主機名部分,a-f的第一個實例將替換爲%。所以,而不是www.zelda-forever.com,你會有www.zeld%orever.com

+0

不是每個實例。否則正確。 –

+0

呵呵,確實取代只做第一個例子嗎?有一段時間沒有用過它。 –

+0

是的,除非你指定表達式是全局的,否則'/ [a-f]/g' –