]> git.sesse.net Git - freerainbowtables/blob - Client Applications/rcracki_mt/HashSet.cpp
UINT4 -> uint32
[freerainbowtables] / Client Applications / rcracki_mt / HashSet.cpp
1 /*\r
2  * rcracki_mt is a multithreaded implementation and fork of the original \r
3  * RainbowCrack\r
4  *\r
5  * Copyright (C) Zhu Shuanglei <shuanglei@hotmail.com>\r
6  * Copyright Martin Westergaard Jørgensen <martinwj2005@gmail.com>\r
7  * Copyright 2009, 2010 Daniël Niggebrugge <niggebrugge@fox-it.com>\r
8  * Copyright 2009, 2010 James Nobis <frt@quelrod.net>\r
9  *\r
10  * This file is part of rcracki_mt.\r
11  *\r
12  * rcracki_mt is free software: you can redistribute it and/or modify\r
13  * it under the terms of the GNU General Public License as published by\r
14  * the Free Software Foundation, either version 2 of the License, or\r
15  * (at your option) any later version.\r
16  *\r
17  * rcracki_mt is distributed in the hope that it will be useful,\r
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
20  * GNU General Public License for more details.\r
21  *\r
22  * You should have received a copy of the GNU General Public License\r
23  * along with rcracki_mt.  If not, see <http://www.gnu.org/licenses/>.\r
24  */\r
25 \r
26 #if defined(_WIN32) && !defined(__GNUC__)\r
27         #pragma warning(disable : 4786 4267 4018)\r
28 #endif\r
29 \r
30 #include "HashSet.h"\r
31 \r
32 CHashSet::CHashSet()\r
33 {\r
34 }\r
35 \r
36 CHashSet::~CHashSet()\r
37 {\r
38 }\r
39 \r
40 void CHashSet::AddHash(string sHash)\r
41 {\r
42         if (sHash == "aad3b435b51404ee")\r
43                 return;\r
44 \r
45         uint32 i;\r
46         for (i = 0; i < m_vHash.size(); i++)\r
47         {\r
48                 if (m_vHash[i] == sHash)\r
49                         return;\r
50         }\r
51 \r
52         //printf("debug: adding hash %s\n", sHash.c_str());\r
53 \r
54         m_vHash.push_back(sHash);\r
55         m_vFound.push_back(false);\r
56         m_vPlain.push_back("");\r
57         m_vBinary.push_back("");\r
58 }\r
59 \r
60 string CHashSet::GetHashInfo(int i)\r
61 {\r
62         string found;\r
63         if (m_vFound[i])\r
64                 found = "1";\r
65         else\r
66                 found = "0";\r
67 \r
68         string buffer = m_vHash[i] + ":" + found + ":" + m_vPlain[i] + ":" + m_vBinary[i];\r
69 \r
70         return buffer;\r
71 }\r
72 \r
73 bool CHashSet::AnyhashLeft()\r
74 {\r
75         uint32 i;\r
76         for (i = 0; i < m_vHash.size(); i++)\r
77         {\r
78                 if (!m_vFound[i])\r
79                         return true;\r
80         }\r
81 \r
82         return false;\r
83 }\r
84 \r
85 bool CHashSet::AnyHashLeftWithLen(int nLen)\r
86 {\r
87         uint32 i;\r
88         for (i = 0; i < m_vHash.size(); i++)\r
89         {\r
90                 if (!m_vFound[i])\r
91                         if (m_vHash[i].size() == (unsigned long)nLen * 2)\r
92                                 return true;\r
93         }\r
94 \r
95         return false;\r
96 }\r
97 \r
98 void CHashSet::GetLeftHashWithLen(vector<string>& vHash, int nLen)\r
99 {\r
100         vHash.clear();\r
101 \r
102         uint32 i;\r
103         for (i = 0; i < m_vHash.size(); i++)\r
104         {\r
105                 if (!m_vFound[i])\r
106                         if (m_vHash[i].size() == (unsigned long)nLen * 2)\r
107                                 vHash.push_back(m_vHash[i]);\r
108         }\r
109 }\r
110 \r
111 void CHashSet::AddHashInfo(string sHash, bool found, string sPlain, string sBinary)\r
112 {\r
113         uint32 i;\r
114         for (i = 0; i < m_vHash.size(); i++)\r
115         {\r
116                 if (m_vHash[i] == sHash)\r
117                         return;\r
118         }\r
119 \r
120         m_vHash.push_back(sHash);\r
121         m_vFound.push_back(found);\r
122         m_vPlain.push_back(sPlain);\r
123         m_vBinary.push_back(sBinary);\r
124 }\r
125 \r
126 void CHashSet::SetPlain(string sHash, string sPlain, string sBinary)\r
127 {\r
128         uint32 i;\r
129         for (i = 0; i < m_vHash.size(); i++)\r
130         {\r
131                 if (m_vHash[i] == sHash)\r
132                 {\r
133                         m_vFound[i]    = true;\r
134                         m_vPlain[i]    = sPlain;\r
135                         m_vBinary[i]   = sBinary;\r
136                         return;\r
137                 }\r
138         }\r
139 }\r
140 \r
141 bool CHashSet::GetPlain(string sHash, string& sPlain, string& sBinary)\r
142 {\r
143         if (sHash == "aad3b435b51404ee")\r
144         {\r
145                 sPlain  = "";\r
146                 sBinary = "";\r
147                 return true;\r
148         }\r
149 \r
150         uint32 i;\r
151         for (i = 0; i < m_vHash.size(); i++)\r
152         {\r
153                 if (m_vHash[i] == sHash)\r
154                 {\r
155                         if (m_vFound[i])\r
156                         {\r
157                                 sPlain  = m_vPlain[i];\r
158                                 sBinary = m_vBinary[i];\r
159                                 return true;\r
160                         }\r
161                 }\r
162         }\r
163 \r
164         return false;\r
165 }\r
166 \r
167 int CHashSet::GetStatHashFound()\r
168 {\r
169         int nHashFound = 0;\r
170         uint32 i;\r
171         for (i = 0; i < m_vHash.size(); i++)\r
172         {\r
173                 if (m_vFound[i])\r
174                         nHashFound++;\r
175         }\r
176 \r
177         return nHashFound;\r
178 }\r
179 \r
180 int CHashSet::GetStatHashTotal()\r
181 {\r
182         return (int) m_vHash.size();\r
183 }\r