引数として数値を受け取るblackboxプログラム "secret.exe"があります。それは私が知らない1つの番号しか受け入れません。私はその数を得るためにブルートフォース攻撃をしたい。 以下のC++プログラムはそれをしますが、非常に遅い(毎秒13個の数字)。 CPUとメモリはこのプログラムでほとんど消費されません。 ボトルネックとは何ですか? popen-functionは遅くなっていますか?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;
}
スレッドを試してみたいですね。 –
新しいプロセスを作成することは、プログラムが行うことよりも多くのオーダーを費やしています。 –
私はそれが 'popen'だと思っていますが、これはスレッディングが必要だと言いましたが、システム全体のリソース処理がブロックされていて、違いがあるかどうかわからない場合もあります。 –