2013-05-11 2 views
1

Я создаю простую атаку «Bruteforce» для проекта (не относящегося к школе). Может кто-нибудь, пожалуйста, скажите мне, какая часть кода неверна, чтобы получить эти ошибки.Bruteforce Attack Project

Кодекс:

#include <string> 
using namespace std; 
//Password array 
std::string passwordArray; 
//Lowercare character array 
std::string lower = { "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" }; 
//Uppercase character array 
std::string upper = { "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" }; 
//Digits array 
std::string digits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" }; 

private void setupCharArray() 
{ 
    if (ckhLower.Checked) 
{ 
    characterArray.AddRange(lower); 
} 

if (chkUpper.Checked) 
{ 
    characterArray.AddRange(upper); 
} 

if (chkDigits.Checked) 
{ 
    characterArray.AddRange(digits); 
} 
} 

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
{ 
    brute(); 
} 

поэтому я пытаюсь скомпилировать этот код, используя MinGW

г ++ bruteforce.cpp -o bruteforce.exe

и я получаю эти сообщения об ошибках

c:\Users\Lotty Playle\Documents>g++ bruteforce.cpp -o bruteforce.exe 
bruteforce.cpp:7:66: error: in C++98 'lower' must be initialized by constructor, 
not by '{...}' 
bruteforce.cpp:7:66: error: could not convert '{"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"}' from '<brace-enclosed initializer list>' to 'std::string {aka 
std::basic_string<char>}' 
bruteforce.cpp:10:66: error: in C++98 'upper' must be initialized by constructor 
, not by '{...}' 
bruteforce.cpp:10:66: error: could not convert '{"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"}' from '<brace-enclosed initializer list>' to 'std::string {ak 
a std::basic_string<char>}' 
bruteforce.cpp:12:73: error: in C++98 'digits' must be initialized by constructo 
r, not by '{...}' 
bruteforce.cpp:12:73: error: could not convert '{"0", "1", "2", "3", "4", "5", " 
6", "7", "8", "9"}' from '<brace-enclosed initializer list>' to 'std::string {ak 
a std::basic_string<char>}' 
bruteforce.cpp:14:1: error: expected unqualified-id before 'private' 

Если кто-то знает, что я делаю неправильно, они могли бы показать мне.

L х

ответ

4

Массив строк должен выглядеть следующим образом: (с [])

std::string lower[] = { "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" }; 

std::string персонажей будет выглядеть следующим образом:

std::string lower = "abcdefghijklmnopqrstuvwxyz"; 

Заметим, что использование пучок std::string s для представления символов крайне неэффективен. Вы должны использовать массив символов или просто работать с арифметикой ascii.

+0

Спасибо! Я не могу поверить, что раньше этого не понимал. :) –

+0

Но учтите, что для определения языка не требуется использование ASCII, а в некоторых системах нет. –

+0

@PeteBecker Знаете ли вы, что такое bruteforce.cpp: 14: 1: ошибка: ожидаемый неквалифицированный идентификатор до «частного» означает? –