GUI Design

From Cryptohaze Project Wiki
Jump to: navigation, search

You... you want to write me a native GUI for a platform? To interface with the code and look all professional? You're awesome!

It needs to do the following, where "needs" is "really would be nice if it did..."

Contents

Interfaces

For all of the settings and options listed, you can simply write some GetValue and SetValue functions. Things will "plug in" to other classes and get/receive data as needed. I'm flexible with options. It should ideally be written in C++, or something that will easily interoperate with C++, as I use an awful lot of STL types.

Multiforcer

The Multiforcer needs two modes: The configuration stage, and the cracking stage. There's no real point in having a point and click GUI if you have to configure it from the command line, right?

Multiforcer Configuration

The Multiforcer configuration interface lets the user set options before cracking begins. The big ones:

  • Hash type. The list of hash types and descriptions can be an interface to other classes - assume you'll get a vector of structs back that contain the hash name, description, min/max length, etc. I can spec this out when needed.
  • Hash file: The file containing the hashes you wish to crack.
  • Salt file: The file containing the salts you wish to crack. Note that this is highly optional, and won't be used except in a few specific hash types.
  • Minimum/Maximum lengths to crack. The values for this will come from the hash type data interface.
  • Charset file: The file containing charset data.
  • Charset single/multi toggle: This determines whether the charset is a uniform charset, or has per-position data that will be used.
  • Output filename for found hashes: Where the found hashes should go.
  • Output filename for unfound hashes: Where hashes that are not found at the end of the run should go.
  • Hex output: If the output should include hexadecimal output as well.
  • GPU Options: Which GPUs to use. This can be done with a "two list" pane - the GUI can query the Multiforcer for the GPU types, and the user can select/deselect them as needed.
  • Some custom GPU options, like block/thread count, which are mostly not used. Consider this "Advanced" settings or something.
  • Network mode: Enable server mode.
  • Network client mode: Point to the server to use. This will disable almost all the other options.

Basically, you're implementing a GUI version of the MFNCommandLineData class. The ability to easily add new options (text, toggle, select, etc) would be awesome.

Multiforcer Execution

This is a GUI version of the MFNDisplayCurses class, and should ideally resemble the command line output in at least some ways.

You'll need the following fields:

  • Hash name
  • Current password length
  • Total hashes loaded
  • Cracked hashes
  • Total time
  • Workunits completed (number, percent)
  • A status scroller that displays the N most recent status messages
  • A field for the cracked passwords to display
  • GPU speeds and network client speeds with a total sum

The rest can be tweaked as needed.

Let me know if you have questions!

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox