1.04.2014

Brute Force uchun crunch dasturi yordamida lug`at yaratish

Hozirgi kunda Brute Force uchun lug`atlar yaratishda ko`pgina dasturlar mavjud. Linux OTning Backtrack, Kali disbributivlarida lug`atlardan foydalanishda asosiy ish quroli crunch dasturi hisoblanadi. Crunch dasturida o`zingizni didingizga mos bo`lgan lug`atni yaratib olishingiz mumkin, ya'ni siz xoxlagan miqdordagi so`z, siz xoxlagan miqdordagi hajm (bu degani 1 milliard so`zni ham 1 Kb ko`rinishida saqlaydi degani emas, xullas nima demoqchi bo`lganimni tushundiz), siz xoxlagan formatda arxivlash va hokazo. Siz boshqa distributivlardan foydalasangiz, unda dasturni quyidagibog`lamdan ko`chirib olishingiz mumkin.
Demak boshladik. Crunch dasturidan foydalanish “skeleti” quyidagicha:
# crunch [minimal_uzunlik] [maksimal_uzunlik] [belgilar_to`plami] [optsiyalar]
Dastlabki misol: Uzunligi 1 dan 2 ta belgicha va tarkibi ABC belgilaridan tashkil topgan so`zlar lug`ati:
# crunch 1 2 ABC
A
B
C
AA
AB
AC
BA
BB
BC
CA
CB
CC
Agarda belgilar to`plami berilmasa, bunda avtomatik tarzda alfa belgilar to`plamidan (ingliz alifbosining kichik harflar to`plami) foydalaniladi.
Lug`atda maxsus belgilardan foydalaniladigan bo`lsa, unda “\” belgisi bilan ajratiladi, ya'ni quyidagicha:
# crunch 3 6 ABC\#\&\@\!
Ma'lum bir hajmdagi lug`at yaratishda esa -b optsiyasidan foydalaniladi. Misol uchun, ushbu optsiyadan hajmi 1Mb yoki 1Tbdan oshmaydigan lug`at yaratish kerak bo`lgan hollarda foydalanish mumkin. Bu optsiya ishlatilganida -o STARToptsiyasi ham birga qo`llaniladi. Lug`at hajmini berishda ikki xil format mavjud, yani kb, mb, gb, tb (1KB=1000 bayt) yoki kib, mib, gib, tib (1KB=1024 bayt)
Misol, hajmi 1TBdab oshmaydigan lug`at tuzish:
# crunch 1 20 ABCDEFGHIJKLMNOP -b 1tib -o START
Ma'lum miqdordagi qatorlardan oshmaydigan lug`at yaratishda esa -c optsiyasidan foydalaniladi. Bu optsiya ham -o START optsiyasi ishlatilishi zarur.
Misol, 1 million qatordan oshmaydigan lug`at tuzish:
# crunch 1 20 ABCDEFGHIJKLMNOP -c 1000000 -o START
Belgilar to`plami ishlatilganda, to`plam tarkibi har safar foydalanuvchi tomonidan kiritilishi ancha qo`pol amal hisoblanadi. Shu sababli ma'lum belgilar asosida fiksirlangan to'plamlarni ma'lum bir ro`yxat ko`rinishida faylga saqlanib, har safar shu ro`yxatdan foydalanilsa maqsadga muvofiq. Misol uchun, charset.lst faylini hosil qilamiz:
# touch /opt/charset.lst
# cd /opt/
# chmod 755 charset.lst
# gedit charset.lst
Va ushbu faylda quyida berilgan fiksirlangan belgilar to`plamini yozamiz va faylni saqlaymiz:

# compatible with rainbowcrack 1.1 and later by Zhu Shuanglei <shuanglei@hotmail.com>
hex-lower = [0123456789abcdef]
hex-upper = [0123456789ABCDEF]

numeric = [0123456789]
numeric-space = [0123456789 ]

symbols14 = [!@#$%^&*()-_+=]
symbols14-space = [!@#$%^&*()-_+= ]

symbols-all = [!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/]
symbols-all-space = [!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]

ualpha = [ABCDEFGHIJKLMNOPQRSTUVWXYZ]
ualpha-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ ]
ualpha-numeric = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
ualpha-numeric-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ]
ualpha-numeric-symbol14 = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=]
ualpha-numeric-symbol14-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+= ]
ualpha-numeric-all = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/]
ualpha-numeric-all-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]

lalpha = [abcdefghijklmnopqrstuvwxyz]
lalpha-space = [abcdefghijklmnopqrstuvwxyz ]
lalpha-numeric = [abcdefghijklmnopqrstuvwxyz0123456789]
lalpha-numeric-space = [abcdefghijklmnopqrstuvwxyz0123456789 ]
lalpha-numeric-symbol14 = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+=]
lalpha-numeric-symbol14-space = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+= ]
lalpha-numeric-all = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/]
lalpha-numeric-all-space = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]

mixalpha = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]
mixalpha-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ]
mixalpha-numeric = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
mixalpha-numeric-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ]
mixalpha-numeric-symbol14 = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=]
mixalpha-numeric-symbol14-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+= ]
mixalpha-numeric-all = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/]
mixalpha-numeric-all-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]

Endi yuqorida to`plamlar asosida o`zimizga kerakli bo`lgan belgilardan foydalanishimiz mumkin. Bunda -f optsiyasidan foydalangan holda charset.lst faylining manzili ko`rsatiladi. Misol uchun:
# crunch 5 9 -f /opt/charset.lst ualpha
Ya'ni, ingliz alifbosining katta harflaridan iborat bo`lgan to`plam
Shuningdek crunch dasturida berilgan so`zlarning kombinatsiyasi asosida yoki berilgan so`zning tarkibidagi belgilarni o`rin almashtirish usulida ham lug`at yaratish mumkin bunda bizga -p optsiyasi yordam beradi
Misol uchun:
# crunch 1 1 -p gaz
agz
azg
gaz
gza
zag
zga

Yoki
# crunch 1 1 -p oq qora soch
oqqorasoch
oqsochqora
qoraoqsoch
qorasochoq
sochoqqora
sochqoraoq

Yuqorida e'tibor bersangiz, so`zlarning minimal va maksimal uzunligi bu yerda ahamiyatga ega bo`lmaydi, lekin son bo`lishi zarur, shuningdek 0 qiymat ham bo`lmasligi zarur.
Lug`atlarni ma'lum bir faylda saqlash imkoni ham mavjud:
# crunch 3 7 -f /opt/charset.lst numeric -o dictionary.txt
Berilgan qiymatdan boshlab lug`atni hosil qilish:
# crunch 3 3 0123456 -s 656
656
660
661
662
663
664
665
666

crunch dasturining eng katta yutuqlaridan biri bu – shablonlardir. Ya'ni siz xoxlagan ko`rinishdagi lug`atni hosil qilishingiz mumkin. Buning uchun -t optsiyasidan foydalaniladi.
# crunch 6 6 -t @osh@@
yuqoridagi orqali oltida belgidan iborat bo`lgan shablon hosil qilinib, bu shablon asosida hosil qilinadigan so`zlar tarkibida *osh** belgilari mavjud bo`lib, @ o`rnida alifboning kichik harflari keladi:

eoshmj
eoshmk
eoshml
eoshmm
eoshmn
eoshmo
eoshmp
eoshmq
eoshmr
...

Umuman olganda @ belgisini uning o`rnida mavjud bo`lishi mumkin bo`lgan belgilarning turini aniqlaydi. Bu belgilar asosan 4 ta:
@ — alifboning kichik harflari (elektron pochta belgisi, “kuchukcha”)
, — alifboning bosh harflari (vergul)
% — raqamlar (foiz)
^ — maxsus belgilar (Shift+6)
#crunch 7 7 -t @salom%
Natija quyidagi kabi:

usalom2
usalom3
usalom4
usalom5
usalom6
usalom7
usalom8
usalom9
...

Umumiy xulosa qilib aytganda crunch dasturining imkoniyatlari ancha keng va lug`atni hosil qilishda kam vaqt talab qilishi bilan ham ajralib turadi. Bu lug`atlar yordamida HASH funksiyalarning lug`atlarini ham tayyorlash ancha qulay. O`zingiz yaratgan lug`atlardan pochta parollarini olishda ishlatib ko`ring…

Комментариев нет: