From: Martin Westergaard Date: Mon, 1 Nov 2010 18:38:05 +0000 (+0100) Subject: merged paths X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=3d42602c1f746b5768f0e6c9d22884a9806eadc0;hp=2fc61ff60954ebd5d560acfe3dc9653064ce40b5;p=freerainbowtables merged paths --- diff --git a/BOINC software/BOINC client apps/chain_checker/chain_checker.cpp b/BOINC software/BOINC client apps/chain_checker/chain_checker.cpp deleted file mode 100644 index 041ff6e..0000000 --- a/BOINC software/BOINC client apps/chain_checker/chain_checker.cpp +++ /dev/null @@ -1,188 +0,0 @@ -// This file is part of BOINC. -// http://boinc.berkeley.edu -// Copyright (C) 2008 University of California -// -// BOINC is free software; you can redistribute it and/or modify it -// under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, -// either version 3 of the License, or (at your option) any later version. -// -// BOINC 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 Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with BOINC. If not, see . - -// Modified by Martin Westergaard for the chain check usage -#ifdef _WIN32 -#include "boinc_win.h" -#else -#include "config.h" -#include -#include -#include -#include -#include -#include -#include -#endif - -#include -#include - -#include "str_util.h" -#include "util.h" -#include "filesys.h" -#include "boinc_api.h" -#include "Public.h" -// Rainbowcrack code -#include "ChainWalkContext.h" -#include "chain_checker.h" - -typedef unsigned int uint32; - - -using std::string; - -int main(int argc, char **argv) { - int retval; - char output_path[512], chkpt_path[512]; - string sHashRoutineName, sCharsetName, sHash; - uint32 nPlainLenMin, nPlainLenMax, nRainbowTableIndex; - FILE* state, *infile, *outfile; - retval = boinc_init(); - if (retval) { - fprintf(stderr, "boinc_init returned %d\n", retval); - exit(retval); - } - - if(argc < 7) - { - std::cerr << "Not enough parameters"; - return -1; - } - - // Initialize the args - sHashRoutineName = argv[1]; - sCharsetName = argv[2]; - nPlainLenMin = atoi(argv[3]); - nPlainLenMax = atoi(argv[4]); - nRainbowTableIndex = atoi(argv[5]); - sHash = argv[6]; - - - // Setup the ChainWalkContext - if (!CChainWalkContext::SetHashRoutine(sHashRoutineName)) - { - std::cerr << "hash routine " << sHashRoutineName << " not supported" << std::endl; - return 1; - } - - if (!CChainWalkContext::SetPlainCharset(sCharsetName, nPlainLenMin, nPlainLenMax)) - { - std::cerr << "charset " << sCharsetName << " not supported" << std::endl; - return 2; - } - - if (!CChainWalkContext::SetRainbowTableIndex(nRainbowTableIndex)) - { - std::cerr << "invalid rainbow table index " << nRainbowTableIndex << std::endl; - return 3; - } - - - // Open the file containing the chains we have to check. - boinc_resolve_filename("chains", output_path, sizeof(output_path)); - infile = boinc_fopen(output_path, "rb"); - if (infile == NULL) - { - std::cerr << "failed to open " << output_path << std::endl; - return 4; - } - - // Open the resulting file. This will *maybe* contain the password (if found) - boinc_resolve_filename("result", output_path, sizeof(output_path)); - outfile = boinc_fopen(output_path, "wb"); - if (outfile == NULL) - { - std::cerr << "failed to create " << output_path << std::endl; - return 5; - } - - // Read the chains from the input file - int len = GetFileLen(infile); - int numchains = len / 12; // Each chain is 12 bytes. 8 bytes startpoint and 4 bytes for the guessed position - fseek(infile, 0, SEEK_SET); - ChainCheckChain *pChain = new ChainCheckChain[numchains]; - int totalread = 0, read; - for(int i = 0; i < numchains; i++) - { - int read = fread(&pChain[i].nIndexS, sizeof(pChain[i].nIndexS), 1, infile); - if(read != 1) - { - std::cerr << "Error reading chaincheck file" << std::endl; - return 6; - } - read = fread(&pChain[i].nGuessedPos, sizeof(pChain[i].nGuessedPos), 1, infile); - if(read != 1) - { - std::cerr << "Error reading chaincheck file" << std::endl; - return 7; - } - - } - fclose(infile); - - - // Start checking the chains for false alarms - CChainWalkContext cwc; - int found = 0; - for(int i = 0; i < numchains; i++) - { - cwc.SetIndex(pChain[i].nIndexS); - int nPos; - for (nPos = 0; nPos < pChain[i].nGuessedPos; nPos++) - { - cwc.IndexToPlain(); - cwc.PlainToHash(); - cwc.HashToIndex(nPos); - } - cwc.IndexToPlain(); - cwc.PlainToHash(); - std::string sHashme = cwc.GetHash(); - // Check if this is a matching chain - if(sHashme.compare(sHash) == 0) - { - fwrite(cwc.GetPlain().c_str(), 1, cwc.GetPlain().length(), outfile); - std::cout << "Password is " << cwc.GetPlain() << std::endl; - found = 1; - break; // Password is found. Lets break out. - } - // This chain didn't contain the password, so we update the progress - boinc_fraction_done((double)i / (double)numchains); - - } - if(found == 0) - fwrite("0x00", 4, 1, outfile); - // Last step: Clean up - fclose(outfile); - boinc_fraction_done(1); - boinc_finish(0); -} - -#ifdef _WIN32 -int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR Args, int WinMode) { - LPSTR command_line; - char* argv[100]; - int argc; - - command_line = GetCommandLine(); - argc = parse_command_line( command_line, argv ); - return main(argc, argv); -} -#endif - -const char *BOINC_RCSID_33ac47a071 = "$Id: chain_checker.cpp 2008-11-28 Martin Westergaard $"; - diff --git a/BOINC software/BOINC client apps/chain_checker/chain_checker.h b/BOINC software/BOINC client apps/chain_checker/chain_checker.h deleted file mode 100644 index d385ee6..0000000 --- a/BOINC software/BOINC client apps/chain_checker/chain_checker.h +++ /dev/null @@ -1,12 +0,0 @@ -#include "boinc_api.h" - -struct UC_SHMEM { - double update_time; - double fraction_done; - double cpu_time; - BOINC_STATUS status; - int countdown; - // graphics app sets this to 5 repeatedly, - // main program decrements it once/sec. - // If it's zero, don't bother updating shmem -}; diff --git a/BOINC software/BOINC client apps/chain_checker/chain_checker.sln b/BOINC software/BOINC client apps/chain_checker/chain_checker.sln deleted file mode 100644 index efe9687..0000000 --- a/BOINC software/BOINC client apps/chain_checker/chain_checker.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "chain_checker", "chain_checker.vcproj", "{74C09EAC-2EA2-4548-9B61-0FEE56147DFE}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {74C09EAC-2EA2-4548-9B61-0FEE56147DFE}.Debug|Win32.ActiveCfg = Debug|Win32 - {74C09EAC-2EA2-4548-9B61-0FEE56147DFE}.Debug|Win32.Build.0 = Debug|Win32 - {74C09EAC-2EA2-4548-9B61-0FEE56147DFE}.Release|Win32.ActiveCfg = Release|Win32 - {74C09EAC-2EA2-4548-9B61-0FEE56147DFE}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/BOINC software/BOINC client apps/chain_checker/chain_checker.suo b/BOINC software/BOINC client apps/chain_checker/chain_checker.suo deleted file mode 100644 index d24e681..0000000 Binary files a/BOINC software/BOINC client apps/chain_checker/chain_checker.suo and /dev/null differ diff --git a/BOINC software/BOINC client apps/chain_checker/chain_checker.vcproj b/BOINC software/BOINC client apps/chain_checker/chain_checker.vcproj deleted file mode 100644 index 423716c..0000000 --- a/BOINC software/BOINC client apps/chain_checker/chain_checker.vcproj +++ /dev/null @@ -1,294 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/BOINC software/BOINC client apps/chain_checker/charset.txt b/BOINC software/BOINC client apps/chain_checker/charset.txt deleted file mode 100644 index d1e0179..0000000 --- a/BOINC software/BOINC client apps/chain_checker/charset.txt +++ /dev/null @@ -1,61 +0,0 @@ -# charset configuration file for DistrRTgen v3.2 by Martin Westergaard (martinwj2005@gmail.com) - -byte = [] -alpha = [ABCDEFGHIJKLMNOPQRSTUVWXYZ] -alpha-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ ] -alpha-numeric = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789] -alpha-numeric-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ] -alpha-numeric-symbol14 = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=] -alpha-numeric-symbol14-space= [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+= ] -all = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/] -all-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ] -alpha-numeric-symbol32-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ] -lm-frt-cp437 = [ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`{|}~€Ž’™š›œžŸ¥àáâãäæçèéêëî] -lm-frt-cp850 = [ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`{|}~€Ž’™šœŸ¥µ¶·½¾ÇÏÑÒÓÔÕÖ×ØÞàáâãåæèéêëíï] -lm-frt-cp437-850 = [ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`{|}~€Ž’™š›œžŸ¥µ¶·½¾ÇÏÑÒÓÔÕÖ×ØÞàáâãäåæçèéêëíîï] - -numeric = [0123456789] -numeric-space = [0123456789 ] -loweralpha = [abcdefghijklmnopqrstuvwxyz] -loweralpha-space = [abcdefghijklmnopqrstuvwxyz ] -loweralpha-numeric = [abcdefghijklmnopqrstuvwxyz0123456789] -loweralpha-numeric-space = [abcdefghijklmnopqrstuvwxyz0123456789 ] -loweralpha-numeric-symbol14 = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+=] -loweralpha-numeric-all = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/] -loweralpha-numeric-symbol32-space= [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ] - -mixalpha = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ] -mixalpha-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ] -mixalpha-numeric = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789] -mixalpha-numeric-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ] -mixalpha-numeric-symbol14 = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=] -mixalpha-numeric-all = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/] -mixalpha-numeric-symbol32-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ] -mixalpha-numeric-all-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ] - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/BOINC software/BOINC client apps/distrrtgen_flash/Makefile b/BOINC software/BOINC client apps/distrrtgen_flash/Makefile deleted file mode 100644 index 0963011..0000000 --- a/BOINC software/BOINC client apps/distrrtgen_flash/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -# This should work on Linux. Modify as needed for other platforms. - -BOINC_DIR = /home/frt/server_stable -BOINC_API_DIR = $(BOINC_DIR)/api -BOINC_LIB_DIR = $(BOINC_DIR)/lib - -CXXFLAGS = -g \ - -DAPP_GRAPHICS \ - -I$(BOINC_DIR) \ - -I$(BOINC_LIB_DIR) \ - -I$(BOINC_API_DIR) \ - -L$(BOINC_API_DIR) \ - -L$(BOINC_LIB_DIR) \ - -L /usr/X11R6/lib \ - -L. - - -PROGS = distrrtgen \ - -all: $(PROGS) - -libstdc++.a: - ln -s `g++ -print-file-name=libstdc++.a` - -clean: - /bin/rm -f $(PROGS) *.o - -distclean: - /bin/rm -f $(PROGS) *.o libstdc++.a - -distrrtgen: distrrtgen.o libstdc++.a $(BOINC_API_DIR)/libboinc_api.a $(BOINC_LIB_DIR)/libboinc.a - $(CXX) Public.cpp ChainWalkContext.cpp HashAlgorithm.cpp HashRoutine.cpp md5.cpp $(CXXFLAGS) -o distrrtgen distrrtgen.o libstdc++.a -pthread -lboinc_api -lboinc -lssl -O3 diff --git a/BOINC software/BOINC client apps/distrrtgen_flash/charset.txt b/BOINC software/BOINC client apps/distrrtgen_flash/charset.txt deleted file mode 100644 index 6e749fa..0000000 --- a/BOINC software/BOINC client apps/distrrtgen_flash/charset.txt +++ /dev/null @@ -1,34 +0,0 @@ -# charset configuration file for DistrRTgen v3.2 by Martin Westergaard (martinwj2005@gmail.com) - -byte = [] -alpha = [ABCDEFGHIJKLMNOPQRSTUVWXYZ] -alpha-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ ] -alpha-numeric = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789] -alpha-numeric-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ] -alpha-numeric-symbol14 = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=] -alpha-numeric-symbol14-space= [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+= ] -all = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/] -all-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ] -alpha-numeric-symbol32-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ] -lm-frt-cp437 = [ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`{|}~€Ž’™š›œžŸ¥àáâãäæçèéêëî] -lm-frt-cp850 = [ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`{|}~€Ž’™šœŸ¥µ¶·½¾ÇÏÑÒÓÔÕÖ×ØÞàáâãåæèéêëíï] -lm-frt-cp437-850 = [ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`{|}~€Ž’™š›œžŸ¥µ¶·½¾ÇÏÑÒÓÔÕÖ×ØÞàáâãäåæçèéêëíîï] - -numeric = [0123456789] -numeric-space = [0123456789 ] -loweralpha = [abcdefghijklmnopqrstuvwxyz] -loweralpha-space = [abcdefghijklmnopqrstuvwxyz ] -loweralpha-numeric = [abcdefghijklmnopqrstuvwxyz0123456789] -loweralpha-numeric-space = [abcdefghijklmnopqrstuvwxyz0123456789 ] -loweralpha-numeric-symbol14 = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+=] -loweralpha-numeric-all = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/] -loweralpha-numeric-symbol32-space= [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ] - -mixalpha = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ] -mixalpha-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ] -mixalpha-numeric = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789] -mixalpha-numeric-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ] -mixalpha-numeric-symbol14 = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=] -mixalpha-numeric-all = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/] -mixalpha-numeric-symbol32-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ] -mixalpha-numeric-all-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ] diff --git a/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.cpp b/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.cpp deleted file mode 100644 index bfd0ca4..0000000 --- a/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.cpp +++ /dev/null @@ -1,199 +0,0 @@ -// This file is part of BOINC. -// http://boinc.berkeley.edu -// Copyright (C) 2008 University of California -// -// BOINC is free software; you can redistribute it and/or modify it -// under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, -// either version 3 of the License, or (at your option) any later version. -// -// BOINC 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 Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with BOINC. If not, see . - -// This program serves as both -// - An example BOINC application, illustrating the use of the BOINC API -// - A program for testing various features of BOINC -// -// NOTE: this file exists as both -// boinc/apps/upper_case.C -// and -// boinc_samples/example_app/uc2.C -// If you update one, please update the other! - -// The program converts a mixed-case file to upper case: -// read "in", convert to upper case, write to "out" -// -// command line options -// -run_slow: sleep 1 second after each character -// -cpu_time N: use about N CPU seconds after copying files -// -early_exit: exit(10) after 30 chars -// -early_crash: crash after 30 chars -// - -#ifdef _WIN32 - -#else -#include -#include -#include -#include -#include -#include -#include -#endif - -#include -#include -#include -#include -#include "Public.h" -// Rainbowcrack code -#include "ChainWalkContext.h" -typedef unsigned int uint32; -//typedef unsigned __int64 uint64; - - -using std::string; - -/* -bool early_exit = false; -bool early_crash = false; -bool early_sleep = false; -double cpu_time = 20, comp_result; -*/ -int main(int argc, char **argv) { - int retval; - double fd; - - - if(argc < 10) - { - fprintf(stderr, "Not enough parameters"); - return -1; - } - string sHashRoutineName, sCharsetName, sSalt, sCheckPoints; - uint32 nRainbowChainCount, nPlainLenMin, nPlainLenMax, nRainbowTableIndex, nRainbowChainLen; - uint64 nChainStart; - sHashRoutineName = argv[1]; - sCharsetName = argv[2]; - nPlainLenMin = atoi(argv[3]); - nPlainLenMax = atoi(argv[4]); - nRainbowTableIndex = atoi(argv[5]); - nRainbowChainLen = atoi(argv[6]); - nRainbowChainCount = atoi(argv[7]); -#ifdef _WIN32 - - nChainStart = _atoi64(argv[8]); - -#else - nChainStart = atoll(argv[8]); -#endif - sCheckPoints = argv[9]; - vector vCPPositions; - char *cp = strtok((char *)sCheckPoints.c_str(), ","); - while(cp != NULL) - { - vCPPositions.push_back(atoi(cp)); - cp = strtok(NULL, ","); - } - if(argc == 11) - { - sSalt = argv[10]; - } - //std::cout << "Starting ChainGenerator" << std::endl; - // Setup CChainWalkContext - //std::cout << "ChainGenerator started." << std::endl; - - if (!CChainWalkContext::SetHashRoutine(sHashRoutineName)) - { - fprintf(stderr, "hash routine %s not supported\n", sHashRoutineName.c_str()); - return 1; - } - //std::cout << "Hash routine validated" << std::endl; - - if (!CChainWalkContext::SetPlainCharset(sCharsetName, nPlainLenMin, nPlainLenMax)) - { - std::cerr << "charset " << sCharsetName << " not supported" << std::endl; - return 2; - } - //std::cout << "Plain charset validated" << std::endl; - - if (!CChainWalkContext::SetRainbowTableIndex(nRainbowTableIndex)) - { - std::cerr << "invalid rainbow table index " << nRainbowTableIndex << std::endl; - return 3; - } - //std::cout << "Rainbowtable index validated" << std::endl; - - if(sHashRoutineName == "mscache")// || sHashRoutineName == "lmchall" || sHashRoutineName == "halflmchall") - { - // Convert username to unicode - const char *szSalt = sSalt.c_str(); - int salt_length = strlen(szSalt); - unsigned char cur_salt[256]; - for (int i=0; i. - -#include "boinc_api.h" - -struct UC_SHMEM { - double update_time; - double fraction_done; - double cpu_time; - BOINC_STATUS status; - int countdown; - // graphics app sets this to 5 repeatedly, - // main program decrements it once/sec. - // If it's zero, don't bother updating shmem -}; diff --git a/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.ncb b/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.ncb deleted file mode 100644 index 4b3076b..0000000 Binary files a/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.ncb and /dev/null differ diff --git a/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.sln b/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.sln deleted file mode 100644 index 24b2d5b..0000000 --- a/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.sln +++ /dev/null @@ -1,62 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "distrrtgen", "distrrtgen.vcproj", "{A3BDF5F8-4D0A-4B27-B1D9-7E77CBDA86C7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "index_calculator", "..\index_calculator\index_calculator.vcproj", "{C7A957CF-9FDC-4C72-9C3E-7C029E915D1E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rti2rto", "..\..\standalone\rti2rto\rti2rto.vcproj", "{E0FBC06A-C902-4468-A614-CBF9F591AA7C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "convertrti2", "..\..\standalone\converti2\converti2.vcproj", "{066FD6F1-5990-47AD-B095-7AE0029CF5AE}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rsearch", "..\..\standalone\rsearch\rsearch.vcproj", "{40F12861-0A31-4E0E-8324-24F897271C8E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rtperfectp", "..\..\standalone\rtperfectp\rtperfectp.vcproj", "{9725038C-A07B-40DD-87CD-3A119021A244}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rcracki", "..\..\standalone\rcracki\rcracki.vcproj", "{966DA4B4-E13C-449D-9A93-303C6FEA25C4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "chain_checker", "..\chain_checker\chain_checker.vcproj", "{74C09EAC-2EA2-4548-9B61-0FEE56147DFE}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {A3BDF5F8-4D0A-4B27-B1D9-7E77CBDA86C7}.Debug|Win32.ActiveCfg = Debug|Win32 - {A3BDF5F8-4D0A-4B27-B1D9-7E77CBDA86C7}.Debug|Win32.Build.0 = Debug|Win32 - {A3BDF5F8-4D0A-4B27-B1D9-7E77CBDA86C7}.Release|Win32.ActiveCfg = Release|Win32 - {A3BDF5F8-4D0A-4B27-B1D9-7E77CBDA86C7}.Release|Win32.Build.0 = Release|Win32 - {C7A957CF-9FDC-4C72-9C3E-7C029E915D1E}.Debug|Win32.ActiveCfg = Debug|Win32 - {C7A957CF-9FDC-4C72-9C3E-7C029E915D1E}.Debug|Win32.Build.0 = Debug|Win32 - {C7A957CF-9FDC-4C72-9C3E-7C029E915D1E}.Release|Win32.ActiveCfg = Release|Win32 - {C7A957CF-9FDC-4C72-9C3E-7C029E915D1E}.Release|Win32.Build.0 = Release|Win32 - {E0FBC06A-C902-4468-A614-CBF9F591AA7C}.Debug|Win32.ActiveCfg = Debug|Win32 - {E0FBC06A-C902-4468-A614-CBF9F591AA7C}.Debug|Win32.Build.0 = Debug|Win32 - {E0FBC06A-C902-4468-A614-CBF9F591AA7C}.Release|Win32.ActiveCfg = Release|Win32 - {E0FBC06A-C902-4468-A614-CBF9F591AA7C}.Release|Win32.Build.0 = Release|Win32 - {066FD6F1-5990-47AD-B095-7AE0029CF5AE}.Debug|Win32.ActiveCfg = Debug|Win32 - {066FD6F1-5990-47AD-B095-7AE0029CF5AE}.Debug|Win32.Build.0 = Debug|Win32 - {066FD6F1-5990-47AD-B095-7AE0029CF5AE}.Release|Win32.ActiveCfg = Release|Win32 - {066FD6F1-5990-47AD-B095-7AE0029CF5AE}.Release|Win32.Build.0 = Release|Win32 - {40F12861-0A31-4E0E-8324-24F897271C8E}.Debug|Win32.ActiveCfg = Debug|Win32 - {40F12861-0A31-4E0E-8324-24F897271C8E}.Debug|Win32.Build.0 = Debug|Win32 - {40F12861-0A31-4E0E-8324-24F897271C8E}.Release|Win32.ActiveCfg = Release|Win32 - {40F12861-0A31-4E0E-8324-24F897271C8E}.Release|Win32.Build.0 = Release|Win32 - {9725038C-A07B-40DD-87CD-3A119021A244}.Debug|Win32.ActiveCfg = Debug|Win32 - {9725038C-A07B-40DD-87CD-3A119021A244}.Debug|Win32.Build.0 = Debug|Win32 - {9725038C-A07B-40DD-87CD-3A119021A244}.Release|Win32.ActiveCfg = Release|Win32 - {9725038C-A07B-40DD-87CD-3A119021A244}.Release|Win32.Build.0 = Release|Win32 - {966DA4B4-E13C-449D-9A93-303C6FEA25C4}.Debug|Win32.ActiveCfg = Debug|Win32 - {966DA4B4-E13C-449D-9A93-303C6FEA25C4}.Debug|Win32.Build.0 = Debug|Win32 - {966DA4B4-E13C-449D-9A93-303C6FEA25C4}.Release|Win32.ActiveCfg = Release|Win32 - {966DA4B4-E13C-449D-9A93-303C6FEA25C4}.Release|Win32.Build.0 = Release|Win32 - {74C09EAC-2EA2-4548-9B61-0FEE56147DFE}.Debug|Win32.ActiveCfg = Debug|Win32 - {74C09EAC-2EA2-4548-9B61-0FEE56147DFE}.Debug|Win32.Build.0 = Debug|Win32 - {74C09EAC-2EA2-4548-9B61-0FEE56147DFE}.Release|Win32.ActiveCfg = Release|Win32 - {74C09EAC-2EA2-4548-9B61-0FEE56147DFE}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.suo b/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.suo deleted file mode 100644 index 426c9d9..0000000 Binary files a/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.suo and /dev/null differ diff --git a/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.vcproj b/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.vcproj deleted file mode 100644 index d4e339c..0000000 --- a/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.vcproj +++ /dev/null @@ -1,290 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.vcproj.MWJ-PC.mwj.user b/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.vcproj.MWJ-PC.mwj.user deleted file mode 100644 index 15b19f6..0000000 --- a/BOINC software/BOINC client apps/distrrtgen_flash/distrrtgen.vcproj.MWJ-PC.mwj.user +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - diff --git a/BOINC software/BOINC client apps/index_calculator/charset.txt b/BOINC software/BOINC client apps/index_calculator/charset.txt deleted file mode 100644 index 6e749fa..0000000 --- a/BOINC software/BOINC client apps/index_calculator/charset.txt +++ /dev/null @@ -1,34 +0,0 @@ -# charset configuration file for DistrRTgen v3.2 by Martin Westergaard (martinwj2005@gmail.com) - -byte = [] -alpha = [ABCDEFGHIJKLMNOPQRSTUVWXYZ] -alpha-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ ] -alpha-numeric = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789] -alpha-numeric-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ] -alpha-numeric-symbol14 = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=] -alpha-numeric-symbol14-space= [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+= ] -all = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/] -all-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ] -alpha-numeric-symbol32-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ] -lm-frt-cp437 = [ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`{|}~€Ž’™š›œžŸ¥àáâãäæçèéêëî] -lm-frt-cp850 = [ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`{|}~€Ž’™šœŸ¥µ¶·½¾ÇÏÑÒÓÔÕÖ×ØÞàáâãåæèéêëíï] -lm-frt-cp437-850 = [ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`{|}~€Ž’™š›œžŸ¥µ¶·½¾ÇÏÑÒÓÔÕÖ×ØÞàáâãäåæçèéêëíîï] - -numeric = [0123456789] -numeric-space = [0123456789 ] -loweralpha = [abcdefghijklmnopqrstuvwxyz] -loweralpha-space = [abcdefghijklmnopqrstuvwxyz ] -loweralpha-numeric = [abcdefghijklmnopqrstuvwxyz0123456789] -loweralpha-numeric-space = [abcdefghijklmnopqrstuvwxyz0123456789 ] -loweralpha-numeric-symbol14 = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+=] -loweralpha-numeric-all = [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/] -loweralpha-numeric-symbol32-space= [abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ] - -mixalpha = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ] -mixalpha-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ] -mixalpha-numeric = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789] -mixalpha-numeric-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ] -mixalpha-numeric-symbol14 = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=] -mixalpha-numeric-all = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/] -mixalpha-numeric-symbol32-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ] -mixalpha-numeric-all-space = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ] diff --git a/BOINC software/BOINC client apps/index_calculator/index_calculator.cpp b/BOINC software/BOINC client apps/index_calculator/index_calculator.cpp deleted file mode 100644 index 04041be..0000000 --- a/BOINC software/BOINC client apps/index_calculator/index_calculator.cpp +++ /dev/null @@ -1,225 +0,0 @@ -// This file is part of BOINC. -// http://boinc.berkeley.edu -// Copyright (C) 2008 University of California -// -// BOINC is free software; you can redistribute it and/or modify it -// under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, -// either version 3 of the License, or (at your option) any later version. -// -// BOINC 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 Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with BOINC. If not, see . - - -#ifdef _WIN32 -#include "boinc_win.h" -#else -#include "config.h" -#include -#include -#include -#include -#include -#include -#include -#endif - -#include -#include - -#include "str_util.h" -#include "util.h" -#include "filesys.h" -#include "boinc_api.h" -#include "Public.h" -// Rainbowcrack code -#include "ChainWalkSet.h" -#include "ChainWalkContext.h" -typedef unsigned int uint32; -//typedef unsigned __int64 uint64; - - -using std::string; - -int main(int argc, char **argv) { - int i; - int c, nchars = 0, retval, n; - double fsize, fd; - char output_path[512], chkpt_path[512]; - FILE* state, *infile; - retval = boinc_init(); - if (retval) { - fprintf(stderr, "boinc_init returned %d\n", retval); - exit(retval); - } - - - // get size of input file (used to compute fraction done) - // - //file_size(input_path, fsize); - - // See if there's a valid checkpoint file. - // If so seek input file and truncate output file - // - - - if(argc < 8) - { - std::cerr << "Not enough parameters"; - return -1; - } - string sHashRoutineName, sCharsetName, sHash; - uint32 nRainbowChainCount, nPlainLenMin, nPlainLenMax, nRainbowTableIndex, nRainbowChainLen; - uint64 nChainStart; - sHashRoutineName = argv[1]; - sCharsetName = argv[2]; - nPlainLenMin = atoi(argv[3]); - nPlainLenMax = atoi(argv[4]); - nRainbowTableIndex = atoi(argv[5]); - nRainbowChainLen = atoi(argv[6]); - sHash = argv[7]; - //std::cout << "Starting ChainGenerator" << std::endl; - // Setup CChainWalkContext - //std::cout << "ChainGenerator started." << std::endl; - - if (!CChainWalkContext::SetHashRoutine(sHashRoutineName)) - { - std::cerr << "hash routine " << sHashRoutineName << " not supported" << std::endl; - return 1; - } - //std::cout << "Hash routine validated" << std::endl; - - if (!CChainWalkContext::SetPlainCharset(sCharsetName, nPlainLenMin, nPlainLenMax)) - { - std::cerr << "charset " << sCharsetName << " not supported" << std::endl; - return 2; - } - //std::cout << "Plain charset validated" << std::endl; - - if (!CChainWalkContext::SetRainbowTableIndex(nRainbowTableIndex)) - { - std::cerr << "invalid rainbow table index " << nRainbowTableIndex << std::endl; - return 3; - } - //std::cout << "Rainbowtable index validated" << std::endl; -/* - if(sHashRoutineName == "mscache")// || sHashRoutineName == "lmchall" || sHashRoutineName == "halflmchall") - { - // Convert username to unicode - const char *szSalt = sSalt.c_str(); - int salt_length = strlen(szSalt); - unsigned char cur_salt[256]; - for (int i=0; i= 0; nPos--) - { - if(time(NULL) - tStart > 1) - { - time(&tStart); - double nCurrentChains = pow(((double)nRainbowChainLen - 2 - (double)nPos), 2) / 2 - (nRainbowChainLen - 2); - double fResult = ((double)((double)(nCurrentChains) / nTargetChains)); - if(fResult < 0) - fResult = 0; - boinc_fraction_done(fResult); - } - - cwc.SetHash(TargetHash); - cwc.HashToIndex(nPos); - int i; - for (i = nPos + 1; i <= nRainbowChainLen - 2; i++) - { - cwc.IndexToPlain(); - cwc.PlainToHash(); - cwc.HashToIndex(i); - } - uint64 index = cwc.GetIndex(); - if(fwrite(&index, 8, 1, outfile) != 1) - { - fprintf(stderr, "unable to write to outfile"); - return 9; - } - //nChainWalkStep += nRainbowChainLen - 2 - nPos; - } -// printf("ok\n"); - double nCurrentChains = pow(((double)nRainbowChainLen - 2 - (double)nPos), 2) / 2 - (nRainbowChainLen - 2); - double fResult = ((double)((double)(nCurrentChains) / nTargetChains)); - boinc_fraction_done(fResult); - } - - - fclose(outfile); - - // main loop - read characters, convert to UC, write - // - - boinc_fraction_done(1); - boinc_finish(0); -} - -#ifdef _WIN32 -int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR Args, int WinMode) { - LPSTR command_line; - char* argv[100]; - int argc; - - command_line = GetCommandLine(); - argc = parse_command_line( command_line, argv ); - return main(argc, argv); -} -#endif - -const char *BOINC_RCSID_33ac47a071 = "$Id: upper_case.C 12135 2007-02-21 20:04:14Z davea $"; - diff --git a/BOINC software/BOINC client apps/index_calculator/index_calculator.h b/BOINC software/BOINC client apps/index_calculator/index_calculator.h deleted file mode 100644 index d360617..0000000 --- a/BOINC software/BOINC client apps/index_calculator/index_calculator.h +++ /dev/null @@ -1,29 +0,0 @@ -// This file is part of BOINC. -// http://boinc.berkeley.edu -// Copyright (C) 2008 University of California -// -// BOINC is free software; you can redistribute it and/or modify it -// under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, -// either version 3 of the License, or (at your option) any later version. -// -// BOINC 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 Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with BOINC. If not, see . - -#include "boinc_api.h" - -struct UC_SHMEM { - double update_time; - double fraction_done; - double cpu_time; - BOINC_STATUS status; - int countdown; - // graphics app sets this to 5 repeatedly, - // main program decrements it once/sec. - // If it's zero, don't bother updating shmem -}; diff --git a/BOINC software/BOINC client apps/index_calculator/index_calculator.suo b/BOINC software/BOINC client apps/index_calculator/index_calculator.suo deleted file mode 100644 index 393645d..0000000 Binary files a/BOINC software/BOINC client apps/index_calculator/index_calculator.suo and /dev/null differ diff --git a/BOINC software/BOINC client apps/index_calculator/index_calculator.vcproj b/BOINC software/BOINC client apps/index_calculator/index_calculator.vcproj deleted file mode 100644 index c372b13..0000000 --- a/BOINC software/BOINC client apps/index_calculator/index_calculator.vcproj +++ /dev/null @@ -1,301 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Client Applications/converti2/converti2.cpp b/Client Applications/converti2/converti2.cpp index db703e9..1d8d5e7 100644 --- a/Client Applications/converti2/converti2.cpp +++ b/Client Applications/converti2/converti2.cpp @@ -1,8 +1,7 @@ #include #include #ifdef _WIN32 - #include - #include +#include #else #include #include @@ -14,9 +13,12 @@ #include #include #include - +#include +#include #include "Public.h" #include "MemoryPool.h" +#include "RTIReader.h" +#include "RTReader.h" using namespace std; @@ -246,13 +248,10 @@ void GetTableList(string sWildCharPathName, vector& vPathName) _finddata_t fd; long handle = _findfirst(sWildCharPathName.c_str(), &fd); - if (handle != -1) - { - do - { + if (handle != -1) { + do { string sName = fd.name; - if (sName != "." && sName != ".." && !(fd.attrib & _A_SUBDIR)) - { + if (sName != "." && sName != ".." && !(fd.attrib & _A_SUBDIR)) { string sPathName = sPath + sName; vPathName.push_back(sPathName); } @@ -290,108 +289,93 @@ void ConvertRainbowTable(string sPathName, string sResultFileName, unsigned int int nIndex = sPathName.find_last_of('/'); #endif string sFileName; - if (nIndex != -1) + if (nIndex != -1) { sFileName = sPathName.substr(nIndex + 1); - else + } + else { sFileName = sPathName; - // Info - printf("%s:\n", sFileName.c_str()); - FILE* file = fopen(sPathName.c_str(), "rb"); - FILE* fileR = fopen(sResultFileName.c_str(), "wb"); + } unsigned int distribution[64] = {0}; unsigned int numProcessedChains = 0; - - if (file != NULL && fileR != NULL) - { + FILE* fileR; + BaseRTReader *reader = NULL; + if(sPathName.substr(sPathName.length() - 2, sPathName.length()) == "rt") + reader = (BaseRTReader*)new RTReader(sPathName); + else if(sPathName.substr(sPathName.length() - 3, sPathName.length()) == "rti") + reader = (BaseRTReader*)new RTIReader(sPathName); + if(reader == NULL) { + printf("%s is not a supported file (Only RT and RTI is supported)\n", sPathName.c_str()); + return; + } + // Info + printf("%s:\n", sFileName.c_str()); + if(showDistribution == 0) { + fileR = fopen(sResultFileName.c_str(), "wb"); + } + if (fileR != NULL || showDistribution == 1) { // File length check - UINT4 nFileLen = GetFileLen(file); - UINT4 nTotalChainCount = 0; - if(hascp == 0) nTotalChainCount = nFileLen / 16; - else nTotalChainCount = nFileLen / 18; - if ((hascp == 0 && nFileLen % 16 != 0) || (hascp == 1 && nFileLen % 18 != 0)) - { - printf("file length mismatch\n"); - } - else - { + + int size = reader->GetChainsLeft() * sizeof(RainbowChain); static CMemoryPool mp; unsigned int nAllocatedSize; - RainbowChainCP* pChain = (RainbowChainCP*)mp.Allocate(nFileLen, nAllocatedSize); - + RainbowChain* pChain = (RainbowChain*)mp.Allocate(size, nAllocatedSize); unsigned int chainrowsize = ceil((float)(rti_startptlength + rti_endptlength + rti_cplength) / 8) * 8 ; // The size in bits (in whole bytes) unsigned int chainrowsizebytes = chainrowsize / 8; - - if (pChain != NULL) - { - nAllocatedSize = nAllocatedSize / sizeof(RainbowChainCP) * sizeof(RainbowChainCP); - fseek(file, 0, SEEK_SET); + if (pChain != NULL) { + nAllocatedSize = nAllocatedSize / sizeof(RainbowChain) * sizeof(RainbowChain); + unsigned int nChains = nAllocatedSize / sizeof(RainbowChain); uint64 curPrefix = 0, prefixStart = 0; vector indexes; - UINT4 nRainbowChainCountRead = 0; - while (true) // Chunk read loop - { + unsigned int chainsLeft; + while((chainsLeft = reader->GetChainsLeft()) > 0) { + /* if (ftell(file) == nFileLen) break;*/ - UINT4 nReadThisRound; - memset(pChain, 0x00, nAllocatedSize); - printf("reading...\n"); + printf("%u chains left to read\n", chainsLeft); + int nReadThisRound; clock_t t1 = clock(); - for(nReadThisRound = 0; nReadThisRound < nAllocatedSize / sizeof(RainbowChainCP) && nRainbowChainCountRead < nTotalChainCount; nReadThisRound++) - { - if(fread(&pChain[nReadThisRound], 16, 1, file) != 1) - { - printf("Error reading file\n"); exit(1); - } - if(hascp == 1) - { - if(fread(&pChain[nReadThisRound].nCheckPoint, 2, 1, file) != 1) - { - printf("Error reading file\n"); exit(2); - } - } - nRainbowChainCountRead++; - } + printf("reading...\n"); +#ifdef _MEMORYDEBUG + printf("Grabbing %i chains from file\n", nChains); +#endif + reader->ReadChains(nChains, pChain); +#ifdef _MEMORYDEBUG + printf("Recieved %i chains from file\n", nChains); +#endif clock_t t2 = clock(); float fTime = 1.0f * (t2 - t1) / CLOCKS_PER_SEC; - int nDataRead = nRainbowChainCountRead * 16; - if(hascp == 1) nDataRead += nRainbowChainCountRead * 2; // Add the index readings too - printf("%u bytes read, disk access time: %.2f s\n", nDataRead , fTime); + printf("reading time: %.2f s\n", fTime); + printf("converting %i chains...\n", nChains); t1 = clock(); - - for(UINT4 i = 0; i < nReadThisRound; i++) - { - if(showDistribution == 1) - { + for(int i = 0; i < nChains; i++) { + if(showDistribution == 1) { distribution[GetMaxBits(pChain[i].nIndexS)-1]++; } else { uint64 chainrow = pChain[i].nIndexS; // Insert the complete start point chainrow |= ((uint64)pChain[i].nIndexE & (0xffffffff >> (32 - rti_endptlength))) << rti_startptlength; // - if(hascp == 1 && rti_cplength > 0) - { +/* if(hascp == 1 && rti_cplength > 0) { chainrow |= (uint64)pChain[i].nCheckPoint << rti_startptlength + rti_endptlength; - } + }*/ fwrite(&chainrow, 1, chainrowsizebytes, fileR); uint64 prefix = pChain[i].nIndexE >> rti_endptlength; if(i == 0) curPrefix = prefix; - if(prefix != curPrefix && numProcessedChains - prefixStart > 0) - { - if(prefix < curPrefix) - { - printf("**** Error writeChain(): Prefix is smaller than previous prefix. %llu < %llu****\n", prefix, curPrefix); - exit(1); - } - //unsigned char index[11] = {0}; // [0 - 10] - unsigned int numchains = numProcessedChains - prefixStart; - IndexRow index; - index.prefix = curPrefix; + if(prefix != curPrefix && numProcessedChains - prefixStart > 0) { + if(prefix < curPrefix) { + printf("**** Error writeChain(): Prefix is smaller than previous prefix. %llu < %llu****\n", prefix, curPrefix); + exit(1); + } + //unsigned char index[11] = {0}; // [0 - 10] + unsigned int numchains = numProcessedChains - prefixStart; + IndexRow index; + index.prefix = curPrefix; // index.prefixstart = prefixStart; - index.numchains = numchains; - indexes.push_back(index); - prefixStart = numProcessedChains; - curPrefix = prefix; + index.numchains = numchains; + indexes.push_back(index); + prefixStart = numProcessedChains; + curPrefix = prefix; } } numProcessedChains++; @@ -399,14 +383,11 @@ void ConvertRainbowTable(string sPathName, string sResultFileName, unsigned int t2 = clock(); fTime = 1.0f * (t2 - t1) / CLOCKS_PER_SEC; printf("conversion time: %.2f s\n", fTime); - if(nRainbowChainCountRead == nTotalChainCount) - break; - if(showDistribution == 1) - { - for(int i = 0; i < 64; i++) - { + if(showDistribution == 1) { + for(int i = 0; i < 64; i++) { printf("%u - %u\n", (i+1), distribution[i]); } + delete reader; return; } @@ -444,29 +425,29 @@ void ConvertRainbowTable(string sPathName, string sResultFileName, unsigned int fwrite(&rti_endptlength, 1, 1, pFileIndex); fwrite(&rti_cplength, 1, 1, pFileIndex); // fwrite(&m_rti_index_indexlength , 1, 1, pFileIndex); + fwrite(&m_rti_index_numchainslength, 1, 1, pFileIndex); - for(UINT4 i = 0; i < rti_cppos.size(); i++) - { + for(UINT4 i = 0; i < rti_cppos.size(); i++) { fwrite(&rti_cppos[i], 1, 4, pFileIndex); // The position of the checkpoints } // fwrite(&m_rti_index_prefixlength, 1, 1, pFileIndex); int zero = 0; fwrite(&indexes[0].prefix, 1, 8, pFileIndex); // Write the first prefix unsigned int lastPrefix = 0; - for(UINT4 i = 0; i < indexes.size(); i++) - { - if(i == 0) + for(UINT4 i = 0; i < indexes.size(); i++) { + if(i == 0) { lastPrefix = indexes[0].prefix; + } + unsigned int indexrow = 0; // Checks how big a distance there is between the current and the next prefix. eg cur is 3 and next is 10 = 7. unsigned int diffSize = indexes[i].prefix - lastPrefix; - if(i > 0 && diffSize > 1) - { + if(i > 0 && diffSize > 1) { //indexrow |= indexes[i].prefixstart; //printf("Diffsize is %u\n", diffSize); // then write the distance amount of 00's if(diffSize > 1000) { - printf("WARNING! The distance to the next prefix is %i. Do you want to continue writing %i bytes of 0x00? Press y to continue", diffSize, diffSize); + printf("WARNING! The distance to the next prefix is %i. Do you want to continue writing %i bytes of 0x00? Press y to continue", diffSize, (diffSize*m_indexrowsizebytes)); #ifdef _WIN32 if ( _getch() != 'y' ) { #else @@ -486,17 +467,20 @@ void ConvertRainbowTable(string sPathName, string sResultFileName, unsigned int } fclose(pFileIndex); } - else printf("memory allocation fail\n"); - - - // Already finished? - - } - fclose(file); + else { + printf("memory allocation fail\n"); + } + // Already finished? } - else + else { printf("can't open file\n"); - + } + if(reader != NULL) + delete reader; + if(fileR != NULL) { + fclose(fileR); + } + } int main(int argc, char* argv[]) @@ -507,76 +491,63 @@ int main(int argc, char* argv[]) int usecp = 0;// How many bits to use from the index int hascp = 0; vector cppositions; - if (argc == 1) - { + if (argc == 1) { Usage(); return 0; } - else if(argc > 2) - { + else if(argc > 2) { for (; argi < argc; argi++) { - if (strcmp(argv[argi], "-d") == 0 && (argsUsed & 0x8) == 0) - { + if(strcmp(argv[argi], "-d") == 0 && (argsUsed & 0x8) == 0) { // Enable verbose mode argsUsed |= 0x8; showDistribution = 1; } - else if (strncmp(argv[argi], "-sptl=", 6) == 0 && (argsUsed & 0x1) == 0) - { + else if (strncmp(argv[argi], "-sptl=", 6) == 0 && (argsUsed & 0x1) == 0) { // Maximum index for starting point argsUsed |= 0x1; sptl = 0; - for (i = 6; argv[argi][i] >= '0' && argv[argi][i] <= '9'; i++) - { + for (i = 6; argv[argi][i] >= '0' && argv[argi][i] <= '9'; i++) { sptl *= 10; sptl += ((int) argv[argi][i]) - 0x30; } - if (argv[argi][i] != '\0') - { + if (argv[argi][i] != '\0') { printf("Error: Invalid number.\n\n"); Usage(); return 1; } - if (i > 23) // i - 3 > 20 - { + if (i > 23) { // i - 3 > 20 printf("Error: Number is too large.\n\n"); Usage(); return 1; } } - else if (strncmp(argv[argi], "-eptl=", 6) == 0 && (argsUsed & 0x2) == 0) - { + else if (strncmp(argv[argi], "-eptl=", 6) == 0 && (argsUsed & 0x2) == 0) { // Maximum index for ending points argsUsed |= 0x2; eptl = 0; - for (i = 6; argv[argi][i] >= '0' && argv[argi][i] <= '9'; i++) - { + for (i = 6; argv[argi][i] >= '0' && argv[argi][i] <= '9'; i++) { eptl *= 10; eptl += ((int) argv[argi][i]) - 0x30; } - if (argv[argi][i] != '\0') - { + if (argv[argi][i] != '\0') { printf("Error: Invalid number.\n\n"); Usage(); return 1; } - if (i > 23) // i - 3 > 20 - { + if (i > 23) { // i - 3 > 20 printf("Error: Number is too large.\n\n"); Usage(); return 1; } } - else if(strncmp(argv[argi], "-usecp=", 7) == 0 && (argsUsed & 0x4) == 0) - { + else if(strncmp(argv[argi], "-usecp=", 7) == 0 && (argsUsed & 0x4) == 0) { argsUsed |= 0x4; hascp = 1; usecp = 0; unsigned int cppos = 0; - for(i = 7; argv[argi][i] != ' ' && argv[argi][i] != '\n' && argv[argi][i] != 0;) - { + for(i = 7; argv[argi][i] != ' ' && argv[argi][i] != '\n' && argv[argi][i] != 0;) { if(cppositions.size() > 0) i++; for (; argv[argi][i] >= '0' && argv[argi][i] <= '9'; i++) { @@ -590,19 +561,19 @@ int main(int argc, char* argv[]) cppos = 0; //} } - if (argv[argi][i] != '\0') - { + if (argv[argi][i] != '\0') { printf("Error: Invalid number.\n\n"); Usage(); return 1; } - if (usecp > 16) // i - 3 > 20 - { + if (usecp > 16) { // i - 3 > 20 printf("Error: Number is too large.\n\n"); Usage(); return 1; } - else printf("Using %i bits of the checkpoints\n", usecp); + else { + printf("Using %i bits of the checkpoints\n", usecp); + } } } @@ -614,26 +585,36 @@ int main(int argc, char* argv[]) #else GetTableList(argc, argv, vPathName); #endif - if (vPathName.size() == 0) - { + if (vPathName.size() == 0) { printf("no rainbow table found\n"); return 0; } - for (UINT4 i = 0; i < vPathName.size(); i++) - { + for (UINT4 i = 0; i < vPathName.size(); i++) { string sResultFile; int n = vPathName[i].find_last_of('\\'); - if (n != -1) - sResultFile = vPathName[i].substr(n+1, vPathName[i].length()) + "i2"; - else - sResultFile = vPathName[i] + "i2"; // Resulting file is .rt, not .rti - printf("Using %i of 64 bits. sptl: %i, eptl: %i, cp: %i. Chains will be %i bytes in size\n", (sptl + eptl + usecp), sptl, eptl, usecp, ((sptl + eptl + usecp) / 8)); - if(sptl + eptl + usecp > 64) - { + if (n != -1) { + if(vPathName[i].substr(vPathName[i].length() - 3, vPathName[i].length()) == "rti") { + sResultFile = vPathName[i].substr(n+1, vPathName[i].length()) + "2"; + } + else { + sResultFile = vPathName[i].substr(n+1, vPathName[i].length()) + "i2"; + } + } + else { + if(vPathName[i].substr(vPathName[i].length() - 3, vPathName[i].length()) == "rti") { + sResultFile = vPathName[i] + "2"; + } else { + sResultFile = vPathName[i] + "i2"; // Resulting file is .rt, not .rti + } + } + if(usecp == 0 && showDistribution == 0) { + printf("Using %i of 64 bits. sptl: %i, eptl: %i, cp: %i. Chains will be %i bytes in size\n", (sptl + eptl + usecp), sptl, eptl, usecp, ((sptl + eptl + usecp) / 8)); + } + if(sptl + eptl + usecp > 64) { exit(1); } ConvertRainbowTable(vPathName[i], sResultFile, sptl, eptl, showDistribution, hascp, usecp, cppositions); printf("\n"); } return 0; -} +} \ No newline at end of file diff --git a/Client Applications/converti2/converti2.sln b/Client Applications/converti2/converti2.sln deleted file mode 100644 index d4e3874..0000000 --- a/Client Applications/converti2/converti2.sln +++ /dev/null @@ -1,26 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "converti2", "converti2.vcproj", "{066FD6F1-5990-47AD-B095-7AE0029CF5AE}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rcracki_mt", "..\rcracki_mt\rcracki_mt.vcproj", "{D484ABA1-C117-4AB1-B361-22E5EA62FA00}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {066FD6F1-5990-47AD-B095-7AE0029CF5AE}.Debug|Win32.ActiveCfg = Debug|Win32 - {066FD6F1-5990-47AD-B095-7AE0029CF5AE}.Debug|Win32.Build.0 = Debug|Win32 - {066FD6F1-5990-47AD-B095-7AE0029CF5AE}.Release|Win32.ActiveCfg = Release|Win32 - {066FD6F1-5990-47AD-B095-7AE0029CF5AE}.Release|Win32.Build.0 = Release|Win32 - {D484ABA1-C117-4AB1-B361-22E5EA62FA00}.Debug|Win32.ActiveCfg = Debug|Win32 - {D484ABA1-C117-4AB1-B361-22E5EA62FA00}.Debug|Win32.Build.0 = Debug|Win32 - {D484ABA1-C117-4AB1-B361-22E5EA62FA00}.Release|Win32.ActiveCfg = Release|Win32 - {D484ABA1-C117-4AB1-B361-22E5EA62FA00}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/Client Applications/converti2/converti2.vcproj b/Client Applications/converti2/converti2.vcproj deleted file mode 100644 index 0103995..0000000 --- a/Client Applications/converti2/converti2.vcproj +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Client Applications/converti2/converti2.vcxproj b/Client Applications/converti2/converti2.vcxproj new file mode 100644 index 0000000..90f75b9 --- /dev/null +++ b/Client Applications/converti2/converti2.vcxproj @@ -0,0 +1,105 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {066FD6F1-5990-47AD-B095-7AE0029CF5AE} + convertrti2 + Win32Proj + + + + Application + NotSet + true + + + Application + NotSet + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + + + + Disabled + ../../Common/rt api;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + MaxSpeed + true + ../../Common/rt api;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Client Applications/converti2/converti2.vcxproj.filters b/Client Applications/converti2/converti2.vcxproj.filters new file mode 100644 index 0000000..e0c08d7 --- /dev/null +++ b/Client Applications/converti2/converti2.vcxproj.filters @@ -0,0 +1,54 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ No newline at end of file diff --git a/Client Applications/converti2/converti2.vcxproj.user b/Client Applications/converti2/converti2.vcxproj.user new file mode 100644 index 0000000..8e3e8c4 --- /dev/null +++ b/Client Applications/converti2/converti2.vcxproj.user @@ -0,0 +1,7 @@ + + + + C:\Users\mwj\Desktop\tables\*.rti -d + WindowsLocalDebugger + + \ No newline at end of file diff --git a/Client Applications/rcracki_mt/BaseRTReader.cpp b/Client Applications/rcracki_mt/BaseRTReader.cpp deleted file mode 100644 index 9b797ec..0000000 --- a/Client Applications/rcracki_mt/BaseRTReader.cpp +++ /dev/null @@ -1,25 +0,0 @@ -/* - * rcracki_mt is a multithreaded implementation and fork of the original - * RainbowCrack - * - * Copyright 2010 Martin Westergaard Jørgensen - * Copyright 2010 Daniël Niggebrugge - * Copyright 2010 James Nobis - * - * 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 . - */ - -#include "BaseRTReader.h" diff --git a/Client Applications/rcracki_mt/BaseRTReader.h b/Client Applications/rcracki_mt/BaseRTReader.h deleted file mode 100644 index 17a93ac..0000000 --- a/Client Applications/rcracki_mt/BaseRTReader.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * rcracki_mt is a multithreaded implementation and fork of the original - * RainbowCrack - * - * Copyright 2010 Martin Westergaard Jørgensen - * Copyright 2010 Daniël Niggebrugge - * Copyright 2010 James Nobis - * - * 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 . - */ - -#ifndef __BASERTREADER_H__ -#define __BASERTREADER_H__ - -#include "Public.h" -#include - -#if defined(_WIN32) && !defined(__GNUC__) - #include -#endif - -using namespace std; - -class BaseRTReader -{ -public: - virtual int ReadChains(unsigned int &numChains, RainbowChainO *pData) = 0; - virtual unsigned int GetChainsLeft() = 0; - -}; - -#endif diff --git a/Client Applications/rcracki_mt/CrackEngine.cpp b/Client Applications/rcracki_mt/CrackEngine.cpp index 7640a63..0a4b181 100644 --- a/Client Applications/rcracki_mt/CrackEngine.cpp +++ b/Client Applications/rcracki_mt/CrackEngine.cpp @@ -1044,7 +1044,12 @@ void CCrackEngine::SearchRainbowTable(string sPathName, CHashSet& hs) } static CMemoryPool mp(bytesForChainWalkSet, debug, maxMem); - RainbowChainO* pChain = (RainbowChainO*)mp.Allocate(nFileLen, nAllocatedSize); + RainbowChainO* pChain = NULL; + if(doRti2Format) { + pChain = (RainbowChainO*)mp.Allocate(pReader->GetChainsLeft() * 16, nAllocatedSize); + } else { + pChain = (RainbowChainO*)mp.Allocate(nFileLen, nAllocatedSize); + } #ifdef _WIN32 if (debug) printf("Allocated %I64u bytes, filelen %lu\n", nAllocatedSize, (unsigned long)nFileLen); #else @@ -1064,13 +1069,15 @@ void CCrackEngine::SearchRainbowTable(string sPathName, CHashSet& hs) // Load table chunk if (debug) printf("reading...\n"); - unsigned int nDataRead = 0, nDataToRead = 0; + unsigned int nDataRead = 0; gettimeofday( &tv, NULL ); if ( doRti2Format ) { - nDataToRead = nAllocatedSize / 16; - nDataRead = nDataToRead; - pReader->ReadChains(nDataRead, pChain); + nDataRead = nAllocatedSize / 16; + if(pReader->GetChainsLeft() <= 0) // No more data + break; + pReader->ReadChains(nDataRead, (RainbowChain*)pChain); + nDataRead *= 8; // Convert from chains read to bytes } else @@ -1086,6 +1093,10 @@ void CCrackEngine::SearchRainbowTable(string sPathName, CHashSet& hs) int nRainbowChainCountRead = nDataRead / 16; + if(doRti2Format) { + nRainbowChainCountRead = nDataRead / 8; + } + // Verify table chunk if (!fVerified) { @@ -1136,13 +1147,6 @@ void CCrackEngine::SearchRainbowTable(string sPathName, CHashSet& hs) // Already finished? if (!hs.AnyHashLeftWithLen(CChainWalkContext::GetHashLen())) break; - - // finished the current table - if( doRti2Format && nDataToRead > (nDataRead / 8) ) - { - delete pReader; - break; - } } } else diff --git a/Client Applications/rcracki_mt/RTI2Reader.cpp b/Client Applications/rcracki_mt/RTI2Reader.cpp deleted file mode 100644 index 692c73e..0000000 --- a/Client Applications/rcracki_mt/RTI2Reader.cpp +++ /dev/null @@ -1,159 +0,0 @@ -/* - * rcracki_mt is a multithreaded implementation and fork of the original - * RainbowCrack - * - * Copyright 2010 Martin Westergaard Jørgensen - * Copyright 2010 Daniël Niggebrugge - * Copyright 2010 James Nobis - * - * 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 . - */ - -#include "RTI2Reader.h" - -#include - -RTI2Header *RTI2Reader::m_pHeader = NULL; -RTI2Reader::RTI2Reader(string Filename) -{ - //m_pIndexPos = NULL, m_pChainPos = NULL;; - m_pIndex = NULL; - m_pFile = fopen(Filename.c_str(), "rb"); - if(m_pFile == NULL) - { - printf("Unable to open file %s", Filename.c_str()); - exit(1); - } - FILE *pFileIndex = fopen(Filename.append(".index").c_str(), "rb"); - if(pFileIndex == NULL) - { - printf("Unable to open file %s", Filename.append(".index").c_str()); - exit(1); - } - m_chainPosition = 0; - - unsigned int len = GetFileLen(pFileIndex); - fseek(pFileIndex, 0, SEEK_SET); - - m_pIndex = new unsigned char[len]; - if(fread(m_pIndex, 1, len, pFileIndex) != len) - { - printf("Error while reading index file"); - exit(1); - } - fclose(pFileIndex); - m_pHeader = new RTI2Header(); - memcpy(m_pHeader, m_pIndex, sizeof(RTI2Header)); - m_pHeader->m_cppos = (unsigned int*)(m_pIndex + 8); - m_pHeader->prefixstart = *(uint64*)(m_pIndex + 8 + (m_pHeader->rti_cplength * 4)); - m_chainsizebytes = (UINT4)ceil((float)(m_pHeader->rti_startptlength + m_pHeader->rti_endptlength + m_pHeader->rti_cplength) / 8); // Get the size of each chain in bytes - m_indexrowsizebytes = (UINT4)ceil((float)m_pHeader->rti_index_numchainslength / 8); - // Check the filesize - fseek(m_pFile, 0, SEEK_END); - len = ftell(m_pFile); - fseek(m_pFile, 0, SEEK_SET); - if(len % m_chainsizebytes > 0) - { - printf("Invalid filesize %u\n", len); - return; - } - - -} - -RTI2Reader::~RTI2Reader(void) -{ - if(m_pIndex != NULL) delete m_pIndex; - if(m_pFile != NULL) fclose(m_pFile); - -} - -unsigned int RTI2Reader::GetChainsLeft() -{ - int len = GetFileLen(m_pFile); - return len / m_chainsizebytes - m_chainPosition; -} - -int RTI2Reader::ReadChains(unsigned int &numChains, RainbowChainO *pData) -{ - if(strncmp(m_pHeader->header, "RTI2", 4) != 0) - { - numChains = 0; - return -1; - } - unsigned char *pNumChains = m_pIndex + (m_pHeader->rti_cplength * 4) + 16; // Pointer into the index containing info about how many numbers are in the first chain prefix - unsigned int i = 0; - unsigned int indexRow = 0; // Current offset into the index - unsigned int curRowPosition = 0; - - while(true) // Fast forward to current position - { - // ALERT: Possible problem here if m_indexrowsizebytes > 1 as pNumChains is a unsigned char. - unsigned int NumChainsInRow = (unsigned int)*(pNumChains + indexRow * m_indexrowsizebytes); - if(m_indexrowsizebytes > 1) - { - //XXX Have to find a solution to this problem - printf( "FATAL: m_indexrowsizebytes > 1: %d\n", m_indexrowsizebytes ); - exit(2); - } - if(i + NumChainsInRow > m_chainPosition) - { - curRowPosition = m_chainPosition - i; - break; // The current position is somewhere within this prefix - } - indexRow++; - i += NumChainsInRow; - } - - uint64 chainrow = 0; // Buffer to store a single read chain - unsigned int chainsProcessed = 0; // Number of chains processed - - // XXX: same problem with unsigned char here. - unsigned int NumChainsInRow = *(pNumChains + indexRow); - while(chainsProcessed < numChains && fread(&chainrow, 1, m_chainsizebytes, m_pFile) == m_chainsizebytes) - { - if(curRowPosition >= NumChainsInRow) - { // Skip to next index row position - indexRow++; - curRowPosition = 0; - NumChainsInRow = *(pNumChains + indexRow); - } - while(NumChainsInRow == 0) // We skip forward until we hit a index with > 0 chains - { - indexRow++; - NumChainsInRow = *(pNumChains + indexRow); - curRowPosition = 0; - } - // Load the starting point from the data - pData[chainsProcessed].nIndexS = chainrow << ( 64 - m_pHeader->rti_startptlength ); - pData[chainsProcessed].nIndexS = pData[chainsProcessed].nIndexS >> ( 64 - m_pHeader->rti_startptlength ); - - // Load the ending point prefix - pData[chainsProcessed].nIndexE = ( m_pHeader->prefixstart + indexRow ) << m_pHeader->rti_endptlength; - // Append the ending point suffix -#if defined(_WIN32) && !defined(__GNUC__) - pData[chainsProcessed].nIndexE |= (chainrow & (0xFFFFFFFFFFFFFFFFI64 >> m_pHeader->rti_cplength)) >> m_pHeader->rti_startptlength; -#else - pData[chainsProcessed].nIndexE |= (chainrow & (0xFFFFFFFFFFFFFFFFllu >> m_pHeader->rti_cplength)) >> m_pHeader->rti_startptlength; -#endif - //pData[chainsProcessed].nCheckPoint = (chainrow >> m_pHeader->rti_startptlength + m_pHeader->rti_endptlength); - curRowPosition++; - chainsProcessed++; - } - numChains = chainsProcessed; - m_chainPosition += numChains; - return 0; -} diff --git a/Client Applications/rcracki_mt/RTI2Reader.h b/Client Applications/rcracki_mt/RTI2Reader.h deleted file mode 100644 index cd36e7d..0000000 --- a/Client Applications/rcracki_mt/RTI2Reader.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * rcracki_mt is a multithreaded implementation and fork of the original - * RainbowCrack - * - * Copyright 2010 Martin Westergaard Jørgensen - * Copyright 2010 Daniël Niggebrugge - * Copyright 2010 James Nobis - * - * 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 . - */ - -#ifndef __RTI2READER_H__ -#define __RTI2READER_H__ - -#include "Public.h" -#include - -#if defined(_WIN32) && !defined(__GNUC__) - #include -#endif - -#include -#include "BaseRTReader.h" - -using namespace std; - -typedef struct -{ - char header[4]; - unsigned char rti_startptlength, rti_endptlength, rti_cplength, rti_index_numchainslength; - uint64 prefixstart; - unsigned int *m_cppos; -} RTI2Header; - -class RTI2Reader : BaseRTReader -{ -private: - FILE *m_pFile; - UINT4 m_chainPosition; - unsigned char *m_pPos, *m_pChainPos; - static RTI2Header *m_pHeader; - unsigned char *m_pIndex; - UINT4 m_chainsizebytes; - UINT4 m_indexrowsizebytes; - - -public: - RTI2Reader(string Filename); - ~RTI2Reader(void); - int ReadChains(unsigned int &numChains, RainbowChainO *pData); - unsigned int GetChainsLeft(); - static RTI2Header *GetHeader() { return m_pHeader; } -}; - - -#endif diff --git a/Client Applications/rcracki_mt/rcracki_mt.sln b/Client Applications/rcracki_mt/rcracki_mt.sln deleted file mode 100644 index 41e564e..0000000 --- a/Client Applications/rcracki_mt/rcracki_mt.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rcracki_mt", "rcracki_mt.vcproj", "{966DA4B4-E13C-449D-9A93-303C6FEA25C4}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {966DA4B4-E13C-449D-9A93-303C6FEA25C4}.Debug|Win32.ActiveCfg = Debug|Win32 - {966DA4B4-E13C-449D-9A93-303C6FEA25C4}.Debug|Win32.Build.0 = Debug|Win32 - {966DA4B4-E13C-449D-9A93-303C6FEA25C4}.Release|Win32.ActiveCfg = Release|Win32 - {966DA4B4-E13C-449D-9A93-303C6FEA25C4}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/Client Applications/rcracki_mt/rcracki_mt.suo b/Client Applications/rcracki_mt/rcracki_mt.suo deleted file mode 100644 index 7159e21..0000000 Binary files a/Client Applications/rcracki_mt/rcracki_mt.suo and /dev/null differ diff --git a/Client Applications/rcracki_mt/rcracki_mt.vcproj b/Client Applications/rcracki_mt/rcracki_mt.vcproj deleted file mode 100644 index b377639..0000000 --- a/Client Applications/rcracki_mt/rcracki_mt.vcproj +++ /dev/null @@ -1,327 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Client Applications/rti2rto/rti2rto.cpp b/Client Applications/rti2rto/rti2rto.cpp index e4ee4fc..086c333 100644 --- a/Client Applications/rti2rto/rti2rto.cpp +++ b/Client Applications/rti2rto/rti2rto.cpp @@ -87,6 +87,7 @@ void ConvertRainbowTable(string sPathName, string sResultFileName, string sType) sFileName = sPathName.substr(nIndex + 1); else sFileName = sPathName; + // Info printf("%s:\n", sFileName.c_str()); FILE *fResult = fopen(sResultFileName.c_str(), "wb"); @@ -98,7 +99,6 @@ void ConvertRainbowTable(string sPathName, string sResultFileName, string sType) static CMemoryPool mp; unsigned int nAllocatedSize; BaseRTReader *reader = NULL; - if(sType == "RTI2") reader = (BaseRTReader*)new RTI2Reader(sFileName); else if(sType == "RTI") @@ -108,15 +108,27 @@ void ConvertRainbowTable(string sPathName, string sResultFileName, string sType) printf("Invalid table type '%s'", sType.c_str()); return ; } - - RainbowChainCP* pChain = (RainbowChainCP*)mp.Allocate(reader->GetChainsLeft() * sizeof(RainbowChainCP), nAllocatedSize); + int size = reader->GetChainsLeft() * sizeof(RainbowChain); +#ifdef _MEMORYDEBUG + printf("Starting allocation of %i bytes\n", size); +#endif + RainbowChain* pChain = (RainbowChain*)mp.Allocate(size, nAllocatedSize); +#ifdef _MEMORYDEBUG + printf("Finished. Got %i bytes\n", nAllocatedSize); +#endif if (pChain != NULL) { - nAllocatedSize = nAllocatedSize / sizeof(RainbowChainCP) * sizeof(RainbowChainCP); // Round to boundary - unsigned int nChains = nAllocatedSize / sizeof(RainbowChainCP); + nAllocatedSize = nAllocatedSize / sizeof(RainbowChain) * sizeof(RainbowChain); // Round to boundary + unsigned int nChains = nAllocatedSize / sizeof(RainbowChain); while(reader->GetChainsLeft() > 0) { +#ifdef _MEMORYDEBUG + printf("Grabbing %i chains from file\n", nChains); +#endif reader->ReadChains(nChains, pChain); +#ifdef _MEMORYDEBUG + printf("Recieved %i chains from file\n", nChains); +#endif for(UINT4 i = 0; i < nChains; i++) { fwrite(&pChain[i], 1, 16, fResult); @@ -181,4 +193,4 @@ int main(int argc, char* argv[]) printf("\n"); } return 0; -} +} \ No newline at end of file diff --git a/Client Applications/rti2rto/rti2rto.sln b/Client Applications/rti2rto/rti2rto.sln deleted file mode 100644 index a8000e5..0000000 --- a/Client Applications/rti2rto/rti2rto.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rti2rto", "rti2rto.vcproj", "{E0FBC06A-C902-4468-A614-CBF9F591AA7C}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E0FBC06A-C902-4468-A614-CBF9F591AA7C}.Debug|Win32.ActiveCfg = Debug|Win32 - {E0FBC06A-C902-4468-A614-CBF9F591AA7C}.Debug|Win32.Build.0 = Debug|Win32 - {E0FBC06A-C902-4468-A614-CBF9F591AA7C}.Release|Win32.ActiveCfg = Release|Win32 - {E0FBC06A-C902-4468-A614-CBF9F591AA7C}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/Client Applications/rti2rto/rti2rto.suo b/Client Applications/rti2rto/rti2rto.suo deleted file mode 100644 index 023dd88..0000000 Binary files a/Client Applications/rti2rto/rti2rto.suo and /dev/null differ diff --git a/Client Applications/rti2rto/rti2rto.vcproj b/Client Applications/rti2rto/rti2rto.vcproj deleted file mode 100644 index 2dc3546..0000000 --- a/Client Applications/rti2rto/rti2rto.vcproj +++ /dev/null @@ -1,243 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Client Applications/win_build/clientapps.sln b/Client Applications/win_build/clientapps.sln new file mode 100644 index 0000000..df922d7 --- /dev/null +++ b/Client Applications/win_build/clientapps.sln @@ -0,0 +1,32 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "converti2", "..\converti2\converti2.vcxproj", "{066FD6F1-5990-47AD-B095-7AE0029CF5AE}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rcracki_mt", "..\rcracki_mt\rcracki_mt.vcxproj", "{966DA4B4-E13C-449D-9A93-303C6FEA25C4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rti2rto", "..\rti2rto\rti2rto.vcxproj", "{E0FBC06A-C902-4468-A614-CBF9F591AA7C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {066FD6F1-5990-47AD-B095-7AE0029CF5AE}.Debug|Win32.ActiveCfg = Debug|Win32 + {066FD6F1-5990-47AD-B095-7AE0029CF5AE}.Debug|Win32.Build.0 = Debug|Win32 + {066FD6F1-5990-47AD-B095-7AE0029CF5AE}.Release|Win32.ActiveCfg = Release|Win32 + {066FD6F1-5990-47AD-B095-7AE0029CF5AE}.Release|Win32.Build.0 = Release|Win32 + {966DA4B4-E13C-449D-9A93-303C6FEA25C4}.Debug|Win32.ActiveCfg = Debug|Win32 + {966DA4B4-E13C-449D-9A93-303C6FEA25C4}.Debug|Win32.Build.0 = Debug|Win32 + {966DA4B4-E13C-449D-9A93-303C6FEA25C4}.Release|Win32.ActiveCfg = Release|Win32 + {966DA4B4-E13C-449D-9A93-303C6FEA25C4}.Release|Win32.Build.0 = Release|Win32 + {E0FBC06A-C902-4468-A614-CBF9F591AA7C}.Debug|Win32.ActiveCfg = Debug|Win32 + {E0FBC06A-C902-4468-A614-CBF9F591AA7C}.Debug|Win32.Build.0 = Debug|Win32 + {E0FBC06A-C902-4468-A614-CBF9F591AA7C}.Release|Win32.ActiveCfg = Release|Win32 + {E0FBC06A-C902-4468-A614-CBF9F591AA7C}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Client Applications/win_build/clientapps.suo b/Client Applications/win_build/clientapps.suo new file mode 100644 index 0000000..6791d07 Binary files /dev/null and b/Client Applications/win_build/clientapps.suo differ diff --git a/Common/rt api/BaseRTReader.h b/Common/rt api/BaseRTReader.h index b94114f..5054d8f 100644 --- a/Common/rt api/BaseRTReader.h +++ b/Common/rt api/BaseRTReader.h @@ -4,16 +4,17 @@ #include "Public.h" #include #ifdef WIN32 -#include + #include #endif using namespace std; class BaseRTReader { public: - virtual int ReadChains(unsigned int &numChains, RainbowChainCP *pData) = 0; - virtual unsigned int GetChainsLeft() = 0; + virtual int ReadChains(UINT4 &numChains, RainbowChain *pData) = 0; + virtual UINT4 GetChainsLeft() = 0; + virtual ~BaseRTReader() { }; }; #endif diff --git a/Common/rt api/MemoryPool.cpp b/Common/rt api/MemoryPool.cpp index 1019b4f..4c8d5c9 100644 --- a/Common/rt api/MemoryPool.cpp +++ b/Common/rt api/MemoryPool.cpp @@ -25,8 +25,10 @@ CMemoryPool::CMemoryPool() CMemoryPool::~CMemoryPool() { - if (m_pMem != NULL) - { + if (m_pMem != NULL) { +#ifdef _MEMORYDEBUG + printf("Freeing %i bytes of memory\n", m_nMemSize); +#endif delete m_pMem; m_pMem = NULL; m_nMemSize = 0; @@ -35,21 +37,23 @@ CMemoryPool::~CMemoryPool() unsigned char* CMemoryPool::Allocate(unsigned int nFileLen, unsigned int& nAllocatedSize) { - if (nFileLen <= m_nMemSize) - { + if (nFileLen <= m_nMemSize) { nAllocatedSize = nFileLen; return m_pMem; } unsigned int nTargetSize; - if (nFileLen < m_nMemMax) + if (nFileLen < m_nMemMax) { nTargetSize = nFileLen; - else + } + else { nTargetSize = m_nMemMax; - + } // Free existing memory - if (m_pMem != NULL) - { + if (m_pMem != NULL) { +#ifdef _MEMORYDEBUG + printf("Freeing %i bytes of memory\n", m_nMemSize); +#endif delete m_pMem; m_pMem = NULL; m_nMemSize = 0; @@ -57,21 +61,29 @@ unsigned char* CMemoryPool::Allocate(unsigned int nFileLen, unsigned int& nAlloc // Allocate new memory //printf("allocating %u bytes memory\n", nTargetSize); -// m_pMem = new unsigned char[nTargetSize]; -m_pMem = new (nothrow) unsigned char[nTargetSize]; -while (m_pMem == NULL && nTargetSize >= 512 * 1024 * 1024 ) -{ - nTargetSize -= 16 * 1024 * 1024; - m_pMem = new (nothrow) unsigned char[nTargetSize]; -} - if (m_pMem != NULL) - { + // m_pMem = new unsigned char[nTargetSize]; +#ifdef _MEMORYDEBUG + printf("Allocating %i bytes of memory - ", nTargetSize); +#endif + + m_pMem = new (nothrow) unsigned char[nTargetSize]; + while (m_pMem == NULL && nTargetSize >= 512 * 1024 * 1024 ) { +#ifdef _MEMORYDEBUG + printf("failed!\n"); + printf("Allocating %i bytes of memory (backup) - ", nTargetSize); +#endif + nTargetSize -= 16 * 1024 * 1024; + m_pMem = new (nothrow) unsigned char[nTargetSize]; + } + if (m_pMem != NULL) { +#ifdef _MEMORYDEBUG + printf("success!\n"); +#endif m_nMemSize = nTargetSize; nAllocatedSize = nTargetSize; return m_pMem; } - else - { + else { nAllocatedSize = 0; return NULL; } diff --git a/Common/rt api/RTI2Reader.cpp b/Common/rt api/RTI2Reader.cpp index 443fd1c..004159c 100644 --- a/Common/rt api/RTI2Reader.cpp +++ b/Common/rt api/RTI2Reader.cpp @@ -23,7 +23,11 @@ RTI2Reader::RTI2Reader(string Filename) unsigned int len = GetFileLen(pFileIndex); fseek(pFileIndex, 0, SEEK_SET); - m_pIndex = new unsigned char[len]; + m_pIndex = new (nothrow) unsigned char[len]; + if(m_pIndex == NULL) { + printf("Error allocating %u MB memory for index in RTI2Reader::RTI2Reader()", len / (1024 * 1024)); + exit(-2); + } if(fread(m_pIndex, 1, len, pFileIndex) != len) { printf("Error while reading index file"); @@ -62,7 +66,7 @@ unsigned int RTI2Reader::GetChainsLeft() return len / m_chainsizebytes - m_chainPosition; } -int RTI2Reader::ReadChains(unsigned int &numChains, RainbowChainCP *pData) +int RTI2Reader::ReadChains(unsigned int &numChains, RainbowChain *pData) { if(strncmp(m_pHeader->header, "RTI2", 4) != 0) { @@ -115,7 +119,7 @@ int RTI2Reader::ReadChains(unsigned int &numChains, RainbowChainCP *pData) pData[chainsProcessed].nIndexE = m_pHeader->prefixstart + indexRow << m_pHeader->rti_endptlength; // Append the ending point suffix pData[chainsProcessed].nIndexE |= (chainrow & (0xFFFFFFFFFFFFFFFF >> m_pHeader->rti_cplength)) >> m_pHeader->rti_startptlength; - pData[chainsProcessed].nCheckPoint = (chainrow >> m_pHeader->rti_startptlength + m_pHeader->rti_endptlength); + //pData[chainsProcessed].nCheckPoint = (chainrow >> m_pHeader->rti_startptlength + m_pHeader->rti_endptlength); curRowPosition++; chainsProcessed++; } diff --git a/Common/rt api/RTI2Reader.h b/Common/rt api/RTI2Reader.h index fb17dd8..0b1f127 100644 --- a/Common/rt api/RTI2Reader.h +++ b/Common/rt api/RTI2Reader.h @@ -33,7 +33,7 @@ private: public: RTI2Reader(string Filename); ~RTI2Reader(void); - int ReadChains(unsigned int &numChains, RainbowChainCP *pData); + int ReadChains(UINT4 &numChains, RainbowChain *pData); unsigned int GetChainsLeft(); static RTI2Header *GetHeader() { return m_pHeader; } }; diff --git a/Common/rt api/RTIReader.cpp b/Common/rt api/RTIReader.cpp index b72dbe2..3134e91 100644 --- a/Common/rt api/RTIReader.cpp +++ b/Common/rt api/RTIReader.cpp @@ -29,11 +29,25 @@ RTIReader::RTIReader(string Filename) printf("index file length mismatch (%u bytes)\n", nIndexFileLen); else { - m_pIndex = new IndexChain[nIndexFileLen / 11]; + if(m_pIndex != NULL) { + delete m_pIndex; + m_pIndex = NULL; + } +#ifdef _MEMORYDEBUG + printf("Allocating %u MB memory for RTIReader::m_pIndex", nIndexFileLen / 11 / (1024 * 1024)); +#endif + m_pIndex = new (nothrow) IndexChain[nIndexFileLen / 11]; + if(m_pIndex == NULL) { + printf("\nFailed allocating %i MB memory.\n", nIndexFileLen / 11 / (1024 * 1024)); + exit(-2); + } +#ifdef _MEMORYDEBUG + printf(" - success!\n"); +#endif memset(m_pIndex, 0x00, sizeof(IndexChain) * (nIndexFileLen / 11)); fseek(pFileIndex, 0, SEEK_SET); int nRead = 0; - int nRows; + UINT4 nRows; for(nRows = 0; (nRows * 11) < nIndexFileLen; nRows++) { if(fread(&m_pIndex[nRows].nPrefix, 5, 1, pFileIndex) != 1) break; @@ -60,7 +74,7 @@ RTIReader::RTIReader(string Filename) } if(m_pIndex[m_nIndexSize - 1].nFirstChain + m_pIndex[m_nIndexSize - 1].nChainCount > nTotalChainCount) // +1 is not needed here { - printf("Corrupted index detected: The index is covering more than the file\n"); + printf("Corrupted index detected: The index is covering more than the file (%i chains of %i chains)\n", m_pIndex[m_nIndexSize - 1].nFirstChain + m_pIndex[m_nIndexSize - 1].nChainCount, nTotalChainCount); exit(-1); } @@ -76,13 +90,13 @@ RTIReader::RTIReader(string Filename) } -int RTIReader::ReadChains(unsigned int &numChains, RainbowChainCP *pData) +int RTIReader::ReadChains(unsigned int &numChains, RainbowChain *pData) { // We HAVE to reset the data to 0x00's or we will get in trouble - memset(pData, 0x00, sizeof(RainbowChainCP) * numChains); + memset(pData, 0x00, sizeof(RainbowChain) * numChains); unsigned int readChains = 0; unsigned int chainsleft = GetChainsLeft(); - for(int i = 0; i < m_nIndexSize; i++) + for(UINT4 i = 0; i < m_nIndexSize; i++) { if(m_chainPosition + readChains > m_pIndex[i].nFirstChain + m_pIndex[i].nChainCount) // We found the matching index continue; @@ -98,15 +112,17 @@ int RTIReader::ReadChains(unsigned int &numChains, RainbowChainCP *pData) } if(readChains == numChains) break; } - if(readChains != numChains) numChains = readChains; // Update how many chains we read + if(readChains != numChains) { + numChains = readChains; // Update how many chains we read + } m_chainPosition += readChains; + printf("Chain position is now %u\n", m_chainPosition); return 0; } -unsigned int RTIReader::GetChainsLeft() -{ - int len = GetFileLen(m_pFile) / 8 - m_chainPosition; - return len; +UINT4 RTIReader::GetChainsLeft() +{ + return (GetFileLen(m_pFile) / 8) - m_chainPosition; } RTIReader::~RTIReader(void) diff --git a/Common/rt api/RTIReader.h b/Common/rt api/RTIReader.h index 6d53e80..775ff0a 100644 --- a/Common/rt api/RTIReader.h +++ b/Common/rt api/RTIReader.h @@ -20,7 +20,7 @@ public: RTIReader(string Filename); ~RTIReader(void); - int ReadChains(unsigned int &numChains, RainbowChainCP *pData); + int ReadChains(unsigned int &numChains, RainbowChain *pData); unsigned int GetChainsLeft(); }; diff --git a/Common/rt api/RTReader.cpp b/Common/rt api/RTReader.cpp index b0de54e..7fec667 100644 --- a/Common/rt api/RTReader.cpp +++ b/Common/rt api/RTReader.cpp @@ -9,14 +9,14 @@ RTReader::~RTReader(void) { } -int RTReader::ReadChains(unsigned int &numChains, RainbowChainCP *pData) +int RTReader::ReadChains(unsigned int &numChains, RainbowChain *pData) { unsigned int numRead = fread(pData, 1, 16 * numChains, m_pFile); numChains = numRead / 16; + m_chainPosition += numChains; return 0; } -unsigned int RTReader::GetChainsLeft() +UINT4 RTReader::GetChainsLeft() { - unsigned int len = GetFileLen(m_pFile); - return len / 16 - m_chainPosition; + return (GetFileLen(m_pFile) / 16) - m_chainPosition; } diff --git a/Common/rt api/RTReader.h b/Common/rt api/RTReader.h index 3d189c3..d78261b 100644 --- a/Common/rt api/RTReader.h +++ b/Common/rt api/RTReader.h @@ -18,7 +18,7 @@ private: public: RTReader(string Filename); ~RTReader(void); - int ReadChains(unsigned int &numChains, RainbowChainCP *pData); + int ReadChains(unsigned int &numChains, RainbowChain *pData); unsigned int GetChainsLeft(); }; diff --git a/Common/rt api/md4.h b/Common/rt api/md4.h index 249ebcd..f83aa1a 100644 --- a/Common/rt api/md4.h +++ b/Common/rt api/md4.h @@ -3,6 +3,9 @@ #include "global.h" + +#define MD4_DIGEST_LENGTH 16 + //Main function void MD4_NEW( unsigned char * buf, int len, unsigned char * pDigest);