]> git.sesse.net Git - freerainbowtables/blob - Client Applications/rcracki/CrackEngine.h
210ad8782b94024335e464f684b2203210c24195
[freerainbowtables] / Client Applications / rcracki / CrackEngine.h
1 /*
2    RainbowCrack - a general propose implementation of Philippe Oechslin's faster time-memory trade-off technique.
3
4    Copyright (C) Zhu Shuanglei <shuanglei@hotmail.com>
5 */
6
7 #ifndef _CRACKENGINE_H
8 #define _CRACKENGINE_H
9
10 #include "Public.h"
11 #include "HashSet.h"
12 #include "ChainWalkContext.h"
13 #include "MemoryPool.h"
14 #include "ChainWalkSet.h"
15 #include "RTI2Reader.h"
16 enum RTTYPE { RT, RTI, RTI2 };
17 class CCrackEngine
18 {
19 public:
20         CCrackEngine();
21         virtual ~CCrackEngine();
22
23 private:
24         CChainWalkSet m_cws;
25         RTI2Header *m_pHeader;
26         // Statistics
27         float m_fTotalDiskAccessTime;
28         float m_fTotalCryptanalysisTime;
29         int m_nTotalChainWalkStep;
30         int m_nTotalFalseAlarm;
31         int m_nTotalChainWalkStepDueToFalseAlarm;
32         FILE *m_fChains;
33         RTTYPE m_TableType;
34 private:
35         void ResetStatistics();
36         int BinarySearch(RainbowChainCP* pChain, int nRainbowChainCount, uint64 nIndex);
37         void SearchTableChunk(RainbowChainCP* pChain, int nRainbowChainLen, int nRainbowChainCount, CHashSet& hs);
38         bool CheckAlarm(RainbowChainCP* pChain, int nGuessedPos, unsigned char* pHash, CHashSet& hs);
39 void GetChainIndexRangeWithSameEndpoint(RainbowChainCP* pChain,
40                                                                                                           int nRainbowChainCount,
41                                                                                                           int nMatchingIndexE,
42                                                                                                           int& nMatchingIndexEFrom,
43                                                                                                           int& nMatchingIndexETo);
44 public:
45         void SearchRainbowTable(string sPathName, CHashSet& hs);
46         void Run(vector<string> vPathName, CHashSet& hs);
47         float GetStatTotalDiskAccessTime();
48         float GetStatTotalCryptanalysisTime();
49         int   GetStatTotalChainWalkStep();
50         int   GetStatTotalFalseAlarm();
51         int   GetStatTotalChainWalkStepDueToFalseAlarm();
52 };
53
54 #endif