Я получил программу черного ящика "secret.exe", которая принимает число в качестве аргумента. Он принимает только один номер, который я не знаю. Я хочу провести атаку грубой силой, чтобы получить это число.
Программа C ++ ниже делает это, но довольно медленно (13 номеров в секунду). Процессор и память почти не потребляются этой программой.
Что является узким местом? Функция popen замедляется?
#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;
}