2 RainbowCrack - a general propose implementation of Philippe Oechslin's faster time-memory trade-off technique.
4 Copyright (C) Zhu Shuanglei <shuanglei@hotmail.com>
12 #include "ChainWalkContext.h"
13 #include "MemoryPool.h"
14 #include "ChainWalkSet.h"
15 #include "RTI2Reader.h"
16 enum RTTYPE { RT, RTI, RTI2 };
21 virtual ~CCrackEngine();
25 RTI2Header *m_pHeader;
27 float m_fTotalDiskAccessTime;
28 float m_fTotalCryptanalysisTime;
29 int m_nTotalChainWalkStep;
30 int m_nTotalFalseAlarm;
31 int m_nTotalChainWalkStepDueToFalseAlarm;
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,
42 int& nMatchingIndexEFrom,
43 int& nMatchingIndexETo);
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();