使用带有system()函数的变量来调用dos

时间:2010-01-21 22:59:58

标签: operating-system system dos

我一直在尝试用C ++编写一个简单的暴力密码破解程序来打开我很久以前锁定的旧zip文件。

我试图从程序中调用pkunzip。我知道这样做的唯一方法是使用system()命令。如在系统中(“astring”);.问题是我需要一遍又一遍地将新密码转储到字符串中,直到我受到欢迎。这需要将一个变量插入到我发送给DOS的命令中。这就是我迷路的地方。所以代码看起来像这样......

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

此外,这整个想法可能很糟糕,所以如果有更好的方法,请说出来。

另外,我可以使用cd \命令到达正确的目录,还是只需要将相关文件转储到与C ++项目本身相同的目录中。任何帮助或一般指示将非常感激。 m.hatter

2 个答案:

答案 0 :(得分:1)

这会吗?

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

我使用双反斜杠转义为单个反斜杠,以使cd命令起作用。

希望这有帮助, 最好的祝福, 汤姆。

答案 1 :(得分:0)

您始终可以使用sprintf来创建字符串。如:

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

如果您厌倦了调用此外部程序,您可能希望在内部使用zip utils library等库来处理Zip文件。