]> git.sesse.net Git - freerainbowtables/blobdiff - Client Applications/rcracki_mt/ChainWalkContext.cpp
(C)
[freerainbowtables] / Client Applications / rcracki_mt / ChainWalkContext.cpp
index ae58f77894c6e074279bb38cf7487228df8af6b6..4fdcf6e2d08811264d1d2ce58648fa4fb016b15d 100644 (file)
@@ -5,7 +5,7 @@
  * Copyright (C) Zhu Shuanglei <shuanglei@hotmail.com>\r
  * Copyright Martin Westergaard Jørgensen <martinwj2005@gmail.com>\r
  * Copyright 2009, 2010 Daniël Niggebrugge <niggebrugge@fox-it.com>\r
- * Copyright 2009, 2010 James Nobis <frt@quelrod.net>\r
+ * Copyright 2009, 2010, 2011 James Nobis <frt@quelrod.net>\r
  * Copyright 2010 Yngve AAdlandsvik\r
  *\r
  * This file is part of rcracki_mt.\r
@@ -25,7 +25,7 @@
  */\r
 \r
 #if defined(_WIN32) && !defined(__GNUC__)\r
-       #pragma warning(disable : 4786 4267 4018)\r
+       #pragma warning(disable : 4786)\r
 #endif\r
 \r
 #include "ChainWalkContext.h"\r
@@ -83,14 +83,19 @@ bool CChainWalkContext::LoadCharset(string sName)
        bool readCharset = false;\r
        vector<string> vLine;\r
 \r
