//Part of Laverna's Brute //Base processing path which path implementations inherit from. //This class declaration is dedicated to Tori :) #ifndef PROCESSINGPATH_H_ #define PROCESSINGPATH_H_ #include #include #include #include #include #include #include #include "MasterThread.h" #include "NTLM.h" #include "KeyGenerator.h" class processingPath { public: processingPath(); ~processingPath(); // The loop that is run to crack a given target hash virtual void operator()() = 0; // Functions necessary for the Director to do its job virtual int getThreadID() = 0; virtual unsigned long long getKeyspaceEnd() = 0; virtual unsigned long long getKeyspaceBegin() = 0; virtual unsigned long long getKeyLocation() = 0; virtual void moveKeyspaceEnd(unsigned long long input) = 0; virtual void moveKeyspaceBegin(unsigned long long input) = 0; virtual void moveKeylocation(unsigned long long input) = 0; // Processing path options static void pushTarget(std::string input); static void setMaxChars(int input); static int getMaxChars(); static int getNumTargets(); protected: static void removeTarget(boost::unordered_map::iterator it); static boost::unordered_map targets; static boost::mutex targetsMutex; static int maxChars; static int numWorkers; char* charset; int charsetLength; int remainingTargets; }; #endif