Irc it is
I personally prefer constant memory for the char set, and registers for the plaintext/plaintext indexes (somehow they seem to be copied in there), as the char set is not likely to change often during execution of the program, constants seemed a nice place for it to reside;)
At this moment i've set up the V2 of my cracker like this:
shabruter_ati.dll (contains all ati specific functions, called trough a generic interface)
shabruter_nvidia.dll (same for nvidia)
shabruter.exe (interface only)
Using a common interface should allow for hacking up cpu/network support within a week or so.
Maybe we could work out a common API or network interface, so that we can plug in extensions for algorithms and devices into the interface?
So for instance the interface requests if the given extension can support algorithm x, if so, it executes some work, etc.
As my implementation is windows only, i'm trying to look into a way to make this portable to linux
I _really_ dislike the ATI Brook+ SDK tho, as there is no support for arrays, i had to hack up the plaintext generation algorithm to perform its task on dwords (tedious as hell). And there's quite a bit more nasty to that compiler.