Sorry to bump an old topic, but I figured it's better than starting a new one. I have been looking more into this, trying to find out any information I can to help me figure out how this is done.
I decided to install my own local server and use modmanager (an admin plugin) to better monitor clients and their information. I connected to my own server, and right away the modmanager program (BF2CC) reported that my clients cd-key hash was: 60b1fed928c356127af668bfb8c2c30a
This is the pure md5 hash of my full cd key, in all caps, without dashes. However, this is not the punkbuster hash. The punkbuster guid is assigned later on after already connecting. Soon after a client connects, the server console reports that it has computed the guid, and a packet scan shows that the server sends the guid to the client.
So this could mean that you are correct in saying the game might generate the final punkbuster hash based off the pure md5 hash of the cd-key.
Considering that, can would be able to run another brute force for me on all the seeds in 0xffffffff? The cd-key this time would be: 60b1fed928c356127af668bfb8c2c30a
and the final punkbuster hash would be: 85e39828f8347f9fe7030614b735858d
So if you can get a match based off that data, the mystery is solved. If you can't get a match, then you can also try it in all caps, or try only the first X characters of the md5 (like call of duty 4 appears to do by only using the first 16).
Also, after opening pbsv.dll in ollydbg and doing a search for strings, you can find the exact string where the server's console reports "guid computed". Here is a screenshot of that:
Here is what the server console shows shortly after a client connects:
Hopefully some of that information might help you see something I don't Luigi. Thanks for the help!