-       if ( ReadLinesFromFile("charset.txt", vLine) )\r
-               readCharset = true;\r
-       else if ( ReadLinesFromFile(GetApplicationPath() + "charset.txt", vLine) )\r
-               readCharset = true;\r
-\r
-       if (readCharset)\r
+       #ifdef BOINC\r
+               if ( boinc_ReadLinesFromFile( "charset.txt", vLine ) )\r
+                       readCharset = true;\r
+       #else\r
+               if ( ReadLinesFromFile("charset.txt", vLine) )\r
+                       readCharset = true;\r
+               else if ( ReadLinesFromFile(GetApplicationPath() + "charset.txt", vLine) )\r
+                       readCharset = true;\r
+       #endif\r
+\r
+       if ( readCharset )\r
        {\r
-               UINT4 i;\r
+               uint32 i;\r
                for (i = 0; i < vLine.size(); i++)\r
                {\r
                        // Filter comment\r
@@ -107,7 +112,7 @@ bool CChainWalkContext::LoadCharset(string sName)
                                                                \r
                                // sCharsetName charset check\r
                                bool fCharsetNameCheckPass = true;\r
-                               UINT4 j;\r
+                               uint32 j;\r
                                for (j = 0; j < sCharsetName.size(); j++)\r
                                {\r
                                        if (   !isalpha(sCharsetName[j])\r
@@ -178,6 +183,7 @@ bool CChainWalkContext::LoadCharset(string sName)
        }\r
        else\r
                printf("can't open charset configuration file\n");\r
+\r
        return false;\r
 }\r
 \r
@@ -218,7 +224,7 @@ bool CChainWalkContext::SetPlainCharset(string sCharsetName, int nPlainLenMin, i
        m_nPlainLenMaxTotal = 0;\r
        m_nPlainLenMinTotal = 0;\r
        uint64 nTemp = 1;\r
-       UINT4 j, k = 1;\r
+       uint32 j, k = 1;\r
        for(j = 0; j < m_vCharset.size(); j++)\r
        {\r
                int i;\r
@@ -404,8 +410,12 @@ void CChainWalkContext::Dump()
        printf("hash routine: %s\n", m_sHashRoutineName.c_str());\r
        printf("hash length: %d\n", m_nHashLen);\r
 \r
+       printf( "m_vCharset[0].m_nPlainCharSetLen: %d\n", m_vCharset[0].m_nPlainCharsetLen );\r
+       printf( "m_vCharset[1].m_nPlainCharSetLen: %d\n", m_vCharset[1].m_nPlainCharsetLen );\r
+\r
        printf("plain charset: ");\r
        unsigned int i;\r
+       \r
        for (i = 0; i < m_vCharset[0].m_nPlainCharsetLen; i++)\r
        {\r
                if (isprint(m_vCharset[0].m_PlainCharset[i]))\r
@@ -476,7 +486,7 @@ void CChainWalkContext::IndexToPlain()
        for (i = m_nPlainLen - 1; i >= 0; i--)\r
        {\r
                int nCharsetLen = 0;\r
-               for(UINT4 j = 0; j < m_vCharset.size(); j++)\r
+               for(uint32 j = 0; j < m_vCharset.size(); j++)\r
                {\r
                        nCharsetLen += m_vCharset[j].m_nPlainLenMax;\r
                        if(i < nCharsetLen) // We found the correct charset\r
@@ -503,7 +513,7 @@ void CChainWalkContext::IndexToPlain()
 #endif\r
 \r
                int nCharsetLen = 0;\r
-               for(UINT4 j = 0; j < m_vCharset.size(); j++)\r
+               for(uint32 j = 0; j < m_vCharset.size(); j++)\r
                {\r
                        nCharsetLen += m_vCharset[j].m_nPlainLenMax;\r
                        if(i < nCharsetLen) // We found the correct charset\r
@@ -515,11 +525,11 @@ void CChainWalkContext::IndexToPlain()
                }\r
        }\r
 \r
-       UINT4 nIndexOfX32 = (UINT4)nIndexOfX;\r
+       uint32 nIndexOfX32 = (uint32)nIndexOfX;\r
        for (; i >= 0; i--)\r
        {\r
                int nCharsetLen = 0;\r
-               for(UINT4 j = 0; j < m_vCharset.size(); j++)\r
+               for(uint32 j = 0; j < m_vCharset.size(); j++)\r
                {\r
                        nCharsetLen += m_vCharset[j].m_nPlainLenMax;\r
                        if(i < nCharsetLen) // We found the correct charset\r
@@ -528,14 +538,12 @@ void CChainWalkContext::IndexToPlain()
 //             m_Plain[i] = m_vCharset[j].m_PlainCharset[nIndexOfX32 % m_vCharset[j].m_nPlainCharsetLen];\r
 //             nIndexOfX32 /= m_vCharset[j].m_nPlainCharsetLen;\r
 \r
-\r
 //     moving nPlainCharsetLen into the asm body and avoiding the extra temp\r
 //     variable results in a performance gain\r
 //                             unsigned int nPlainCharsetLen = m_vCharset[j].m_nPlainCharsetLen;\r
                                unsigned int nTemp;\r
 \r
 #if defined(_WIN32) && !defined(__GNUC__)\r
-\r
                // VC++ still needs this\r
                unsigned int nPlainCharsetLen = m_vCharset[j].m_nPlainCharsetLen;\r
 \r
@@ -549,15 +557,11 @@ void CChainWalkContext::IndexToPlain()
                }\r
                m_Plain[i] = m_vCharset[j].m_PlainCharset[nTemp];\r
 #else\r
-               __asm__ __volatile__ (  "mov %2, %%eax;"\r
-                                                               "xor %%edx, %%edx;"\r
+               __asm__ __volatile__ ("xor %%edx, %%edx;"\r
                                                                "divl %3;"\r
-                                                               "mov %%eax, %0;"\r
-                                                               "mov %%edx, %1;"\r
-                                                               : "=m"(nIndexOfX32), "=m"(nTemp)\r
-                                                               : "m"(nIndexOfX32), "m"(m_vCharset[j].m_nPlainCharsetLen)\r
-                                                               : "%eax", "%edx"\r
-                                                        );\r
+                                                               : "=a"(nIndexOfX32), "=d"(nTemp)\r
+                                                               : "a"(nIndexOfX32), "rm"(m_vCharset[j].m_nPlainCharsetLen)\r
+                                                               : );\r
                m_Plain[i] = m_vCharset[j].m_PlainCharset[nTemp];\r
 #endif\r
                break;\r