Phone Lock (Web)

A friend of mine forgot her phone password. I told her you're the hacker! Go get 'em tiger.
I forgot my phone password, can you help me unlock it? (Don't judge, happens to us all)
リンクをクリックすると、携帯電話の数字盤が表示されます。数字を4文字押すと暗証番号とチェックされ、間違っていると振動します。
さて、どのように実装されているか確認するために、ブラウザからソースを表示してみます。
salt="0c4aa63feb00b85304c2556257fe2963";
valid="5a5d9ffab9ea139a8b05d3d98a557bcf";
function buttonClick(e)
{
    if (locked) return false;
    var t=$("#result");
    t.val(t.val()+"X");
    result+=e.target.text;
    if (t.val().length>=4)
    {
        if (md5(salt+result)==valid)
        {
            alert("Flag is: "+md5(salt+result+result));
        }
        else
        {
            locked=true;
              $("#resultHolder").effect("shake", { times:tries }, tries*100,function(){
                t.val("");
                result="";
                tries++;
                locked=false;
              });
        }
    }
}
resultには押した数字が入ります。saltとresultを連結した文字列のMD5ハッシュ値とvalidを比較して一致していれば、flagが表示されるようです。
したがって、次のように4桁の数字をブルートフォースアタックでFlagを取得することができます。
for(a=0;a<=9;a++)
{
    for(b=0;b<=9;b++)
    {
        for(c=0;c<=9;c++)
        {
            for(d=0;d<=9;d++)
            {
                if (md5(salt+a+b+c+d)==valid)
                {
                    alert("Flag is: "+md5(salt+a+b+c+d+a+b+c+d));
                    break;
                }
            }
        }
    }
}
このjavascriptを実行すると、次のようにフラグが表示されます。
Flag is: a9786c1342e430ce0b00ae4e0ad582a4