]> git.sesse.net Git - freerainbowtables/blob - Client Applications/rcracki_mt/ChainWalkSet.h
757800764063fbde0facac3ea6f5b7ac7231236a
[freerainbowtables] / Client Applications / rcracki_mt / ChainWalkSet.h
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 #ifndef _CHAINWALKSET_H\r
27 #define _CHAINWALKSET_H\r
28 \r
29 #include "Public.h"\r
30 \r
31 struct ChainWalk\r
32 {\r
33         unsigned char Hash[MAX_HASH_LEN];\r
34         //int nHashLen;         // Implied\r
35         uint64* pIndexE;        // mapStartPosIndexE, Len = nRainbowChainLen - 1\r
36 };\r
37 \r
38 class CChainWalkSet\r
39 {\r
40 public:\r
41         CChainWalkSet();\r
42         virtual ~CChainWalkSet();\r
43 \r
44 private:\r
45         string m_sHashRoutineName;              // Discard all if not match\r
46         string m_sPlainCharsetName;             // Discard all if not match\r
47         int    m_nPlainLenMin;                  // Discard all if not match\r
48         int    m_nPlainLenMax;                  // Discard all if not match\r
49         int    m_nRainbowTableIndex;    // Discard all if not match\r
50         int    m_nRainbowChainLen;              // Discard all if not match\r
51         list<ChainWalk> m_lChainWalk;\r
52         bool   debug;\r
53         string sPrecalcPathName;\r
54         int    preCalcPart;\r
55         vector<string> vPrecalcFiles;\r
56 \r
57 private:\r
58         void DiscardAll();\r
59         bool FindInFile(uint64* pIndexE, unsigned char* pHash, int nHashLen);\r
60         string CheckOrRotatePreCalcFile();\r
61         void updateUsedPrecalcFiles();\r
62 \r
63 public:\r
64         uint64* RequestWalk(unsigned char* pHash, int nHashLen,\r
65                                                 string sHashRoutineName,\r
66                                                 string sPlainCharsetName, int nPlainLenMin, int nPlainLenMax, \r
67                                                 int nRainbowTableIndex, \r
68                                                 int nRainbowChainLen,\r
69                                                 bool& fNewlyGenerated,\r
70                                                 bool setDebug,\r
71                                                 string sPrecalc);\r
72         void DiscardWalk(uint64* pIndexE);\r
73         void StoreToFile(uint64* pIndexE, unsigned char* pHash, int nHashLen);\r
74         void removePrecalcFiles();\r
75 };\r
76 \r
77 #endif\r