我正在制作一个 Windows 95 CD 密钥生成器。它使用随机数生成器来生成 windows 95 CD Key。不是 OEM 密钥。我有问题。这是我的代码:
int main() {
win95cdkey();
return 0;
}
int win95cdkey() {
srand(time(0));
int chunk1 = (rand() % (100 - 998 +1)) + 998;
if(chunk1 = 333, 444, 555, 666, 777, 888, 999) {
chunk1 = 635;
}
int chunk2[7];
chunk2[0, 1, 2, 3, 4, 5, 6] = 6;
while((chunk2[0] + chunk2[1] + chunk2[2] + chunk2[3] + chunk2[4] + chunk2[5] + chunk2[6]) % 7 != 0) {
printf("Brute Forcing...\n");
printf("DEBUG\nchunk2[0]: %d\nchunk2[1]: %d\nchunk2[2]: %d\nchunk2[3]: %d\nchunk2[4]: %d\nchunk2[5]: %d\nchunk2[6]: %d\n",chunk2[0], chunk2[1], chunk2[2], chunk2[3], chunk2[4], chunk2[5], chunk2[6]);
for(int i = 0; i <= 5; i++) {
chunk2[0, 1, 2, 3, 4, 5] = 6;
chunk2[i] = (rand() % (9 - 1 +1)) + 1;
}
chunk2[6] = (rand() % (7 - 1 +1)) + 1;
}
printf("FINAL DEBUG\nchunk2[0]: %d\nchunk2[1]: %d\nchunk2[2]: %d\nchunk2[3]: %d\nchunk2[4]: %d\nchunk2[5]: %d\nchunk2[6]: %d\n",chunk2[0], chunk2[1], chunk2[2], chunk2[3], chunk2[4], chunk2[5], chunk2[6]);
printf("Key: %d-%d%d%d%d%d%d%d",chunk1 , chunk2[0], chunk2[1], chunk2[2], chunk2[3], chunk2[4], chunk2[5], chunk2[6]);
}
当我运行它时,如果您查看它进行的第一次调试,数字是 8312038。AKA,一个巨大的无效数字。我不知道为什么,但是我的 while 循环认为这个数字可以被 7 整除。这是快速连续运行它大约一分钟直到发生这种情况的输出,它有时也会生成有效的密钥:
./a.out
FINAL DEBUG
chunk2[0]: -149060448
chunk2[1]: 32619
chunk2[2]: -1649141939
chunk2[3]: 21858
chunk2[4]: 0
chunk2[5]: 0
chunk2[6]: 6
Key: 635--14906044832619-164914193921858006
这是它生成有效密钥的时间:
/a.out
Brute Forcing...
DEBUG
chunk2[0]: 1493075104
chunk2[1]: 32732
chunk2[2]: 117143373
chunk2[3]: 22053
chunk2[4]: 0
chunk2[5]: 0
chunk2[6]: 6
Brute Forcing...
DEBUG
chunk2[0]: 6
chunk2[1]: 1
chunk2[2]: 1
chunk2[3]: 6
chunk2[4]: 7
chunk2[5]: 8
chunk2[6]: 1
Brute Forcing...
DEBUG
chunk2[0]: 6
chunk2[1]: 8
chunk2[2]: 1
chunk2[3]: 3
chunk2[4]: 9
chunk2[5]: 2
chunk2[6]: 7
Brute Forcing...
DEBUG
chunk2[0]: 1
chunk2[1]: 8
chunk2[2]: 5
chunk2[3]: 7
chunk2[4]: 6
chunk2[5]: 1
chunk2[6]: 2
Brute Forcing...
DEBUG
chunk2[0]: 8
chunk2[1]: 4
chunk2[2]: 1
chunk2[3]: 7
chunk2[4]: 6
chunk2[5]: 3
chunk2[6]: 5
Brute Forcing...
DEBUG
chunk2[0]: 7
chunk2[1]: 7
chunk2[2]: 3
chunk2[3]: 1
chunk2[4]: 7
chunk2[5]: 2
chunk2[6]: 3
Brute Forcing...
DEBUG
chunk2[0]: 4
chunk2[1]: 9
chunk2[2]: 3
chunk2[3]: 8
chunk2[4]: 5
chunk2[5]: 3
chunk2[6]: 5
Brute Forcing...
DEBUG
chunk2[0]: 3
chunk2[1]: 2
chunk2[2]: 1
chunk2[3]: 1
chunk2[4]: 9
chunk2[5]: 6
chunk2[6]: 1
Brute Forcing...
DEBUG
chunk2[0]: 6
chunk2[1]: 4
chunk2[2]: 9
chunk2[3]: 4
chunk2[4]: 5
chunk2[5]: 7
chunk2[6]: 3
FINAL DEBUG
chunk2[0]: 8
chunk2[1]: 8
chunk2[2]: 3
chunk2[3]: 3
chunk2[4]: 5
chunk2[5]: 4
chunk2[6]: 4
Key: 635-8833544
我不知道为什么会这样。我尝试将变量更改为unsigned
/ static
。我也尝试将rand()
函数更改为random()
函数。有人可以帮我吗?
抱歉,如果这不准确,我是编码新手。