Siła hasła. [zamknięte]
Piszę skrypt mierzący siłę hasła.
Na razie taki prototypowy, bo mam problem.
Dlaczego nie działa mi poniższy kod?
<form name="register">
<input type="text" name="password" onkeyup="javascript: inspectPassword()"/>
<span id="resultsViewer"> </span> <br/>
<input type="submit" value="OK"/>
</form>
<script type="application/javascript">
/* <![CDATA[ */
var harmCodes = new Array(
'qw', 'qa', 'qs', 'wq', 'wa', 'ws', 'wd', 'we', 'ew', 'es', 'ed', 'ef', 'er', 're', 'rd', 'rf', 'rg', 'rt', 'tr', 'tf', 'tg', 'th', 'ty', 'yt', 'yg', 'yh', 'yj', 'yu', 'uy', 'uh',
'uj', 'uk', 'ui', 'iu', 'ij', 'ik', 'il', 'io', 'oi', 'ok', 'ol', 'op', 'po', 'pl', 'aq', 'aw', 'as', 'ax', 'az', 'sw', 'se', 'sd', 'sc', 'sx', 'sz', 'sa', 'sq', 'de', 'dr', 'df',
'dv', 'dc', 'dx', 'ds', 'dw', 'fr', 'ft', 'fg', 'fb', 'fv', 'fc', 'fd', 'fe', 'gt', 'gy', 'gh', 'gn', 'gb', 'gv', 'gf', 'gr', 'hy', 'hu', 'hj', 'hn', 'hb', 'hg', 'ht', 'ju', 'ji',
'jk', 'jm', 'jn', 'jh', 'jy', 'ki', 'ko', 'kl', 'km', 'kj', 'ku', 'lo', 'lp', 'lk', 'li', 'za', 'zs', 'zx', 'xz', 'xa', 'xs', 'xd', 'xc', 'cx', 'cs', 'cd', 'cf', 'cv', 'vc', 'vd',
'vf', 'vg', 'vb', 'bv', 'bf', 'bg', 'bh', 'bn', 'nb', 'ng', 'nh', 'nj', 'nm', 'mn', 'mh', 'mj', 'mk'
);
var arrangeLetters = new Array('abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz');
var arrangeDigits = new Array('123', '456', '789', '012', '890');
function inspectPassword() {
var password = document.forms["register"].elements["password"].value;
var points = 0;
var switchKeys = 0;
for(i=0; i<=136; i++) {
if ((password.indexOf(harmCodes[i]) < 17) || (password.indexOf(harmCodes[i].toUpperCase()) < 17)) switchKeys++;
if (switchKeys == 3) break;
}
if (switchKeys == 0) points + 2;
if ((switchKeys > 0) && (switchKeys < 3)) points++;
var switchLetters = 0;
for(i=0; i<=7; i++) {
if ((password.indexOf(arrangeLetters[i]) < 17) || (password.indexOf(arrangeLetters[i].toUpperCase()) < 17)) switchLetters++;
if (switchLetters == 3) break;
}
if (switchLetters == 0) points + 2;
if ((switchLetters > 0) && (switchLetters < 3)) points++;
var switchDigits = 0;
for(i=0; i<=4; i++) {
if (password.indexOf(arrangeDigits[i]) < 17) switchDigits++;
if (switchDigits == 3) break;
}
if (switchDigits == 0) points + 2;
if ((switchDigits > 0) && (switchDigits < 3)) points++;
if (password.length == 8) points++;
if (password.length > 8) && (password.length < 10)) points + 2;
if ((password.length >= 10) && (password.length <= 12)) points + 3;
if (password.length > 12) points + 4;
var resultsViewer = document.getElementById("resultsViewer");
var description;
if (points == 1 || 2) description="<span class='veryRed'>słabe</span>";
if (points == 3 || 4) description="<span class='red'>przeciętne</span>";
if (points == 5 || 6) description="<span class='orange'>średnie</span>";
if (points == 7 || 8) description="<span class='green'>mocne</span>";
if (points == 9 || 10) description="<span class='veryGreen'>bardzo mocne</span>";
resultsViewer.innerHTML = description;
}
/* ]]> */
</script>
<style type="text/css">
/* <![CDATA[ */
span {
font-weight: bold;
}
.veryRed {
color: #990000;
}
.red {
color: #ff0000;
}
.orange {
color: #ff5000;
}
.green {
color: #00ff00;
}
.veryGreen {
color: #009900;
}
/* ]]> */
</style>
Tablica harmCodes przechowuje niebezpieczne powiązania między klawiszami.
Ja biorę pod uwagę, że np. qwaszx jest łatwiejsze do złamania niż xilvra.
Wystarczy spojrzeć na drogę, jaka zostaje pokonana podczas wpisywania tych haseł.
Wyrafinowane narzędzia crackerskie analizują właśnie to.
Jak na moje, skrypt powinien działać.
Ale nie działa, nie wiem czemu.
Powód zamknięcia: Udzielono odpowiedzi na pytanie, poprawna odpowiedź została zaakceptowana