-/*
- * rcracki_mt is a multithreaded implementation and fork of the original
- * RainbowCrack
- *
- * Copyright 2009, 2010 Daniël Niggebrugge <niggebrugge@fox-it.com>
- * Copyright 2009, 2010 James Nobis <frt@quelrod.net>
- *
- * This file is part of rcracki_mt.
- *
- * rcracki_mt is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * rcracki_mt is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with rcracki_mt. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <stdio.h>
-#include <string>
-#include <map>
-#ifdef _WIN32
- #include <conio.h>
-#endif
-//#include "openssl/md4.h"
-#include <time.h>
-#include "signal.h"
-#include "Public.h"
-#include "md4.h"
-
-using namespace std;
-
-class LM2NTLMcorrector
-{
-public:
- LM2NTLMcorrector();
-
-private:
- map<unsigned char, map<int, unsigned char> > m_mapChar;
- uint64 progressCurrentCombination;
- uint64 totalCurrentCombination;
- uint64 counterOverall;
- unsigned char NTLMHash[16];
- clock_t startClock;
- int countCombinations;
- int countTotalCombinations;
- int counter;
- clock_t previousClock;
- unsigned char currentCharmap[16][128];
- bool aborting;
- string sBinary;
-
-private:
- bool checkNTLMPassword(unsigned char* pLMPassword, int nLMPasswordLen, string& sNTLMPassword);
- bool startCorrecting(string sLMPassword, string& sNTLMPassword, unsigned char* pLMPassword);
- void printString(unsigned char* muteThis, int length);
- void setupCombinationAtPositions(int length, unsigned char* pMuteMe, unsigned char* pTempMute, int* jAtPos, bool* fullAtPos, int* sizeAtPos);
- bool checkPermutations(int length, unsigned char* pTempMute, int* jAtPos, int* sizeAtPos, unsigned char* pLMPassword, string& sNTLMPassword);
-
- int calculateTotalCombinations(int length, int setSize);
- int factorial (int num);
-
- bool parseHexPassword(string hexPassword, string& sPlain);
- bool NormalizeHexString(string& sHash);
- void ParseHash(string sHash, unsigned char* pHash, int& nHashLen);
- string ByteToStr(const unsigned char* pData, int nLen);
- void addToMapW(unsigned char key, unsigned char value1, unsigned char value2);
- void fillMapW();
- void checkAbort();
- void writeEndStats();
-public:
- bool LMPasswordCorrectUnicode(string hexPassword, unsigned char* NTLMHash, string& sNTLMPassword);
- string getBinary();
-};
-
+/*\r
+ * rcracki_mt is a multithreaded implementation and fork of the original \r
+ * RainbowCrack\r
+ *\r
+ * Copyright 2009, 2010 Daniël Niggebrugge <niggebrugge@fox-it.com>\r
+ * Copyright 2009, 2010 James Nobis <frt@quelrod.net>\r
+ *\r
+ * This file is part of rcracki_mt.\r
+ *\r
+ * rcracki_mt is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation, either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * rcracki_mt is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with rcracki_mt. If not, see <http://www.gnu.org/licenses/>.\r
+ */\r
+\r
+#include <stdio.h>\r
+#include <string>\r
+#include <map>\r
+#ifdef _WIN32\r
+ #include <conio.h>\r
+#endif\r
+//#include "openssl/md4.h"\r
+#include <time.h>\r
+#include "signal.h"\r
+#include "Public.h"\r
+#include "md4.h"\r
+\r
+using namespace std;\r
+\r
+class LM2NTLMcorrector\r
+{\r
+public:\r
+ LM2NTLMcorrector();\r
+\r
+private:\r
+ map<unsigned char, map<int, unsigned char> > m_mapChar;\r
+ uint64 progressCurrentCombination;\r
+ uint64 totalCurrentCombination;\r
+ uint64 counterOverall;\r
+ unsigned char NTLMHash[16];\r
+ clock_t startClock;\r
+ int countCombinations;\r
+ int countTotalCombinations;\r
+ int counter;\r
+ clock_t previousClock;\r
+ unsigned char currentCharmap[16][128];\r
+ bool aborting;\r
+ string sBinary;\r
+\r
+private:\r
+ bool checkNTLMPassword(unsigned char* pLMPassword, int nLMPasswordLen, string& sNTLMPassword);\r
+ bool startCorrecting(string sLMPassword, string& sNTLMPassword, unsigned char* pLMPassword);\r
+ void printString(unsigned char* muteThis, int length);\r
+ void setupCombinationAtPositions(int length, unsigned char* pMuteMe, unsigned char* pTempMute, int* jAtPos, bool* fullAtPos, int* sizeAtPos);\r
+ bool checkPermutations(int length, unsigned char* pTempMute, int* jAtPos, int* sizeAtPos, unsigned char* pLMPassword, string& sNTLMPassword);\r
+\r
+ int calculateTotalCombinations(int length, int setSize);\r
+ int factorial (int num);\r
+\r
+ bool parseHexPassword(string hexPassword, string& sPlain);\r
+ bool NormalizeHexString(string& sHash);\r
+ void ParseHash(string sHash, unsigned char* pHash, int& nHashLen);\r
+ string ByteToStr(const unsigned char* pData, int nLen);\r
+ void addToMapW(unsigned char key, unsigned char value1, unsigned char value2);\r
+ void fillMapW();\r
+ void checkAbort();\r
+ void writeEndStats();\r
+public:\r
+ bool LMPasswordCorrectUnicode(string hexPassword, unsigned char* NTLMHash, string& sNTLMPassword);\r
+ string getBinary();\r
+};\r
+\r