использование переменных с функцией system () для вызова dos

Я пытался написать простой взломщик паролей грубой силы на C ++, чтобы открыть старый zip-файл, который я заблокировал очень давно.

Пытаюсь вызвать из программы pkunzip. Единственный известный мне способ сделать это - использовать команду system (). Как в системе («вяжущий») ;. Проблема в том, что мне нужно каждый раз сбрасывать новый пароль в строку, пока я не получу удар. Для этого потребуется вставить переменную в команду, которую я отправляю в DOS. Вот где я заблудился. Итак, код может выглядеть примерно так ...

 system("pkunzip lockedFile -s[the password variable here]")

Кроме того, вся эта идея может быть ужасной, поэтому, если есть лучший способ, просто скажите.

Кроме того, могу ли я использовать команду cd \, чтобы перейти в нужный каталог, или вам просто нужно выгрузить соответствующие файлы в том же каталоге, что и сам проект C ++. Любая помощь или общие указатели будут очень благодарны. м.хаттер


person user256261    schedule 21.01.2010    source источник


Ответы (2)


Подойдет ли это?

char buf[120];
sprintf(buf, "cd\\; pkunzip %s -s[%s]", locked_file, password_var);
system(buf)

Я использовал двойную обратную косую черту, чтобы превратиться в одиночную обратную косую черту, чтобы команда cd работала.

Надеюсь, это поможет, С уважением, Том.

person t0mm13b    schedule 21.01.2010

Вы всегда можете использовать sprintf для создания строки. Как в:

command = sprintf("pkunzip lockedFile -s%s", password);
system(command);

Если вам надоело вызывать эту внешнюю программу, возможно, вы захотите обработать Zip-файл внутри с помощью такой библиотеки, как архив утилит.

person amphetamachine    schedule 21.01.2010
comment
Хорошо ... оба этих ответа дают мне повод задуматься. Я займусь расследованием. Спасибо!!!! - person user256261; 22.01.2010