WinRAR的,注册机
WinRAR的,注册机1.什么是WinRAR?
WinRAR是Windows的试用文件归档实用程序,由win.rar GmbH的Eugene Roshal开发。
它可以以RAR或ZIP文件格式创建和查看存档,并解压缩多种存档文件格式。
WinRAR不是免费软件。如果要使用它,您应该向RARLAB付款,然后您将获得名为“rarreg.key”的许可证文件。
此存储库将告诉您如何生成WinRAR许可证文件“rarreg.key”。
2.如何生成“rarreg.key”?
WinRAR使用签名算法,它是中国SM2数字签名算法的变体,用于处理用户的姓名和他/她获得的许可证类型。将结果保存到“rarreg.key”并添加一些标题信息,然后生成许可证文件。
下面将讨论WinRAR使用的签名算法的详细信息以及WinRAR如何处理用户名和他/她的许可类型。
2.1。签名算法
WinRAR使用ECC(椭圆曲线密码术)进行签名。它使用的椭圆曲线在复合有限域FiniteField上,其中基本有限域的本原多项式为:
并且扩展有限域的本原多项式是:
椭圆曲线方程是:
设G是签名期间使用的基点。确切的值是:
auto G = ecCurve.GetPoint({// X,表示多项式
0x38CC,0x052F,0x2510,0x45AA,//通过GF((2 ^ 15)^ 17),第一项
0x1B89,0x4468,0x4882,0x0D67,//位于前面。
0x4FEB,0x55CE,0x0025,0x4CB7,
0x0CC2,0x59DC,0x289E,0x65E3,
0x56FD
},{// Y,表示多项式
0x31A7,0x65F2,0x18C4,0x3412,//通过GF((2 ^ 15)^ 17),第一项
0x7388,0x54C1,0x539B,0x4A02,//位于前面。
0x4D07,0x12D6,0x7911,0x3B5E,
0x4F0E,0x216F,0x2BF2,0x1974,
0x20DA
});
P是签名期间将使用的顺序。确切的值是:
const uint64_t P = {// P = 0x1026dd85081b82314691ced9bbec30547840e4bf72d8b5e0d258442bbcd31
0x5e0d258442bbcd31,
0x0547840e4bf72d8b,
0x2314691ced9bbec3,
0x0001026dd85081b8
};
2.1.1生成PrivateKey PrivateKey,随机数K和Hash e
要生成PrivateKey PrivateKey,随机数K和散列e,我们需要两个字节数组。我们称它们为in_data和in_private。它们的长度分别为in_data_length和in_private_length。
PrivateKey由in_private生成。
e由in_data生成。
K由in_data和in_private生成。
为了更好地理解,我在这里给出一个案例:
byte in_private = {'P','h','a','n','t','o','m'};
byte in_data = {'L','a','b','y','r','i','n','t','h'};
其中in_private_length为7,in_data_length为9。
2.1.1.1 PrivateKey的生成。
计算in_private的SHA-1摘要。
在我给出的情况下,它应该是:
byte in_private_sha1 [] = {//标准sha-1值为:{
0xc0,0x16,0x3f,0x02,// 0x02,0x3f,0x16,0xc0,
0x78,0x4b,0xac,0x8c,// 0x8c,0xac,0x4b,0x78,
0xaf,0x97,0x0d,0xe6,// 0xe6,0x0d,0x97,0xaf,
0xd9,0x46,0xa4,0x91,// 0x91,0xa4,0x46,0xd9,
0xdc,0xb3,0xbf,0x06 // 0x06,0xbf,0xb3,0xdc
}; //}
注意:与标准SHA-1计算相比,WinRAR反转了每个32位块。
如果in_private为null,则使用默认值:
byte in_private_sha1 [] = {
0x81,0xb7,0x3e,0xeb,
0x29,0x53,0x26,0x50,
0xa3,0xf4,0x5e,0xdc,
0xd5,0xb9,0x47,0x68,
0x4c,0x3b,0xe4,0xcd
};
它可能是RARLAB中使用的一些秘密数据的SHA-1摘要
要获取PrivateKey的每个部分,请执行15轮SHA-1计算:
1.让我的uint32_t从1到15变化。
2.在每一轮中,我们计算一个24字节长字节数组的SHA-1摘要,它是i(little-endian)和src_data_sha1的组合。然后取前两个字节并将它们附加到PrivateKey的末尾。
之后,PrivateKey应该是一个30字节长,其值是:
在我给出的情况下,PrivateKey是:
byte PrivateKey = {// PrivateKey = 0xb7e256217a67f14e3fb4246e889ea18b69b246616e04525e96d515831f2a
0x2a,0x1f,0x83,0x15,//这是一个240位长的整数。
0xd5,0x96,0x5e,0x52,
0x04,0x6e,0x61,0x46,
0xb2,0x69,0x8b,0xa1,
0x9e,0x88,0x6e,0x24,
0xb4,0x3f,0x4e,0xf1,
0x67,0x7a,0x21,0x56,
0xe2,0xb7
};
在我的代码中,我使用uint64_t 数组来存储它。
2.1.1.2 K和e的生成。
在生成PrivateKey期间,存在一个临时的24字节长字节数组。在所有15轮之后,临时字节数组应该是uint32_t(15)(little endian)和src_data_sha1的组合。
在我给出的情况下,它应该是:
byte in_private_sha1_temp [] = {
0x0f,0x00,0x00,0x00,
0xc0,0x16,0x3f,0x02,
0x78,0x4b,0xac,0x8c,
0xaf,0x97,0x0d,0xe6,
0xd9,0x46,0xa4,0x91,
0xdc,0xb3,0xbf,0x06
}
这个需要,收藏了 这个需要,收藏了 分析好详细,楼主费心了 分析的很清楚,楼主很厉害。 这个软件还是很强大的。 好强大呀,可以破解winrar压缩文件的密码吗? shixin 发表于 2018-8-20 06:34
好强大呀,可以破解winrar压缩文件的密码吗?
那是不可能的
谢谢分享,下载收藏。 太牛了,谢谢楼主!