использование переменных с функцией system () для вызова dos - PullRequest
0 голосов
/ 22 января 2010

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 22 января 2010

Будет ли это делать?

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

Я использовал двойной обратный слеш для перехода в один обратный слеш для работы команды cd.

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

0 голосов
/ 22 января 2010

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

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

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

...