![]() |
Буквенный перебор C++
подскажите как на C++ сделать цикл с буквенным перебором
тоесть перебор английских букв от A до Z если конкретно то хочу сделать полный буквенный перебор как в брутфорсах |
Буду очень признателен, если переформулируешь вопрос ) Я нифига не понял.
Перебор чего? Что делать с полученными данными? Какой порядок у них? Какие буквы? |
вариантов несколько. дают разную скорость. но вполне оптимизированный по скорости - заводишь массив интов. сколько символов в пароле - столько элементов в массиве. заводишь массив словаря. например получится так
// 5 символов в словаре char dictionary [] = { 'a', 'b', 'c', 'e', 'f'}; // 10 символов в пароле int pass [10]; Значение в массиве pass указывает, какую букву сейчас содержит соответствующий символ пароля. Дальше делаешь инкремент последнего элемента массива pass. проверяешь на переолпнение. причем переполнение происходит когда элемент массива рваен sizeof(dictionary). Когда дошел до последней буквы - сбрасываешь в ноль и плюсуешь 1 следующему элементу массива. В итоге перебор сводится к простой арифметике. По сути это реализация системы счисления. Тока не десятичной, а сколько символов в словаре. Ну а дальше делаешь функцию passToStr(), в которой проходишь по каждому элементу массива и подставляешь вместо числа символ string txt_pass = ""; txt_pass = string(pass[i]) + txt_pass; типа такого. плюс данного варианта в простом изменении словаря. минус - можно сделать еще оптимизированнее. вообще задача имеет туеву хучу решений и зависит тока от наличия моска в черепной коробке. |
вот еще вариант набросал за пару минут. плюс - минимум кода(4 строки в цикле). минус - много делений для разбивки на разряды.
Код:
#include <windows.h> |
Можно по ascii кодам, + удобней будет с разным регистром.
2Ra$cal, просто ради интереса вопрос, зачем хедер апи?) |
по аскам удобно только для одной раскладки и регистра. иначе будут плодиться ифы.
windows.h проинклюден ибо это отдельный прожект в котором клепаю на скорую руку кодесы =) поэтому основные хидеры подрублены и using namespace добавлен=) |
Как раз по аски будет удобней, массивы уже по сути есть, просто нужно выбрать необходимый промежуток. А забивать вручную разные регистры/раскладки - это не удобно.
|
ну сделай на асках перебор такого словаря:
a,b,e,g,x,F,K,L,V,2,6,7,0,~,!,^,_,=,) |
Я говорил про полный алфавитный перебор, как видишь ТС говорил про A..Z. Т.е. ему хватит перебора 41h..5Ah
|
я о другом. просто A-Z легко перечислить инкрементя и сравнивая с 'Z' это да. Но проще все таки сделать универсальный алго. Правда это мое имхо. Но ты пишешь
Цитата:
|
| Время: 06:44 |