Na Fedorze 19
Kiedy go uruchamiam, wszystko jest OK. Jestem na Fedorze 19.
$ echo 'M1uG*xgRCthKWwjIjWc*010iSthY9buc' | cracklib-check
M1uG*xgRCthKWwjIjWc*010iSthY9buc: OK
Oto informacje o wersji:
$ rpm -qfi /usr/sbin/cracklib-check | grep -E "Version|Release"
Version : 2.8.22
Release : 3.fc19
UWAGA: Wypróbowałbym to również z pojedynczymi cudzysłowami zamiast podwójnych qutoes, ponieważ masz do czynienia z tymi, *
które mogą się w ciebie dziwnie rozszerzać.
CentOS 5 i 6
Wypróbowanie przykładu na CentOS 6 było w porządku, dostało się OK, ale nie powiedzie się tak, jak opisano w CentOS 5.9.
$ echo 'M1uG*xgRCthKWwjIjWc*010iSthY9buc' | cracklib-check
M1uG*xgRCthKWwjIjWc*010iSthY9buc: it is too simplistic/systematic
Informacje o wersji:
$ rpm -qfi /usr/sbin/cracklib-check | grep -E "Version|Release"
Version : 2.8.9
Release : 3.3
Błąd?
To, w co wpadłeś, wydaje się być błędem. Jeśli weźmiesz swój ciąg i wpuścisz w niego coraz więcej cracklib-check
, zauważysz, że gdy dojdziesz do 26 znaku, zaczyna się on nie powieść:
# 25
$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iS"
M1uG*xgRCthKWwjIjWc*010iS: OK
# 26
$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iSt"
M1uG*xgRCthKWwjIjWc*010iSt: it is too simplistic/systematic
Pogłębię to, jeśli zmienię ostatnią postać z a, t
aby powiedzieć, v
że nadal działa.
$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iSvhY9b"
M1uG*xgRCthKWwjIjWc*010iSvhY9b: OK
Wydaje się więc, że w wersji cracklib-check
odkładanie się na podciąg Sth
.
Zdecydowanie coś dziwnego jest w podanych fragmentach łańcucha. Jeśli wezmę końcówkę ogona i pominę przednią część, mogę również spowodować awarię tej części.
$ cracklib-check <<<"jIjc*010Sth"
jIjc*010Sth: it is too simplistic/systematic
Ten sam ciąg powoduje problemy również w Fedorze 19 i CentOS 6!
AKTUALIZACJA # 1
Opierając się na bardzo ładnym przemyśleniu @ waxwing , wiemy teraz, że heurystyka ulegała potknięciu, jeśli> 4 znaki były zbyt blisko siebie. Wprowadzono łatkę, która zmieniła tę heurystykę, dzięki czemu uwzględniono całkowitą długość rozpatrywanego hasła w celu wyeliminowania tych fałszywych trafień.
Wnioski
Na podstawie niektórych moich ograniczonych testów wydaje się, że w grę wchodzą tutaj dziwne heurystyki. Pewne łańcuchy, które z pozoru byłyby w porządku, powodują potknięcie.
Jeśli próbujesz to skodyfikować, sugeruję zawinięcie generowania i oceny hasła, a następnie wyrwanie się z pętli po wygenerowaniu hasła, które ustępuje cracklib-check
.
A przynajmniej sugeruję aktualizację do nowszej wersji, która zawiera poprawki, o których wspomina @maxwing w swojej odpowiedzi.
Alternatywy Genów haseł
pwgen
Dodam też, że zwykle używam pwgen
do generowania haseł. To też może ci się przydać.
$ pwgen -1cny 32
iWu0iPh8aena9raSoh{v6me)eh:eu6Ei
urandom
Można też użyć trochę magii ze skryptów tr
, /dev/urandom
i fold
uzyskać bardzo wysoką jakość losowe hasło.
$ tr -dc '[:graph:]' </dev/urandom | fold -w 32 | head -n 1
;>$7\`Hl$=zn}R.b3h/uf7mY54xp}zSF
fold
Komenda może kontrolować długość. Alternatywnie możesz to również zrobić:
$ echo $(tr -dc '[:graph:]' </dev/urandom | head -c 32)
/_U>s[#_eLKAl(mrE@oo%X~/pcg$6-kr
M1uG*xgRCthKWwjIjWc*010iSthY9buc: OK