На Fedora 19
Коли я запускаю його, я отримую все в порядку. Я на Fedora 19.
$ echo 'M1uG*xgRCthKWwjIjWc*010iSthY9buc' | cracklib-check
M1uG*xgRCthKWwjIjWc*010iSthY9buc: OK
Ось інформація про версію:
$ rpm -qfi /usr/sbin/cracklib-check | grep -E "Version|Release"
Version : 2.8.22
Release : 3.fc19
ПРИМІТКА: Я б спробував це з одинарними цитатами, а не з подвійними qutoes, оскільки ви маєте справу з *
ними, вони можуть на вас розширитись дивним чином.
CentOS 5 і 6
Пробувати свій приклад на CentOS 6 було добре, вийшов ОК, але він не вдався, як ви описали на CentOS 5.9.
$ echo 'M1uG*xgRCthKWwjIjWc*010iSthY9buc' | cracklib-check
M1uG*xgRCthKWwjIjWc*010iSthY9buc: it is too simplistic/systematic
Інформація про версію:
$ rpm -qfi /usr/sbin/cracklib-check | grep -E "Version|Release"
Version : 2.8.9
Release : 3.3
Жук?
Те, що ви натрапили, здавалося б, помилка. Якщо ви берете свій рядок і запускаєте все більше і більше своєї строки, cracklib-check
ви помітите, що коли ви дістаєтесь до 26-го символу, він починає виходити з ладу:
# 25
$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iS"
M1uG*xgRCthKWwjIjWc*010iS: OK
# 26
$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iSt"
M1uG*xgRCthKWwjIjWc*010iSt: it is too simplistic/systematic
Копаючи глибше на цьому, якщо я зміню останнього символу з t
на сказати, v
він продовжує працювати.
$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iSvhY9b"
M1uG*xgRCthKWwjIjWc*010iSvhY9b: OK
Тож здавалося б, що у версії cracklib-check
вішається на підрядку Sth
.
Однозначно є щось дивне в шматках струни, яку ви надали. Якщо я візьму шматочок кінця хвоста і опущу передню частину, я також можу змусити цю частину вийти з ладу.
$ cracklib-check <<<"jIjc*010Sth"
jIjc*010Sth: it is too simplistic/systematic
Цей самий рядок викликає проблеми і у Fedora 19 та CentOS 6!
ОНОВЛЕННЯ №1
Виходячи з дуже приємного снування @ waxwing , ми тепер знаємо, що використовуваний евристичний потік стикався, якщо> 4 символи були занадто сусідні один з одним. Патч був введений , який змінив цю евристику , так що загальна довжина пароля розглянутого враховувалася для усунення цих помилкових спрацьовувань.
Висновки?
Виходячи з деяких моїх обмежених тестувань, здається, що тут грають деякі дивні евристики. Деякі рядки, які, здавалося б, чудово, породжують його.
Якщо ви намагаєтеся зашифрувати це, я б запропонував завершити генерацію та оцінку пароля, а потім вийти з циклу, як тільки буде створений пароль, який умикається cracklib-check
.
Або, принаймні, я б запропонував оновити до нової версії, яка включає виправлення, які @maxwing згадує у своїй відповіді.
Альтернативи генератора паролів
pwgen
Додам також, що я зазвичай використовую pwgen
для генерування паролів. Це може бути корисним і для вас.
$ pwgen -1cny 32
iWu0iPh8aena9raSoh{v6me)eh:eu6Ei
урадонний
Ви також можете використовувати трохи сценаріїв магії з tr
, /dev/urandom
і fold
отримати дуже високу якість випадковий пароль.
$ tr -dc '[:graph:]' </dev/urandom | fold -w 32 | head -n 1
;>$7\`Hl$=zn}R.b3h/uf7mY54xp}zSF
fold
Команда може контролювати довжину. Як альтернативу ви також можете зробити це:
$ echo $(tr -dc '[:graph:]' </dev/urandom | head -c 32)
/_U>s[#_eLKAl(mrE@oo%X~/pcg$6-kr
M1uG*xgRCthKWwjIjWc*010iSthY9buc: OK