我有一個黑盒程序「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