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 "rcrackiThread.h"
26 virtual ~CCrackEngine();
34 string sSessionPathName;
35 string sProgressPathName;
36 string sPrecalcPathName;
37 //string sPrecalcIndexPathName;
39 bool keepPrecalcFiles;
42 float m_fTotalDiskAccessTime;
43 float m_fTotalCryptanalysisTime;
44 int m_nTotalChainWalkStep;
45 int m_nTotalFalseAlarm;
46 int m_nTotalChainWalkStepDueToFalseAlarm;
50 void ResetStatistics();
51 RainbowChain *BinarySearch(RainbowChain *pChain, int nChainCountRead, uint64 nIndex, IndexChain *pIndex, int nIndexSize, int nIndexStart);
52 int BinarySearchOld(RainbowChainO* pChain, int nRainbowChainCount, uint64 nIndex);
53 void GetChainIndexRangeWithSameEndpoint(RainbowChainO* pChain,
54 int nRainbowChainCount,
58 void SearchTableChunk(RainbowChain* pChain, int nRainbowChainLen, int nRainbowChainCount, CHashSet& hs, IndexChain *pIndex, int nIndexSize, int nChainStart);
59 void SearchTableChunkOld(RainbowChainO* pChain, int nRainbowChainLen, int nRainbowChainCount, CHashSet& hs);
60 //bool CheckAlarm(RainbowChain* pChain, int nGuessedPos, unsigned char* pHash, CHashSet& hs);
61 //bool CheckAlarmOld(RainbowChainO* pChain, int nGuessedPos, unsigned char* pHash, CHashSet& hs);
64 void SearchRainbowTable(string sPathName, CHashSet& hs);
65 void Run(vector<string> vPathName, CHashSet& hs, int i_maxThreads, bool resume, bool bDebug);
66 float GetStatTotalDiskAccessTime();
67 float GetStatTotalCryptanalysisTime();
68 int GetStatTotalChainWalkStep();
69 int GetStatTotalFalseAlarm();
70 int GetStatTotalChainWalkStepDueToFalseAlarm();
71 void setOutputFile(string sPathName);
72 void setSession(string sSessionPathName, string sProgressPathName, string sPrecalcPathName, bool keepPrecalc);