Pada Fedora 19
Ketika saya menjalankannya saya mendapatkan OK. Saya menggunakan Fedora 19.
$ echo 'M1uG*xgRCthKWwjIjWc*010iSthY9buc' | cracklib-check
M1uG*xgRCthKWwjIjWc*010iSthY9buc: OK
Inilah info versi:
$ rpm -qfi /usr/sbin/cracklib-check | grep -E "Version|Release"
Version : 2.8.22
Release : 3.fc19
CATATAN: Saya akan mencobanya dengan tanda kutip tunggal alih-alih double qutoes juga karena Anda sedang berhadapan dengan *
itu, mereka mungkin akan diperluas dengan cara yang aneh pada Anda.
CentOS 5 & 6
Mencoba contoh Anda di CentOS 6 baik-baik saja, mendapat nilai OK, tetapi gagal seperti yang Anda jelaskan pada CentOS 5.9.
$ echo 'M1uG*xgRCthKWwjIjWc*010iSthY9buc' | cracklib-check
M1uG*xgRCthKWwjIjWc*010iSthY9buc: it is too simplistic/systematic
Informasi versi:
$ rpm -qfi /usr/sbin/cracklib-check | grep -E "Version|Release"
Version : 2.8.9
Release : 3.3
Bug?
Apa yang Anda temukan sepertinya adalah bug. Jika Anda mengambil string Anda dan menjalankan lebih banyak string cracklib-check
Anda ke dalam Anda akan melihat bahwa ketika Anda sampai ke karakter ke-26 itu mulai gagal:
# 25
$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iS"
M1uG*xgRCthKWwjIjWc*010iS: OK
# 26
$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iSt"
M1uG*xgRCthKWwjIjWc*010iSt: it is too simplistic/systematic
Menggali lebih dalam tentang ini jika saya mengubah karakter terakhir dari a t
untuk mengatakan v
itu terus bekerja.
$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iSvhY9b"
M1uG*xgRCthKWwjIjWc*010iSvhY9b: OK
Jadi akan terlihat bahwa dalam versi cracklib-check
semakin terpaku pada substring Sth
.
Pasti ada sesuatu yang aneh tentang potongan string yang Anda berikan. Jika saya mengambil bagian ujung ekor dan menghilangkan bagian depan saya bisa mendapatkan bagian ini gagal juga.
$ cracklib-check <<<"jIjc*010Sth"
jIjc*010Sth: it is too simplistic/systematic
String yang sama menyebabkan masalah pada Fedora 19 & CentOS 6 juga!
PEMBARUAN # 1
Berdasarkan sleuthing @ waxwing yang sangat bagus, kita sekarang tahu bahwa heuristik yang digunakan tersandung jika> 4 karakter terlalu berdekatan satu sama lain. Sebuah tambalan diperkenalkan yang mengubah heuristik ini sehingga panjang keseluruhan kata sandi yang dipertimbangkan dipertimbangkan untuk menghilangkan positif palsu ini.
Kesimpulannya?
Berdasarkan beberapa pengujian terbatas saya, akan muncul bahwa ada beberapa heuristik aneh yang dimainkan di sini. String tertentu yang tampaknya akan baik-baik saja tersandung.
Jika Anda mencoba untuk mengkodifikasikan ini, saya akan menyarankan membungkus generasi & evaluasi kata sandi dan kemudian keluar dari loop setelah kata sandi telah dibuat yang sesuai cracklib-check
.
Atau paling tidak saya sarankan memperbarui ke versi yang lebih baru yang mencakup perbaikan yang @maxwing sebutkan dalam jawabannya.
Alternatif Gen Kata Sandi
pwgen
Saya juga akan menambahkan yang biasanya saya gunakan pwgen
untuk menghasilkan kata sandi. Itu mungkin membantu Anda di sini juga.
$ pwgen -1cny 32
iWu0iPh8aena9raSoh{v6me)eh:eu6Ei
urandom
Anda juga dapat menggunakan sihir scripting kecil dengan tr
, /dev/urandom
, dan fold
untuk mendapatkan password acak kualitas yang sangat tinggi.
$ tr -dc '[:graph:]' </dev/urandom | fold -w 32 | head -n 1
;>$7\`Hl$=zn}R.b3h/uf7mY54xp}zSF
The fold
perintah dapat mengontrol panjang. Sebagai alternatif, Anda juga dapat melakukan ini:
$ echo $(tr -dc '[:graph:]' </dev/urandom | head -c 32)
/_U>s[#_eLKAl(mrE@oo%X~/pcg$6-kr
M1uG*xgRCthKWwjIjWc*010iSthY9buc: OK