Loading include/Statsgen.h +2 −11 Original line number Diff line number Diff line Loading @@ -79,8 +79,8 @@ struct thread_data { bool use_regex = false; bool withcount = false; int limitSimplemask; int limitAdvancedmask; uint limitSimplemask; uint limitAdvancedmask; SecurityRules sr; Loading Loading @@ -255,15 +255,6 @@ private: */ // void analyse_letter(const char & letter, char & last_simplemask, std::string & simplemask_string, std::string & advancedmask_string, Policy & policy, int & sizeAdvancedMask, int & sizeSimpleMask); /** * @brief Analyse a password * @param password: current password * @param c: container of all useful data of the password * @param sr: get the actual security rules and count the number of password respecting them * @param limitAdvancedmask: define the limit for the size of advanced masks * @param limitSimplemask: define the limit for the size of simple masks */ // Container analyze_password(const std::string & password, SecurityRules & sr, const int & limitAdvancedmask, const int & limitSimplemask); /** * @brief Update minima and maxima of all general data from analysed passwords Loading src/core/Statsgen.cpp +58 −65 Original line number Diff line number Diff line Loading @@ -242,7 +242,11 @@ void Statsgen::print_stats() { } void analyse_letter(const char & letter, PasswordStats& c, char & last_simplemask, int & sizeAdvancedMask, int & sizeSimpleMask) { pair<uint, uint> get_masks(const string& password, PasswordStats& c){ char last_simplemask = 'a'; uint sizeSimpleMask = 0; uint sizeAdvancedMask = 0; for(wchar_t letter: password){ sizeAdvancedMask++; if (letter >= '0' && letter <= '9') { Loading Loading @@ -283,32 +287,7 @@ void analyse_letter(const char & letter, PasswordStats& c, char & last_simplemas } } } PasswordStats analyze_password(const string & password, SecurityRules & sr, const int & limitAdvancedmask, const int & limitSimplemask) { PasswordStats c; c.pass_length = password.size(); char last_simplemask = 'a'; int sizeAdvancedMask = 0; int sizeSimpleMask = 0; for(wchar_t letter: password){ analyse_letter(letter, c, last_simplemask, sizeAdvancedMask, sizeSimpleMask); } if(c.pol.satisfies(sr, password.size())){ sr.nbSecurePassword++; } if (sizeAdvancedMask > limitAdvancedmask) { c.advancedmask_string = "othermasks"; } if (sizeSimpleMask > limitSimplemask) { c.simplemask_string = "othermasks"; } return c; return make_pair(sizeSimpleMask, sizeAdvancedMask); } void updateMinMax(minMax& m, const Policy& pol) { Loading @@ -327,9 +306,23 @@ void handle_password(const string& password, const uint64_t& nbPasswords, thread if(my_data->use_regex && !regex_match(password,my_data->current_regex)){ return; } PasswordStats c = analyze_password(password, my_data->sr,my_data->limitAdvancedmask, my_data->limitSimplemask); PasswordStats c; pair<uint, uint> masks = get_masks(password, c); if(c.pol.satisfies(my_data->sr, password.size())){ my_data->sr.nbSecurePassword++; } if (masks.first > my_data->limitSimplemask) { c.simplemask_string = "othermasks"; } if (masks.second > my_data->limitAdvancedmask) { c.advancedmask_string = "othermasks"; } my_data->total_filter += nbPasswords; my_data->length[ c.pass_length ] += nbPasswords; my_data->length[ password.size() ] += nbPasswords; my_data->charactersets[ c.pol ] += nbPasswords; my_data->simplemasks[ c.simplemask_string ] += nbPasswords; my_data->advancedmasks[ c.advancedmask_string ] += nbPasswords; Loading Loading @@ -399,7 +392,7 @@ uint64_t nbline_file(const string & filename) { } // we have not read the whole file if (readfile.fail() && !readfile.eof()){ cerr << "[ERROR]" << " There was an error reading the file at line " << nb << endl; cerr << "[ERROR] There was an error reading the file at line " << nb << endl; return 0; } Loading Loading
include/Statsgen.h +2 −11 Original line number Diff line number Diff line Loading @@ -79,8 +79,8 @@ struct thread_data { bool use_regex = false; bool withcount = false; int limitSimplemask; int limitAdvancedmask; uint limitSimplemask; uint limitAdvancedmask; SecurityRules sr; Loading Loading @@ -255,15 +255,6 @@ private: */ // void analyse_letter(const char & letter, char & last_simplemask, std::string & simplemask_string, std::string & advancedmask_string, Policy & policy, int & sizeAdvancedMask, int & sizeSimpleMask); /** * @brief Analyse a password * @param password: current password * @param c: container of all useful data of the password * @param sr: get the actual security rules and count the number of password respecting them * @param limitAdvancedmask: define the limit for the size of advanced masks * @param limitSimplemask: define the limit for the size of simple masks */ // Container analyze_password(const std::string & password, SecurityRules & sr, const int & limitAdvancedmask, const int & limitSimplemask); /** * @brief Update minima and maxima of all general data from analysed passwords Loading
src/core/Statsgen.cpp +58 −65 Original line number Diff line number Diff line Loading @@ -242,7 +242,11 @@ void Statsgen::print_stats() { } void analyse_letter(const char & letter, PasswordStats& c, char & last_simplemask, int & sizeAdvancedMask, int & sizeSimpleMask) { pair<uint, uint> get_masks(const string& password, PasswordStats& c){ char last_simplemask = 'a'; uint sizeSimpleMask = 0; uint sizeAdvancedMask = 0; for(wchar_t letter: password){ sizeAdvancedMask++; if (letter >= '0' && letter <= '9') { Loading Loading @@ -283,32 +287,7 @@ void analyse_letter(const char & letter, PasswordStats& c, char & last_simplemas } } } PasswordStats analyze_password(const string & password, SecurityRules & sr, const int & limitAdvancedmask, const int & limitSimplemask) { PasswordStats c; c.pass_length = password.size(); char last_simplemask = 'a'; int sizeAdvancedMask = 0; int sizeSimpleMask = 0; for(wchar_t letter: password){ analyse_letter(letter, c, last_simplemask, sizeAdvancedMask, sizeSimpleMask); } if(c.pol.satisfies(sr, password.size())){ sr.nbSecurePassword++; } if (sizeAdvancedMask > limitAdvancedmask) { c.advancedmask_string = "othermasks"; } if (sizeSimpleMask > limitSimplemask) { c.simplemask_string = "othermasks"; } return c; return make_pair(sizeSimpleMask, sizeAdvancedMask); } void updateMinMax(minMax& m, const Policy& pol) { Loading @@ -327,9 +306,23 @@ void handle_password(const string& password, const uint64_t& nbPasswords, thread if(my_data->use_regex && !regex_match(password,my_data->current_regex)){ return; } PasswordStats c = analyze_password(password, my_data->sr,my_data->limitAdvancedmask, my_data->limitSimplemask); PasswordStats c; pair<uint, uint> masks = get_masks(password, c); if(c.pol.satisfies(my_data->sr, password.size())){ my_data->sr.nbSecurePassword++; } if (masks.first > my_data->limitSimplemask) { c.simplemask_string = "othermasks"; } if (masks.second > my_data->limitAdvancedmask) { c.advancedmask_string = "othermasks"; } my_data->total_filter += nbPasswords; my_data->length[ c.pass_length ] += nbPasswords; my_data->length[ password.size() ] += nbPasswords; my_data->charactersets[ c.pol ] += nbPasswords; my_data->simplemasks[ c.simplemask_string ] += nbPasswords; my_data->advancedmasks[ c.advancedmask_string ] += nbPasswords; Loading Loading @@ -399,7 +392,7 @@ uint64_t nbline_file(const string & filename) { } // we have not read the whole file if (readfile.fail() && !readfile.eof()){ cerr << "[ERROR]" << " There was an error reading the file at line " << nb << endl; cerr << "[ERROR] There was an error reading the file at line " << nb << endl; return 0; } Loading