MSIE Port of Password Bookmarklet

This is my port of the excellent password bookmarklet from Nic Wolff
It uses the Liorean bookmarklet code to implement a simple workaround for the size limit in Microsoft Explorer’s URL length.
Installation instructions:
Follow these carefully or your bookmarklet will not work.

  1. Save this piece of javascript into a file somewhere on your server as passlet.js:
    <br /> function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * 8));}<br /> function core_md5(x, len){x[len &gt;&gt; 5] |= 0x80 &lt;&lt; ((len) % 32);x[(((len + 64) &gt;&gt;&gt; 9) &lt;&lt; 4) + 14] = len;var a = 1732584193;var b = -271733879;var c = -1732584194;var d = 271733878;for(var i = 0; i &lt; x.length; i += 16){var olda = a;var oldb = b;var oldc = c;var oldd = d;a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);c = md5_ff(c, d, a, b, x[i+10], 17, -42063);b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);a = safe_add(a, olda);b = safe_add(b, oldb);c = safe_add(c, oldc);d = safe_add(d, oldd);}return Array(a, b, c, d);}<br /> function md5_cmn(q, a, b, x, s, t){return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);}<br /> function md5_ff(a, b, c, d, x, s, t){return md5_cmn((b &amp; c) | ((~b) &amp; d), a, b, x, s, t);}<br /> function md5_gg(a, b, c, d, x, s, t){return md5_cmn((b &amp; d) | (c &amp; (~d)), a, b, x, s, t);}<br /> function md5_hh(a, b, c, d, x, s, t){return md5_cmn(b ^ c ^ d, a, b, x, s, t);}<br /> function md5_ii(a, b, c, d, x, s, t){return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);}<br /> function safe_add(x, y){var lsw = (x &amp; 0xFFFF) + (y &amp; 0xFFFF);var msw = (x &gt;&gt; 16) + (y &gt;&gt; 16) + (lsw &gt;&gt; 16);return (msw &lt;&lt; 16) | (lsw &amp; 0xFFFF);}<br /> function bit_rol(num, cnt){return (num &lt;&lt; cnt) | (num &gt;&gt;&gt; (32 &#8211; cnt));}<br /> function str2binl(str){var bin = Array();var mask = (1 &lt;&lt; 8) &#8211; 1;for(var i = 0; i &lt; str.length * 8; i += 8)bin[i&gt;&gt;5] |= (str.charCodeAt(i / 8) &amp; mask) &lt;&lt; (i%32);return bin;}<br /> function binl2hex(binarray){var hex_tab = &quot;0123456789abcdef&quot;;var str = &quot;&quot;;for(var i = 0; i &lt; binarray.length * 4; i++){str += hex_tab.charAt((binarray[i&gt;&gt;2] &gt;&gt; ((i%4)*8+4)) &amp; 0xF) + hex_tab.charAt((binarray[i&gt;&gt;2] &gt;&gt; ((i%4)*8)) &amp; 0xF);}return str;}<br /> function doIt(master){<br /> if (master==&#8221;) master=window.prompt(&#8216;Enter your master password&#8217;);<br /> if (master != &#8221; &amp;&amp; master != null)<br /> {<br /> re = new RegExp(&quot;https*://([^/]+)&quot;);<br /> host = document.location.href.match(re)[1];<br /> var i=0,j=0;<br /> var p=hex_md5(master+&#8217;:&#8217;+host).substr(0,8);<br /> var F=document.forms;<br /> for(i=0;i &lt; F.length;i++)<br /> {<br /> E=F[i].elements;<br /> for(j=0;j &lt; E.length;j++)<br /> {<br /> D=E[j];<br /> if(D.type==&#8217;password&#8217;)<br /> {<br /> D.value=p;<br /> D.focus();<br /> }<br /> if(D.type==&#8217;text&#8217;)<br /> {<br /> if(D.name.toUpperCase().indexOf(&#8216;PASSWORD&#8217;)!=-1||D.name.toUpperCase().indexOf(&#8216;PASSWD&#8217;)!=-1)<br /> {<br /> D.value=p;D.focus();<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br />
  2. Drag one of the links(or both) to the ‘Links’ toolbar in your MSIE, or into favorites:
    • This bookmarklet PASS uses the hardcoded password.
    • This bookmarklet aPASS will ask for password each time.
  3. Edit the URL of the passlet.js in the bookmark
  4. If you’re using the hardcoded master password, edit it too.

Related Posts

17 thoughts on “MSIE Port of Password Bookmarklet

  1. I have the same problem as claudeo described, however i don\’t know how to get around it like he did.
    Please help,
    thank you
    X]]>

  2. Select copy shortcut.
    Right Click on your desktop and select paste.
    Edit the properties of the shortcut as described above.
    Say Yes to the error about not knowing the application type.
    Drag and drop this shortcut into your links on the browser.
    You will get a warning that this link may not be safe, say yes.
    Walla you have the shortcut.]]>

Comments are closed.