我有一个黑盒程序“secret.exe”,它接受一个数字作为参数。它只接受一个我不知道的号码。我想做一个暴力攻击来获得这个数字。 下面的C++程序会这样做,但速度很慢(每秒13个数字)。这个程序几乎不消耗CPU和内存。 什么是瓶颈? popen功能减慢了吗?C++ bruteforce程序很慢
#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
char psBuffer[128];
FILE *chkdsk;
bool nomatch = true;
int i = 0;
char cmd[100];
while(nomatch){
sprintf (cmd, "secret.exe %d", i++);
if((chkdsk = popen(cmd, "rt")) == NULL)
cout << "error";
while(!feof(chkdsk)) {
if(fgets(psBuffer, 128, chkdsk) != NULL && strcmp(psBuffer, "wrong")){
cout << "password: " << --i << endl;
cout << "secret info : " << psBuffer << endl;
nomatch = false;
}
}
pclose(chkdsk);
}
return 0;
}
可能想尝试线程。 – 2011-12-15 22:53:28
产生一个新的过程是由许多订单比你的程序所做的任何其他更贵。 – 2011-12-15 22:54:20
我猜这是`popen`,我会说这是线程调用,但它可能是一些系统资源处理,这是阻塞,所以我甚至不知道它是否会有所作为 – 2011-12-15 22:54:36