c++蛮力程序很慢

C++ bruteforce program very slow

本文关键字:程序 c++      更新时间:2023-10-16

我得到了一个黑盒子程序"secret.exe",它接受一个数字作为参数。它只接受一个我不知道的数字。我想用暴力攻击来获取这个号码。下面的c++程序可以做到这一点,但是速度很慢(每秒13个数字)。这个程序几乎不消耗CPU和内存。瓶颈是什么?打开的功能变慢了吗?

#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;
}

您必须通过基准测试/配置文件才能找到答案,但完全有可能secret.exe只是浪费时间。

Windows在进程创建方面非常低效。您可以在Linux上尝试Wine,但我不知道假装是Windows会浪费多少Linux的效率。如果您愿意做一些挖掘和丑陋的hack,您可能能够在您的进程中加载和运行相关代码,但在这种情况下,您可能最好尝试反汇编/反编译它。