* 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
*/\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
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
continue;\r
\r
vector<string> vPart;\r
- if (SeperateString(vLine[i], "=", vPart))\r
+ if (SeparateString(vLine[i], "=", vPart))\r
{\r
// sCharsetName\r
string sCharsetName = TrimString(vPart[0]);\r
\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
}\r
else\r
printf("can't open charset configuration file\n");\r
+\r
return false;\r
}\r
\r
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
\r
// Parse\r
vector<string> vPart;\r
- if (!SeperateString(sPathName, "___x_", vPart))\r
+ if (!SeparateString(sPathName, "___x_", vPart))\r
{\r
printf("filename %s not identified\n", sPathName.c_str());\r
return false;\r
else\r
{\r
vector<string> vCharsetDefinitionPart;\r
- if (!SeperateString(sCharsetDefinition, "#-", vCharsetDefinitionPart))\r
+ if (!SeparateString(sCharsetDefinition, "#-", vCharsetDefinitionPart))\r
{\r
printf("filename %s not identified\n", sPathName.c_str());\r
return false; \r
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
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
#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
}\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
// 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
}\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