0

私は学校のプロジェクトのために C++ でブルート フォース プログラムを作成しようとしていますが、入力するパスワードを検閲したいので、パスワードの代わりに* * PS コンソール アプリケーションです。

これは私のC++コードです:

#include <iostream>
#include <string>
using namespace std;
char chars[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','W','R','S','T','U','V','W','X','Y','Z'};
string t;

void checkPassword(string password);
void recurse(int width, int position, string baseString);
int  main() {
  cout << "Enter a Password: " << endl;

  cin >> t;
  int maxChars = 13;
  for(int i=0;i<maxChars+1;i++) {
    cout << "checking passwords width [" << i << "]..." << endl;
    recurse(i,0,"");

  }
  return 0;
}
void recurse(int width, int position, string baseString) {
  for(int i=0;i<70;i++) {
    if (position < width-1) {
      recurse(width, position + 1, baseString+chars[i]);
    }
    checkPassword(baseString+chars[i]);
  }
}
void checkPassword(string password) {
  if (password==t) {
    cout << "Match Found: " << password << "" << endl;
    return;
  }
}

いろいろ試してみましたが、うまくいかないようです、よろしくお願いします。

4

1 に答える 1

0

コンソール プログラムには、これを行う機能がありません。Windows マシンで作業していて、クロスプラットフォームの移植性が必要ない場合は、非標準のconio.hライブラリの関数を使用して、文字を置き換えながらgetch()シミュレートすることで解決できる場合があります。cinしかし、私は率直に言って、そのような回りくどいアプローチには反対することをお勧めします。本当にパスワードの検閲が必要な場合は、プログラムを GUI アプリケーションにするか、ユーザーにファイルにパスワードを入力してからファイル名を指定するように依頼することをお勧めします (画面に直接表示されないようにするため)。 .

于 2013-06-30T12:26:46.080 に答える