Endermanch/XPKeygen

x64 key generation?

pottzman opened this issue · 13 comments

What is wrong with x64 key generation? I have no issues with x64.

Hello pottzman! We're working in a team with Neo and Coni now. We've figured out that the private keys I've reversed are in fact correct, the only problem with them is that they aren't VLK. They're used to generate Retail and OEM keys and neither of them work with the image I'm testing it on. Note that I extracted the pidgen from that exact volume image.

I find it extremely weird, and for now this is the main issue with x64 key generation.

If the pidgen cane from a VLK image of windows then it shouldn't have BINK resources for Retail or OEM in it.

If the pidgen cane from a VLK image of windows then it shouldn't have BINK resources for Retail or OEM in it.

The problem is that the VLK builds seem to have 2 BINKs in their pidgen DLLs.

We also know the second BINK resource is hardcoded to be OEM

We're stuck trying to figure out what this mysterious second VLK bink might be.

For VLK builds I don’t think the second BINK is used for anything.

According to dpcdll.dll, the second bink (id 0x65) isn't used for anything relevant. You can confirm this with DPCDLL-Viewer, the only entries matching BINKs in pidgen are those for BINK 0x64.

For reference, I tested with en_win_xp_pro_x64_vl.iso

Got it. Glad to have that out of the way.

As for x64, everything after server 2003 uses a new signature algorithm. We have yet to figure out entirely and implement it. We do have the keys.

I implemented an algorithm that generated a working key.

Please try with en_win_xp_pro_x64_vl.iso: R7KWY-RBF3F-R6C8P-RBK36-26YRY

Have not tested confirmation ID yet. Am dumb, I forgot VLK doesn't do conf IDs

R7KWY-RBF3F-R6C8P-RBK36-26YRY

image

I will test with en_windows_xp_professional_x64.iso and share results.

R7KWY-RBF3F-R6C8P-RBK36-26YRY

image

I will test with en_windows_xp_professional_x64.iso and share results.

Confirmed working and the PID shown on system properties is the same!

x64 Retail: FDP9B-YDR92-PXP7H-9FY2Q-YFKJ6

image

x64 Retail: FDP9B-YDR92-PXP7H-9FY2Q-YFKJ6

image

Delightful! Can you aubmit a PR with the changes?

I had a look at the code. It seems there is no change in algo from server 2k3, just different os_family constants, keys, and curve params.

# x64 VLK - 652
# x64 Retail - 306

I will see if I can implement something for this tomorrow. In the meantime, it would be good if DPCDLL.DLL was used to create a table of these constants, as that file is where I found them. I proposed this in UMSKT/UMSKT#15.

@WitherOrNot I think going forward I'll add something similar to that structure you proposed to keys.json