Я работаю над проектом в MATLAB, целью которого является разрыв пароля пользователя с использованием грубой силы. Я успешно настроил его на разрыв паролей длиной до восьми символов, но я хочу, чтобы он мог работать с паролями любой длины. В целом, код в основном проверяет все возможные односимвольные пароли, а затем все возможные пароли с двумя символами и т. Д. (Примечание: realpass - это пароль, введенный пользователем, угадайте, что укомплектована компьютером, alphasize - это длина алфавита символы, которые я даю MATLAB, чтобы проверить в начале сценария, то есть количество возможных символов.)MATLAB петля грубой силы
% check all 1 character passwords possible w/ given alphabet
if strcmp(guess, realpass) == 0
for i = 1:alphasize(2)
guess(1) = alphabet(i);
if strcmp(guess, realpass) == 1
break
end
end
end
% the password has more than one characters, check all possible 2 character passwords
if strcmp(guess, realpass) == 0
for i = 1:alphasize(2)
guess(1) = alphabet(i);
for j = 1:alphasize(2)
guess(2) = alphabet(j);
if strcmp(guess, realpass) == 1
break
end
end
if strcmp(guess, realpass) == 1
break
end
end
end
Как вы могли бы, вероятно, сказать, чтобы получить это до 8 символов, есть много копий/вставки , что является отличным индикатором того, что цикл может использоваться. Моя проблема в том, что петля ведет себя правильно. Вы можете увидеть мою попытку на github. Есть ли у кого-нибудь какие-либо советы по запуску и запуску этой вещи?
Большое спасибо!
Вопрос - Почему вы не можете просто проверить каждый символ по отдельности? Например, пропустите все символы вашего алфавита для первого символа, и когда мы найдем совпадение, перейдем ко второму символу и т. Д.? Почему вы должны генерировать все возможные 1 перестановки, затем 2 перестановки и т. Д.? – rayryeng
@rayryeng Я думаю, что 'strcmp' только для подделки, если пароль был найден или нет. – CitizenInsane
@CitizenInsane - Я не совсем уверен, что я следую. Не могли бы вы уточнить? – rayryeng