C ++ bruteforce программа очень медленная - PullRequest
0 голосов
/ 16 декабря 2011

Я получил программу черного ящика "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;
}

Ответы [ 2 ]

1 голос
/ 16 декабря 2011

Вы должны будете выполнить тест / профиль, чтобы выяснить это, но вполне возможно, что secret.exe просто тратит время.

0 голосов
/ 16 декабря 2011

Windows ужасно неэффективна при создании процесса.Вы можете попробовать Wine в Linux, но я не знаю, сколько эффективности Linux будет потрачено впустую, притворяясь Windows.Если вы хотите заняться копанием и уродливыми взломами, возможно, вы сможете загрузить и запустить соответствующий код в своем процессе, но в этот момент вам, вероятно, лучше попытаться разобрать / декомпилировать его.

...