<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="keywords" content="Wolfram, Wathematica, SystemModeler, WolframPlayer, CDFPlayer, keygen, crack, hack"> <title>Универсальный генератор паролей для всех продуктов Wolfram</title> <script> 'use strict'; var hashDescription = { 0x5B29: 'MathLM начиная с версии 10.0' , 0x6587: 'MathLM начиная с версии 10.0' , 0x7F8C: 'MathLM начиная с версии 10.0' , 0x3575: 'MathLM начиная с версии 10.0' , 0x541A: 'MathLM начиная с версии 10.0' , 0x452D: 'MathLM начиная с версии 10.0' , 0x3FD1: 'MathLM начиная с версии 10.0' , 0x140A: 'MathLM начиная с версии 10.0' , 0x29A5: 'MathLM начиная с версии 10.0' , 0x72A4: 'MathLM начиная с версии 10.0' , 0x15BF: 'System Modeler 4.0' , 0x6897: 'System Modeler 4.1, подходит для System Modeler 4.0 - 4.1' , 0x2F33: 'System Modeler 4.2, подходит для System Modeler 4.0 - 4.2' , 0x72C4: 'System Modeler 4.3, подходит для System Modeler 4.0 - 4.3' , 0x8330: 'System Modeler 5.0, подходит для System Modeler 4.0 - 5.0' , 0x81DD: 'System Modeler 5.1, подходит для System Modeler 4.0 - 5.1' , 0x47C5: 'System Modeler 12.0, подходит для System Modeler 4.0 - 12.0' , 0xB4D3: 'System Modeler 12.1, подходит для System Modeler 4.0 - 12.1' , 0xAB0B: 'System Modeler 12.2, подходит для System Modeler 4.0 - 12.2' , 0x6188: 'System Modeler 12.3, подходит для System Modeler 4.0 - 12.3' , 0xBF47: 'System Modeler 13.0, подходит для System Modeler 4.3 - 13.0' , 0x1330: 'System Modeler 13.1, подходит для System Modeler 4.3 - 13.1' , 0xF536: 'System Modeler 13.2, подходит для System Modeler 4.3 - 13.2' , 0xA5CE: 'System Modeler 13.3, подходит для System Modeler 4.3 - 13.3' , 0x755E: 'System Modeler 14.0, подходит для System Modeler 4.3 - 14.0' , 0x1361: 'System Modeler 14.1, подходит для System Modeler 4.3 - 14.1' , 0xDA5E: 'Mathematica 10.0' , 0xC1AE: 'Mathematica 10.1, подходит для Mathematica 10.0 - 10.1' , 0xE3B7: 'Mathematica 10.2, подходит для Mathematica 10.0 - 10.2' , 0x1764E:'Официально этот хэш не использовался, для Mathematica 10.0 - 10.2, но не работает' , 0x80B9: 'Mathematica 10.3, подходит для Mathematica 10.0 - 10.3' , 0x5750: 'Mathematica 10.4, подходит для Mathematica 10.0 - 10.4' , 0x14411:'Официально этот хэш не использовался, для Mathematica 10.0 - 10.4, но не работает' , 0x25DB: 'Mathematica 11.0, подходит для Mathematica 10.0 - 11.0' , 0x42DD: 'Mathematica 11.1, подходит для Mathematica 10.0 - 11.1' , 0x6A91: 'Mathematica 11.2, подходит для Mathematica 10.0 - 11.2' , 0x29F8: 'Mathematica 11.3, подходит для Mathematica 10.0 - 11.3' , 0xA68B: 'Mathematica 12.0, подходит для Mathematica 10.0 - 12.0' , 0xE4A8: 'Mathematica 12.1, подходит для Mathematica 10.0 - 12.1' , 0xA439: 'Официально этот хэш не использовался, подходит для Mathematica 10.0 - 12.0' , 0x2FDB: 'Mathematica 12.2, подходит для Mathematica 10.2 - 12.2' , 0xD227: 'Mathematica 12.3, подходит для Mathematica 10.2 - 12.3' , 0xDB75: 'Mathematica 13.0, подходит для Mathematica 10.2 - 13.0' , 0xEE71: 'Mathematica 13.1, подходит для Mathematica 10.2 - 13.1' , 0x29C2: 'Mathematica 13.2, подходит для Mathematica 10.2 - 13.2' , 0x44F1: 'Mathematica 13.3, подходит для Mathematica 10.2 - 13.3' , 0x8E3C: 'Mathematica 14.0, подходит для Mathematica 12.0 - 14.0' , 0x60F0: 'Mathematica 14.1, подходит для Mathematica 12.0 - 14.1' , 0xEEFE: 'Mathematica и System Modeler 14.2, подходит для Mathematica 14.1 - 14.2 и System Modeler 4.3 - 14.2' , 0x7C91: 'Mathematica и System Modeler 14.3(?), подходит для Mathematica 14.1 - 14.3(?) и System Modeler 4.3 - 14.3(?)' , 0x5770: 'Mathematica и System Modeler 15.0(?), подходит для Mathematica 14.1 - 15.0(?) и System Modeler 4.3 - 15.0(?)' , 0x7C53: 'Mathematica и System Modeler 15.1(?), подходит для Mathematica 14.1 - 15.1(?) и System Modeler 13.0 - 15.1(?)', 0x64EC: 'Mathematica и System Modeler 15.2(?), подходит для Mathematica 14.1 - 15.2(?) и System Modeler 13.0 - 15.2(?)', 0x73EE: 'Mathematica и System Modeler 15.3(?), подходит для Mathematica 14.1 - 15.3(?) и System Modeler 13.0 - 15.3(?)', 0x4209: 'Mathematica и System Modeler 16.0(?), подходит для Mathematica 14.1 - 16.0(?) и System Modeler 13.0 - 16.0(?)', 0x8C72: 'Mathematica и System Modeler 16.1(?), подходит для Mathematica 14.1 - 16.1(?) и System Modeler 13.0 - 16.1(?)', 0xABEB: 'Mathematica и System Modeler 16.2(?), подходит для Mathematica 12.0 - 16.2(?) и System Modeler 14.1 - 16.2(?)', 0x8250: 'Mathematica и System Modeler 16.3(?), подходит для Mathematica 12.0 - 16.3(?) и System Modeler 14.1 - 16.3(?)', 0x8C68: 'Mathematica и System Modeler 17.0(?), подходит для Mathematica 12.0 - 17.0(?) и System Modeler 14.1 - 17.0(?)', 0xE756: 'Mathematica и System Modeler 17.1(?), подходит для Mathematica 12.0 - 17.1(?) и System Modeler 14.1 - 17.1(?)', 0xB4D0: 'Mathematica и System Modeler 17.2(?), подходит для Mathematica 13.0 - 17.2(?) и System Modeler 14.1 - 17.2(?)', 0xCD2D: 'Mathematica и System Modeler 17.3(?), подходит для Mathematica 13.0 - 17.3(?) и System Modeler 14.1 - 17.3(?)', 0x22DD: 'Mathematica и System Modeler 18.0(?), подходит для Mathematica 13.0 - 18.0(?) и System Modeler 14.1 - 18.0(?)', 0x66C0: 'Mathematica и System Modeler 18.1(?), подходит для Mathematica 13.0 - 18.1(?) и System Modeler 14.1 - 18.1(?)', 0xD54F: 'Mathematica и System Modeler 18.2(?), подходит для Mathematica 13.0 - 18.2(?) и System Modeler 14.1 - 18.2(?)', 0xB013: 'Mathematica и System Modeler 18.3(?), подходит для Mathematica 13.0 - 18.3(?) и System Modeler 14.1 - 18.3(?)', 0x5417: 'Mathematica и System Modeler 19.0(?), подходит для Mathematica 13.0 - 19.0(?) и System Modeler 14.1 - 19.0(?)', 0xD1CF: 'Mathematica и System Modeler 19.1(?), подходит для Mathematica 14.1 - 19.1(?) и System Modeler 14.1 - 19.1(?)', 0x609F: 'Mathematica и System Modeler 19.2(?), подходит для Mathematica 14.2 - 19.2(?) и System Modeler 14.2 - 19.2(?)' }; var defaultActivationKey = '3893-9258-K6XJLE'; var licenseType ; function genKeyValStr(mathID, activationKey=defaultActivationKey, maxLicenseProcessesSubprocesses="", licenseType="", licenseExpirationDate="", licenseClass="") { var keyValStr = ""; if (typeof mathID !== "undefined" && mathID.length != 0) { keyValStr = mathID; if (typeof licenseExpirationDate !== "undefined" && licenseExpirationDate .length != 0) {keyValStr += "@" + licenseExpirationDate }; if (typeof maxLicenseProcessesSubprocesses !== "undefined" && maxLicenseProcessesSubprocesses.length != 0) {keyValStr += ":" + maxLicenseProcessesSubprocesses}; if (typeof licenseClass !== "undefined" && licenseClass .length != 0) {keyValStr += "*" + licenseClass }; if (typeof licenseType !== "undefined" && licenseType .length != 0) {keyValStr += "$" + licenseType }; if (typeof activationKey !== "undefined" && activationKey .length != 0) {keyValStr += "&" + activationKey } else {keyValStr += "&" + defaultActivationKey }; }; return keyValStr; }; function keyValStr2mathID(keyValStr) { var mathID = ""; var index0 = 0; var index1 = keyValStr.indexOf("@"); var index2 = keyValStr.indexOf(":"); var index3 = keyValStr.indexOf("*"); var index4 = keyValStr.indexOf("$"); var index5 = keyValStr.indexOf("&"); if (keyValStr.startsWith('We Are Everywhere!')) { index0 = 18; }; if (index1 >= 0) { mathID = keyValStr.substring(index0, index1); } else if (index2 >= 0) { mathID = keyValStr.substring(index0, index2); } else if (index3 >= 0) { mathID = keyValStr.substring(index0, index3); } else if (index4 >= 0) { mathID = keyValStr.substring(index0, index4); } else if (index5 >= 0) { mathID = keyValStr.substring(index0, index5); } else { mathID = keyValStr.substring(index0); }; return mathID; }; function keyValStr2licenseExpirationDate(keyValStr) { var licenseExpirationDate = ""; var index1 = keyValStr.indexOf("@"); var index2 = keyValStr.indexOf(":"); var index3 = keyValStr.indexOf("*"); var index4 = keyValStr.indexOf("$"); var index5 = keyValStr.indexOf("&"); if (index1 >= 0) { if (index2 >= 0) { licenseExpirationDate = keyValStr.substring(index1 + 1, index2); } else if (index3 >= 0) { licenseExpirationDate = keyValStr.substring(index1 + 1, index3); } else if (index4 >= 0) { licenseExpirationDate = keyValStr.substring(index1 + 1, index4); } else if (index5 >= 0) { licenseExpirationDate = keyValStr.substring(index1 + 1, index5); }; }; return licenseExpirationDate; }; function keyValStr2maxLicenseProcessesSubprocesses(keyValStr) { var maxLicenseProcessesSubprocesses = ""; var index2 = keyValStr.indexOf(":"); var index3 = keyValStr.indexOf("*"); var index4 = keyValStr.indexOf("$"); var index5 = keyValStr.indexOf("&"); if (index2 >= 0) { if (index3 >= 0) { maxLicenseProcessesSubprocesses = keyValStr.substring(index2 + 1, index3); } else if (index4 >= 0) { maxLicenseProcessesSubprocesses = keyValStr.substring(index2 + 1, index4); } else if (index5 >= 0) { maxLicenseProcessesSubprocesses = keyValStr.substring(index2 + 1, index5); }; }; return maxLicenseProcessesSubprocesses; }; function keyValStr2licenseClass(keyValStr) { var licenseClass = ""; var index3 = keyValStr.indexOf("*"); var index4 = keyValStr.indexOf("$"); var index5 = keyValStr.indexOf("&"); if (index3 >= 0) { if (index4 >= 0) { licenseClass = keyValStr.substring(index3 + 1, index4); } else if (index5 >= 0) { licenseClass = keyValStr.substring(index3 + 1, index5); }; }; return licenseClass; }; function keyValStr2licenseType(keyValStr) { var licenseType = ""; var index4 = keyValStr.indexOf("$"); var index5 = keyValStr.indexOf("&"); if (index4 >= 0) { if (index5 >= 0) { licenseType = keyValStr.substring(index4 + 1, index5); }; }; return licenseType; }; function keyValStr2ActivationKey(keyValStr) { var activationKey = ""; var index5 = keyValStr.indexOf("&"); if (index5 >= 0) { activationKey = keyValStr.substring(index5 + 1); }; return activationKey; }; function f2(n, byte, c) { for (var bitIndex = 7; bitIndex >= 0; bitIndex--) { var bit = (byte >> bitIndex) & 1; var temp = (n << 1) + bit; if (n & 0x8000) { temp ^= c; }; n = temp; }; return n; }; // inverse of f2: testSalt(f2(x, y, c), y, c) == x function testSalt(n, byte, c) { for (var bitIndex = 0; bitIndex <= 7; bitIndex += 1) { var bit = (byte >> bitIndex) & 1; if (bit + ((n - bit) & ~1) == n) { n = (n - bit) >> 1; } else { n = ((c - bit) ^ n) >> 1; }; }; return n; }; function genPassword(keyValStr, salt) { var licenseExpirationDate = keyValStr2licenseExpirationDate (keyValStr); var maxLicenseProcessesSubprocesses = keyValStr2maxLicenseProcessesSubprocesses(keyValStr); var licenseClass = keyValStr2licenseClass (keyValStr); var licenseType = keyValStr2licenseType (keyValStr); salt = parseInt(salt); var uuid = keyValStr.split('').map(function(x){return x.charCodeAt()}); var salt1 = salt; for (var byteIndex = uuid.length - 1; byteIndex >= 0; byteIndex -= 1) { salt1 = testSalt(salt1, uuid[byteIndex], 0x105C3); }; /* var offset1 = 0; while (testSalt(testSalt(salt1, offset1 & 0xFF, 0x105C3), offset1 >> 8, 0x105C3) !== 0xA5B6) { offset1 ++; if (offset1 >= 0xFFFF) { return ''; } } */ salt1 = salt1 ^ 0xCEDF; salt1 = Math.trunc(((salt1 + 0x72FA) & 0xFFFF) * 99999 / 0xFFFF); var offset1 = '0000' + salt1; offset1 = offset1.substring(offset1.length - 5); var salt2 = parseInt(offset1.substring(0, 2) + offset1.substring(3, 5) + offset1.substring(2, 3)); salt2 = Math.trunc((salt2 / 99999.0) * 0xFFFF, 10) + 1; salt2 = testSalt(testSalt(0, salt2 & 0xFF, 0x1064B), salt2 >> 8, 0x1064B); for (var i = uuid.length - 1; i >= 0; i -= 1) { salt2 = testSalt(salt2, uuid[i], 0x1064B); }; /* var offset2 = 0; while(testSalt(testSalt(salt2, offset2 & 0xFF, 0x1064B), offset2 >> 8, 0x1064B) !== 0xA5B6) { offset2 += 1; if (offset2 >= 0xFFFF) { return ''; } } */ salt2 = salt2 ^ 0xEF22; salt2 = Math.trunc((salt2 & 0xFFFF) * 99999 / 0xFFFF); var offset2 = '0000' + salt2; offset2 = offset2.substring(offset2.length - 5); var password = [ offset2.charAt(3), offset1.charAt(3), offset1.charAt(1), offset1.charAt(0), '-', offset2.charAt(4), offset1.charAt(2), offset2.charAt(0), '-', offset2.charAt(2), offset1.charAt(4), offset2.charAt(1) ].join(''); if ((maxLicenseProcessesSubprocesses.length > 0) || (licenseType.length > 0) || (licenseExpirationDate.length > 0) || (licenseClass.length > 0)) {password += ":" + maxLicenseProcessesSubprocesses}; if ( (licenseType.length > 0) || (licenseExpirationDate.length > 0) || (licenseClass.length > 0)) {password += ":" + licenseType }; if ( (licenseExpirationDate.length > 0) || (licenseClass.length > 0)) {password += ":" + licenseExpirationDate }; if (licenseClass.length > 0) {password += ":" + licenseClass }; return password; }; function password2Hash(mathID, activationKey, password) { var parts = password.split(":"); while (parts.length < 5) { parts.push(""); }; var maxLicenseProcessesSubprocesses = parts[1]; var licenseType = parts[2]; var licenseExpirationDate = parts[3]; var licenseClass = parts[4]; var keyValStr = ''; if (licenseClass) { keyValStr = 'We Are Everywhere!'; }; keyValStr += genKeyValStr(mathID, activationKey, maxLicenseProcessesSubprocesses, licenseType, licenseExpirationDate, licenseClass); var uuid = keyValStr.split('').map(function(x){return x.charCodeAt()}); var offset1 = password.charAt( 3) + password.charAt( 2) + password.charAt( 6) + password.charAt( 1) + password.charAt(10); var offset2 = password.charAt( 7) + password.charAt(11) + password.charAt( 9) + password.charAt( 0) + password.charAt( 5); var salt1 = ((Math.ceil((Number(offset1) * 0xFFFF) / 99999) - 0x72FA) & 0xFFFF) ^ 0xCEDF; var salt2 = Math.ceil((Number(offset2) * 0xFFFF) / 99999) ^ 0xEF22; for (var byteIndex = 0; byteIndex <= uuid.length - 1; byteIndex += 1) { salt2 = f2(salt2, uuid[byteIndex], 0x1064B); }; var salt1_2; salt1_2 = parseInt(offset1.substring(0, 2) + offset1.substring(3, 5) + offset1.substring(2, 3)); salt1_2 = Math.trunc((salt1_2 / 99999.0) * 0xFFFF, 10) + 1; var b1 = f2(salt2, salt1_2 >>> 8 , 0x1064B); // 0x1064B = 67147 var b3 = f2(b1 , salt1_2 & 0xFF, 0x1064B); // 0x1064B = 67147 for (var byteIndex = 0; byteIndex <= uuid.length - 1; byteIndex += 1) { salt1 = f2(salt1, uuid[byteIndex], 0x105C3); }; if (b3 === 0) { return salt1; } else { return null; }; }; function printPass(documentTag, outputInnerHTML, passwordText) { var outputMathLMEl; var passwordMathLMEl; var passwordInnerCodeMathLMEl; outputMathLMEl = document.querySelector(documentTag); outputMathLMEl.innerHTML = outputInnerHTML; outputMathLMEl.append(document.createElement("br")); passwordMathLMEl = document.createElement("pre"); passwordInnerCodeMathLMEl = document.createElement("code"); passwordMathLMEl.append(passwordInnerCodeMathLMEl); passwordInnerCodeMathLMEl.innerText = passwordText; outputMathLMEl.append(passwordMathLMEl); }; function checkboxLicenseTypeRead() { var LicenseTypeNumber; var result; LicenseTypeNumber = 0; if (document.getElementById("checkbox-license-type-bit-00").checked) {LicenseTypeNumber |= (1 << 0)}; if (document.getElementById("checkbox-license-type-bit-01").checked) {LicenseTypeNumber |= (1 << 1)}; if (document.getElementById("checkbox-license-type-bit-02").checked) {LicenseTypeNumber |= (1 << 2)}; if (document.getElementById("checkbox-license-type-bit-03").checked) {LicenseTypeNumber |= (1 << 3)}; if (document.getElementById("checkbox-license-type-bit-04").checked) {LicenseTypeNumber |= (1 << 4)}; if (document.getElementById("checkbox-license-type-bit-05").checked) {LicenseTypeNumber |= (1 << 5)}; if (document.getElementById("checkbox-license-type-bit-06").checked) {LicenseTypeNumber |= (1 << 6)}; if (document.getElementById("checkbox-license-type-bit-07").checked) {LicenseTypeNumber |= (1 << 7)}; if (document.getElementById("checkbox-license-type-bit-08").checked) {LicenseTypeNumber |= (1 << 8)}; if (document.getElementById("checkbox-license-type-bit-09").checked) {LicenseTypeNumber |= (1 << 9)}; if (document.getElementById("checkbox-license-type-bit-10").checked) {LicenseTypeNumber |= (1 << 10)}; if (document.getElementById("checkbox-license-type-bit-11").checked) {LicenseTypeNumber |= (1 << 11)}; if (document.getElementById("checkbox-license-type-bit-12").checked) {LicenseTypeNumber |= (1 << 12)}; if (document.getElementById("checkbox-license-type-bit-13").checked) {LicenseTypeNumber |= (1 << 13)}; if (document.getElementById("checkbox-license-type-bit-14").checked) {LicenseTypeNumber |= (1 << 14)}; if (document.getElementById("checkbox-license-type-bit-15").checked) {LicenseTypeNumber |= (1 << 15)}; if (document.getElementById("checkbox-license-type-bit-16").checked) {LicenseTypeNumber |= (1 << 16)}; if (document.getElementById("checkbox-license-type-bit-17").checked) {LicenseTypeNumber |= (1 << 17)}; if (document.getElementById("checkbox-license-type-bit-18").checked) {LicenseTypeNumber |= (1 << 18)}; if (document.getElementById("checkbox-license-type-bit-19").checked) {LicenseTypeNumber |= (1 << 19)}; if (document.getElementById("checkbox-license-type-bit-20").checked) {LicenseTypeNumber |= (1 << 20)}; if (document.getElementById("checkbox-license-type-bit-21").checked) {LicenseTypeNumber |= (1 << 21)}; if (document.getElementById("checkbox-license-type-bit-22").checked) {LicenseTypeNumber |= (1 << 22)}; if (document.getElementById("checkbox-license-type-bit-23").checked) {LicenseTypeNumber |= (1 << 23)}; if (document.getElementById("checkbox-license-type-bit-24").checked) {LicenseTypeNumber |= (1 << 24)}; if (document.getElementById("checkbox-license-type-bit-25").checked) {LicenseTypeNumber |= (1 << 25)}; if (document.getElementById("checkbox-license-type-bit-26").checked) {LicenseTypeNumber |= (1 << 26)}; if (document.getElementById("checkbox-license-type-bit-27").checked) {LicenseTypeNumber |= (1 << 27)}; if (document.getElementById("checkbox-license-type-bit-28").checked) {LicenseTypeNumber |= (1 << 28)}; if (document.getElementById("checkbox-license-type-bit-29").checked) {LicenseTypeNumber |= (1 << 29)}; if (document.getElementById("checkbox-license-type-bit-30").checked) {LicenseTypeNumber |= (1 << 30)}; if (document.getElementById("checkbox-license-type-bit-31").checked) {LicenseTypeNumber |= (1 << 31)}; LicenseTypeNumber = LicenseTypeNumber >>> 0; // Чтобы преобразовать в 32-битное беззнаковое представление if (LicenseTypeNumber == 0) {result = "";} else {result = LicenseTypeNumber.toString(16).toUpperCase()}; return result; }; function inputMathidChange(value) { var mathID = value; // Извлекаем первые два символа var firstTwo = mathID.slice(0, 2); // Регулярное выражение для проверки формата MachineID var regex = /^(\d{4})-(\d{5})-(\d{5})$/; // Проверка формата строки var match = mathID.match(regex); // Проверяем, что это число и не является NaN if (!isNaN(firstTwo) && firstTwo.length === 2) { var machineType = parseInt(firstTwo, 10); switch (machineType) { case 31: document.getElementById("mathid-label").textContent = ' MachineID (MathID): (MachineType=31 - MacOSX-ARM64) '; break; case 33: document.getElementById("mathid-label").textContent = ' MachineID (MathID): (MachineType=33 - Windows-ARM64) '; break; case 51: document.getElementById("mathid-label").textContent = ' MachineID (MathID): (MachineType=51 - MacOSX-x86-64) '; break; case 58: document.getElementById("mathid-label").textContent = ' MachineID (MathID): (MachineType=58 - Windows-ARM) '; break; case 61: document.getElementById("mathid-label").textContent = ' MachineID (MathID): (MachineType=61 - Windows) '; break; case 62: document.getElementById("mathid-label").textContent = ' MachineID (MathID): (MachineType=62 - Windows-x86-64) '; break; case 65: document.getElementById("mathid-label").textContent = ' MachineID (MathID): (MachineType=65 - Linux) '; break; default: document.getElementById("mathid-label").textContent = ' MachineID (MathID): '; break; }; } else { document.getElementById("mathid-label").textContent = ' MachineID (MathID): '; }; if (match) { // Преобразование отдельных частей строки в числа var A = parseInt(match[1].substring(0, 2)); // Первое число (dd) var B = parseInt(match[1].substring(2) + match[2] + match[3].substring(0, 3)); // Второе число (ddddddddd) var C = parseInt(match[3].substring(3)); // Третье число (dd) // Вычисление выражения (((B >> 2) & 0x3FFFFFFF) + 43 * A + 29 * (B & 3)) % 97 var calculatedC = ((B >>> 2) + 43 * A + 29 * (B & 3)) % 97; if (mathID != "") { if (match != null) { if (B <= 4294967295 ) { document.getElementById("mathid-label").textContent += ' (UniqueNumber='+B+')'; if (calculatedC == C) { document.getElementById("mathid-label").textContent += ' (checksum='+C+')'; } else { document.getElementById("mathid-label").textContent += ' (checksum='+C+', а ожидалось '+calculatedC+')'; }; } else { document.getElementById("mathid-label").textContent += ' (UniqueNumber='+B+' превышает максимально возможное значение 4294967295)'; }; }; }; }; }; function checkboxLicenseTypeClick() { var licenseType = checkboxLicenseTypeRead(); document.getElementById("div-license-type").textContent = " Тип лицензии (License Type): " + licenseType; }; function checkPass(event) { event.preventDefault(); var mathID = document.querySelector('#mathid' ).value; var activationKey = document.querySelector('#activation-key').value; var password = document.querySelector('#password-str' ).value; var hash = password2Hash(mathID, activationKey, password) ; var outputEl = document.querySelector('#output'); var outputDivEl; outputEl.innerHTML = 'MachineID (MathID): ' + mathID + '<br>' + 'Ключ активации (Activation Key): ' + activationKey + '<br>' + 'Пароль (password): ' + password; if (hash != null) { // не null и не undefined var parts = password.split(":"); while (parts.length < 5) { parts.push(""); }; var maxLicenseProcessesSubprocesses = parts[1]; var licenseType = parts[2]; var licenseExpirationDate = parts[3]; var licenseClass = parts[4]; var hashDescr; var keyValStr = ''; if (licenseClass) { keyValStr = 'We Are Everywhere!'; }; keyValStr += genKeyValStr(mathID, activationKey, maxLicenseProcessesSubprocesses, licenseType, licenseExpirationDate, licenseClass); // outputEl.innerHTML = 'MachineID (MathID): ' + mathID + '<br>' + 'Ключ активации (Activation Key): ' + activationKey + '<br>' + 'Пароль (password): ' + password + '<br>' + 'Пароль правильный.'; outputDivEl = document.createElement("div"); outputDivEl.innerHTML = 'Пароль правильный.'; outputEl.append(outputDivEl); if (maxLicenseProcessesSubprocesses) { outputDivEl = document.createElement("div"); outputDivEl.innerHTML = 'Максимальное количество процессов и субпроцессов (Max License Processes и Max License Subprocesses):<br><pre style="overflow: auto;"><code>' + maxLicenseProcessesSubprocesses + '</code></pre>'; outputEl.append(outputDivEl); }; if (licenseType) { var str = 'Тип лицензии (License Type):<pre style="overflow: auto;"><code>' + licenseType.toString(16).toUpperCase() + '</code></pre>'; str += 'В типе лицензии установлены следующие биты:<br><pre style="overflow: auto;"><code>'; if (Number('0x' + licenseType) & (1 << 0)) { str += 'бит  0, битовая маска        1 — неизвестно<br>'; }; if (Number('0x' + licenseType) & (1 << 1)) { str += 'бит  1, битовая маска        2 — редакция Product Trial<br>'; }; if (Number('0x' + licenseType) & (1 << 2)) { str += 'бит  2, битовая маска        4 — редакция Student Edition<br>'; }; if (Number('0x' + licenseType) & (1 << 3)) { str += 'бит  3, битовая маска        8 — редакция Site License<br>'; }; if (Number('0x' + licenseType) & (1 << 4)) { str += 'бит  4, битовая маска       10 — Player<br>'; }; if (Number('0x' + licenseType) & (1 << 5)) { str += 'бит  5, битовая маска       20 — продукт Wolfram Player<br>'; }; if (Number('0x' + licenseType) & (1 << 6)) { str += 'бит  6, битовая маска       40 — продукт Wolfram Player Pro<br>'; }; if (Number('0x' + licenseType) & (1 << 7)) { str += 'бит  7, битовая маска       80 — неизвестно<br>'; }; if (Number('0x' + licenseType) & (1 << 8)) { str += 'бит  8, битовая маска      100 — неизвестно<br>'; }; if (Number('0x' + licenseType) & (1 << 9)) { str += 'бит  9, битовая маска      200 — неизвестно<br>'; }; if (Number('0x' + licenseType) & (1 << 10)) { str += 'бит 10, битовая маска      400 — неизвестно<br>'; }; if (Number('0x' + licenseType) & (1 << 11)) { str += 'бит 11, битовая маска      800 — редакция Home Edition<br>'; }; if (Number('0x' + licenseType) & (1 << 12)) { str += 'бит 12, битовая маска     1000 — редакция Enterprise Edition<br>'; }; if (Number('0x' + licenseType) & (1 << 13)) { str += 'бит 13, битовая маска     2000 — фича EnterpriseSigning<br>'; }; if (Number('0x' + licenseType) & (1 << 14)) { str += 'бит 14, битовая маска     4000 — неизвестно<br>'; }; if (Number('0x' + licenseType) & (1 << 15)) { str += 'бит 15, битовая маска     8000 — неизвестно<br>'; }; if (Number('0x' + licenseType) & (1 << 16)) { str += 'бит 16, битовая маска    10000 — неизвестно<br>'; }; if (Number('0x' + licenseType) & (1 << 17)) { str += 'бит 17, битовая маска    20000 — неизвестно<br>'; }; if (Number('0x' + licenseType) & (1 << 18)) { str += 'бит 18, битовая маска    40000 — неизвестно<br>'; }; if (Number('0x' + licenseType) & (1 << 19)) { str += 'бит 19, битовая маска    80000 — фича AltExpirationPolicy<br>'; }; if (Number('0x' + licenseType) & (1 << 20)) { str += 'бит 20, битовая маска   100000 — продукт Wolfram|Alpha Notebook Edition<br>'; }; if (Number('0x' + licenseType) & (1 << 21)) { str += 'бит 21, битовая маска   200000 — продукт Wolfram|One<br>'; }; if (Number('0x' + licenseType) & (1 << 22)) { str += 'бит 22, битовая маска   400000 — продукт Wolfram Finance Platform<br>'; }; if (Number('0x' + licenseType) & (1 << 23)) { str += 'бит 23, битовая маска   800000 — продукт Mathematica<br>'; }; if (Number('0x' + licenseType) & (1 << 24)) { str += 'бит 24, битовая маска  1000000 — продукт Wolfram Programming Lab<br>'; }; if (Number('0x' + licenseType) & (1 << 25)) { str += 'бит 25, битовая маска  2000000 — неизвестно<br>'; }; if (Number('0x' + licenseType) & (1 << 26)) { str += 'бит 26, битовая маска  4000000 — неизвестно<br>'; }; if (Number('0x' + licenseType) & (1 << 27)) { str += 'бит 27, битовая маска  8000000 — неизвестно<br>'; }; if (Number('0x' + licenseType) & (1 << 28)) { str += 'бит 28, битовая маска 10000000 — неизвестно<br>'; }; if (Number('0x' + licenseType) & (1 << 29)) { str += 'бит 29, битовая маска 20000000 — фича AutoRenewingSubscription<br>'; }; if (Number('0x' + licenseType) & (1 << 30)) { str += 'бит 30, битовая маска 40000000 — продукт System Modeler<br>'; }; if (Number('0x' + licenseType) & (1 << 31)) { str += 'бит 31, битовая маска 80000000 — неизвестно<br>'; }; str += '</code></pre>'; outputDivEl = document.createElement("div"); outputDivEl.innerHTML = str; outputEl.append(outputDivEl); }; if (licenseExpirationDate) { outputDivEl = document.createElement("div"); outputDivEl.innerHTML = 'Дата истечения срока действия лицензии (License Expiration Date) в формате ГГГГММДД:<br><pre style="overflow: auto;"><code>' + licenseExpirationDate + '</code></pre>'; outputEl.append(outputDivEl); }; if (licenseClass) { outputDivEl = document.createElement("div"); outputDivEl.innerHTML = 'Сетевая лицензия (для MathLM). Класс лицензии (License Class):<br><pre style="overflow: auto;"><code>' + licenseClass + '</code></pre>'; outputEl.append(outputDivEl); }; outputDivEl = document.createElement("div"); outputDivEl.innerHTML = 'Строка для генерации пароля:<br><pre style="overflow: auto;"><code>' + keyValStr + '</code></pre>'; outputEl.append(outputDivEl); outputDivEl = document.createElement("div"); hashDescr = hashDescription[hash]; if (!(typeof hashDescr === "string" && hashDescr.length > 0)) { hashDescr = 'Неизвестный хэш'; }; outputDivEl.innerHTML = 'Хэш:<br><pre style="overflow: auto;"><code>0x' + hash.toString(16).toUpperCase() + ' = ' + hash + '<br>' + hashDescr + '</code></pre>'; outputEl.append(outputDivEl); } else { // Плохой пароль (password). // outputEl.innerHTML = 'Плохой пароль (password).'; outputDivEl = document.createElement("div"); outputDivEl.innerHTML = 'Пароль (password) неправильный.'; outputEl.append(outputDivEl); }; }; // function checkPass(event) function genActKey(event) { event.preventDefault(); var digits = "0123456789"; var letters = "23456789AEGHJKLPQRSTUVWXY"; var actKey = defaultActivationKey; function getRandomChar(charset) { return charset[Math.floor(Math.random() * charset.length)]; }; function generatePart(length, charset) { return Array.from({ length }, () => getRandomChar(charset)).join(""); }; var part1 = generatePart(4, digits); var part2 = generatePart(4, digits); var part3 = generatePart(6, letters); actKey = `${part1}-${part2}-${part3}`; document.getElementById("activation-key").value = actKey; }; function genPass(event) { event.preventDefault(); var formEl = document.querySelector('#form'); if(formEl.reportValidity && !formEl.reportValidity()) { return; } var weAreEverywhere = document.querySelector('#we-are-everywhere' ).checked; var mathID = document.querySelector('#mathid' ).value ; var activationKey = document.querySelector('#activation-key' ).value ; var maxLicenseProcessesSubprocesses = document.querySelector('#max-license-processes-subprocesses').value ; //var licenseType = document.querySelector('#license-type' ).value ; var licenseType = checkboxLicenseTypeRead(); var licenseExpirationDate = document.querySelector('#license-expiration-date' ).value ; var licenseClass = document.querySelector('#license-class' ).value ; var keyValStr = document.querySelector('#key-val-str' ).value ; var salt = document.querySelector('#salt' ).value ; var password = "" ; if ((keyValStr == "") && (mathID == "")) { alert("Укажите Machine ID (Math ID) или строку для генерации пароля"); } else if ((keyValStr == "") && !(mathID == "") && (weAreEverywhere == true) && (licenseClass == "")) { alert("Снимите флажок \"We Are Everywhere!\" или укажите класс лицензии (License Class) или укажите строку для генерации пароля") } else if ((keyValStr == "") && !(mathID == "") && !(weAreEverywhere == true) && !(licenseClass == "")) { alert("Установите флажок \"We Are Everywhere!\" или очистите поле класса лицензии (License Class) или укажите строку для генерации пароля") } else { if (keyValStr == "") { if (weAreEverywhere == true) { keyValStr = 'We Are Everywhere!' + genKeyValStr(mathID, activationKey, maxLicenseProcessesSubprocesses, licenseType, licenseExpirationDate, licenseClass); } else { keyValStr = genKeyValStr(mathID, activationKey, maxLicenseProcessesSubprocesses, licenseType, licenseExpirationDate, licenseClass); }; }; password = genPassword(keyValStr, salt); printPass( '#output', 'Пароль (password) для строки<br>\"' + keyValStr + '\":', password ); }; }; // function genPass(event) // При загрузке страницы document.addEventListener("DOMContentLoaded", function() { licenseType = checkboxLicenseTypeRead(); document.getElementById("div-license-type").textContent = " Тип лицензии (License Type): " + licenseType; }); </script> <style> /** * Forced light theme version */ :root { --background-body: #fff; --background: #efefef; --background-alt: #f7f7f7; --selection: #9e9e9e; --text-main: #363636; --text-bright: #000; --text-muted: #70777f; --links: #0076d1; --focus: #0096bfab; --border: #dbdbdb; --code: #000; --animation-duration: 0.1s; --button-hover: #ddd; --scrollbar-thumb: rgb(213, 213, 213); --scrollbar-thumb-hover: rgb(196, 196, 196); --form-placeholder: #949494; --form-text: #000; --variable: #39a33c; --highlight: #ff0; --select-arrow: url("data:image/svg+xml;charset=utf-8,%3C?xml version='1.0' encoding='utf-8'?%3E %3Csvg version='1.1' height='62.5' width='116.9' fill='%23161f27'%3E %3Cpath d='M115.3,1.6 C113.7,0 111.1,0 109.5,1.6 L58.5,52.7 L7.4,1.6 C5.8,0 3.2,0 1.6,1.6 C0,3.2 0,5.8 1.6,7.4 L55.5,61.3 C56.3,62.1 57.3,62.5 58.4,62.5 C59.4,62.5 60.5,62.1 61.3,61.3 L115.2,7.4 C116.9,5.8 116.9,3.2 115.3,1.6Z'/%3E %3C/svg%3E"); } html { scrollbar-color: rgb(213, 213, 213) #fff; scrollbar-color: var(--scrollbar-thumb) var(--background-body); scrollbar-width: thin; } body { font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 'Segoe UI Emoji', 'Apple Color Emoji', 'Noto Color Emoji', sans-serif; line-height: 1.4; max-width: 800px; margin: 20px auto; padding: 0 10px; word-wrap: break-word; color: #363636; color: var(--text-main); background: #fff; background: var(--background-body); text-rendering: optimizeLegibility; } button { transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, box-shadow 0.1s linear, transform 0.1s ease; transition: background-color var(--animation-duration) linear, border-color var(--animation-duration) linear, color var(--animation-duration) linear, box-shadow var(--animation-duration) linear, transform var(--animation-duration) ease; } input { transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, box-shadow 0.1s linear, transform 0.1s ease; transition: background-color var(--animation-duration) linear, border-color var(--animation-duration) linear, color var(--animation-duration) linear, box-shadow var(--animation-duration) linear, transform var(--animation-duration) ease; } textarea { transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, box-shadow 0.1s linear, transform 0.1s ease; transition: background-color var(--animation-duration) linear, border-color var(--animation-duration) linear, color var(--animation-duration) linear, box-shadow var(--animation-duration) linear, transform var(--animation-duration) ease; } h1 { font-size: 2.2em; margin-top: 0; } h1, h2, h3, h4, h5, h6 { margin-bottom: 12px; margin-top: 24px; } h1 { color: #000; color: var(--text-bright); } h2 { color: #000; color: var(--text-bright); } h3 { color: #000; color: var(--text-bright); } h4 { color: #000; color: var(--text-bright); } h5 { color: #000; color: var(--text-bright); } h6 { color: #000; color: var(--text-bright); } strong { color: #000; color: var(--text-bright); } h1, h2, h3, h4, h5, h6, b, strong, th { font-weight: 600; } q::before { content: none; } q::after { content: none; } blockquote { border-left: 4px solid #0096bfab; border-left: 4px solid var(--focus); margin: 1.5em 0; padding: 0.5em 1em; font-style: italic; } q { border-left: 4px solid #0096bfab; border-left: 4px solid var(--focus); margin: 1.5em 0; padding: 0.5em 1em; font-style: italic; } blockquote > footer { font-style: normal; border: 0; } blockquote cite { font-style: normal; } address { font-style: normal; } a[href^='mailto\:']::before { content: '\1F4E7 '; } a[href^='tel\:']::before { content: '\1F4DE '; } a[href^='sms\:']::before { content: '\1F4AC '; } mark { background-color: #ff0; background-color: var(--highlight); border-radius: 2px; padding: 0 2px 0 2px; color: #000; } button, select, input[type='submit'], input[type='button'], input[type='checkbox'], input[type='range'], input[type='radio'] { cursor: pointer; } input:not([type='checkbox']):not([type='radio']), select { display: block; } input { color: #000; color: var(--form-text); background-color: #efefef; background-color: var(--background); font-family: inherit; font-size: inherit; margin-right: 6px; margin-bottom: 6px; padding: 10px; border: none; border-radius: 6px; outline: none; } button { color: #000; color: var(--form-text); background-color: #efefef; background-color: var(--background); font-family: inherit; font-size: inherit; margin-right: 6px; margin-bottom: 6px; padding: 10px; border: none; border-radius: 6px; outline: none; } textarea { color: #000; color: var(--form-text); background-color: #efefef; background-color: var(--background); font-family: inherit; font-size: inherit; margin-right: 6px; margin-bottom: 6px; padding: 10px; border: none; border-radius: 6px; outline: none; } select { color: #000; color: var(--form-text); background-color: #efefef; background-color: var(--background); font-family: inherit; font-size: inherit; margin-right: 6px; margin-bottom: 6px; padding: 10px; border: none; border-radius: 6px; outline: none; } input[type='checkbox'], input[type='radio'] { height: 1em; width: 1em; } input[type='radio'] { border-radius: 100%; } input { vertical-align: top; } label { vertical-align: middle; margin-bottom: 4px; display: inline-block; } input:not([type='checkbox']):not([type='radio']), input[type='range'], select, button, textarea { -webkit-appearance: none; } textarea { display: block; margin-right: 0; box-sizing: border-box; resize: vertical; } textarea:not([cols]) { width: 100%; } textarea:not([rows]) { min-height: 40px; height: 140px; } select { background: #efefef url("data:image/svg+xml;charset=utf-8,%3C?xml version='1.0' encoding='utf-8'?%3E %3Csvg version='1.1' height='62.5' width='116.9' fill='%23161f27'%3E %3Cpath d='M115.3,1.6 C113.7,0 111.1,0 109.5,1.6 L58.5,52.7 L7.4,1.6 C5.8,0 3.2,0 1.6,1.6 C0,3.2 0,5.8 1.6,7.4 L55.5,61.3 C56.3,62.1 57.3,62.5 58.4,62.5 C59.4,62.5 60.5,62.1 61.3,61.3 L115.2,7.4 C116.9,5.8 116.9,3.2 115.3,1.6Z'/%3E %3C/svg%3E") calc(100% - 12px) 50% / 12px no-repeat; background: var(--background) var(--select-arrow) calc(100% - 12px) 50% / 12px no-repeat; padding-right: 35px; } select::-ms-expand { display: none; } select[multiple] { padding-right: 10px; background-image: none; overflow-y: auto; } button, input[type='submit'], input[type='button'] { padding-right: 30px; padding-left: 30px; } button:hover { background: #ddd; background: var(--button-hover); } input[type='submit']:hover { background: #ddd; background: var(--button-hover); } input[type='button']:hover { background: #ddd; background: var(--button-hover); } input:focus { box-shadow: 0 0 0 2px #0096bfab; box-shadow: 0 0 0 2px var(--focus); } select:focus { box-shadow: 0 0 0 2px #0096bfab; box-shadow: 0 0 0 2px var(--focus); } button:focus { box-shadow: 0 0 0 2px #0096bfab; box-shadow: 0 0 0 2px var(--focus); } textarea:focus { box-shadow: 0 0 0 2px #0096bfab; box-shadow: 0 0 0 2px var(--focus); } input[type='checkbox']:active, input[type='radio']:active, input[type='submit']:active, input[type='button']:active, input[type='range']:active, button:active { transform: translateY(2px); } input:disabled, select:disabled, button:disabled, textarea:disabled { cursor: not-allowed; opacity: 0.5; } ::-moz-placeholder { color: #949494; color: var(--form-placeholder); } :-ms-input-placeholder { color: #949494; color: var(--form-placeholder); } ::-ms-input-placeholder { color: #949494; color: var(--form-placeholder); } ::placeholder { color: #949494; color: var(--form-placeholder); } fieldset { border: 1px #0096bfab solid; border: 1px var(--focus) solid; border-radius: 6px; margin: 0; margin-bottom: 12px; padding: 10px; } legend { font-size: 0.9em; font-weight: 600; } input[type='range'] { margin: 10px 0; padding: 10px 0; background: transparent; } input[type='range']:focus { outline: none; } input[type='range']::-webkit-slider-runnable-track { width: 100%; height: 9.5px; -webkit-transition: 0.2s; transition: 0.2s; background: #efefef; background: var(--background); border-radius: 3px; } input[type='range']::-webkit-slider-thumb { box-shadow: 0 1px 1px #000, 0 0 1px #0d0d0d; height: 20px; width: 20px; border-radius: 50%; background: #dbdbdb; background: var(--border); -webkit-appearance: none; margin-top: -7px; } input[type='range']:focus::-webkit-slider-runnable-track { background: #efefef; background: var(--background); } input[type='range']::-moz-range-track { width: 100%; height: 9.5px; -moz-transition: 0.2s; transition: 0.2s; background: #efefef; background: var(--background); border-radius: 3px; } input[type='range']::-moz-range-thumb { box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; height: 20px; width: 20px; border-radius: 50%; background: #dbdbdb; background: var(--border); } input[type='range']::-ms-track { width: 100%; height: 9.5px; background: transparent; border-color: transparent; border-width: 16px 0; color: transparent; } input[type='range']::-ms-fill-lower { background: #efefef; background: var(--background); border: 0.2px solid #010101; border-radius: 3px; box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; } input[type='range']::-ms-fill-upper { background: #efefef; background: var(--background); border: 0.2px solid #010101; border-radius: 3px; box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; } input[type='range']::-ms-thumb { box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; border: 1px solid #000; height: 20px; width: 20px; border-radius: 50%; background: #dbdbdb; background: var(--border); } input[type='range']:focus::-ms-fill-lower { background: #efefef; background: var(--background); } input[type='range']:focus::-ms-fill-upper { background: #efefef; background: var(--background); } a { text-decoration: none; color: #0076d1; color: var(--links); } a:hover { text-decoration: underline; } code { background: #efefef; background: var(--background); color: #000; color: var(--code); padding: 2.5px 5px; border-radius: 6px; font-size: 1em; } samp { background: #efefef; background: var(--background); color: #000; color: var(--code); padding: 2.5px 5px; border-radius: 6px; font-size: 1em; } time { background: #efefef; background: var(--background); color: #000; color: var(--code); padding: 2.5px 5px; border-radius: 6px; font-size: 1em; } pre > code { padding: 10px; display: block; overflow-x: auto; } var { color: #39a33c; color: var(--variable); font-style: normal; font-family: monospace; } kbd { background: #efefef; background: var(--background); border: 1px solid #dbdbdb; border: 1px solid var(--border); border-radius: 2px; color: #363636; color: var(--text-main); padding: 2px 4px 2px 4px; } img, video { max-width: 100%; height: auto; } hr { border: none; border-top: 1px solid #dbdbdb; border-top: 1px solid var(--border); } table { border-collapse: collapse; margin-bottom: 10px; width: 100%; table-layout: fixed; } table caption { text-align: left; } td, th { padding: 6px; text-align: left; vertical-align: top; word-wrap: break-word; } thead { border-bottom: 1px solid #dbdbdb; border-bottom: 1px solid var(--border); } tfoot { border-top: 1px solid #dbdbdb; border-top: 1px solid var(--border); } tbody tr:nth-child(even) { background-color: #f7f7f7; background-color: var(--background-alt); } ::-webkit-scrollbar { height: 10px; width: 10px; } ::-webkit-scrollbar-track { background: #efefef; background: var(--background); border-radius: 6px; } ::-webkit-scrollbar-thumb { background: rgb(213, 213, 213); background: var(--scrollbar-thumb); border-radius: 6px; } ::-webkit-scrollbar-thumb:hover { background: rgb(196, 196, 196); background: var(--scrollbar-thumb-hover); } ::-moz-selection { background-color: #9e9e9e; background-color: var(--selection); color: #000; color: var(--text-bright); } ::selection { background-color: #9e9e9e; background-color: var(--selection); color: #000; color: var(--text-bright); } details { display: flex; flex-direction: column; align-items: flex-start; background-color: #f7f7f7; background-color: var(--background-alt); padding: 10px 10px 0; margin: 1em 0; border-radius: 6px; overflow: hidden; } details[open] { padding: 10px; } details > :last-child { margin-bottom: 0; } details[open] summary { margin-bottom: 10px; } summary { display: list-item; background-color: #efefef; background-color: var(--background); padding: 10px; margin: -10px -10px 0; cursor: pointer; outline: none; } summary:hover, summary:focus { text-decoration: underline; } details > :not(summary) { margin-top: 0; } summary::-webkit-details-marker { color: #363636; color: var(--text-main); } footer { border-top: 1px solid #dbdbdb; border-top: 1px solid var(--border); padding-top: 10px; color: #70777f; color: var(--text-muted); } body > footer { margin-top: 40px; } @media print { body, pre, code, summary, details, button, input, textarea { background-color: #fff; } button, input, textarea { border: 1px solid #000; } body, h1, h2, h3, h4, h5, h6, pre, code, button, input, textarea, footer, summary, strong { color: #000; } summary::marker { color: #000; } summary::-webkit-details-marker { color: #000; } tbody tr:nth-child(even) { background-color: #f2f2f2; } a { color: #00f; text-decoration: underline; } } /*# sourceMappingURL=light.css.map */ input[type="text"] { width: calc(100% - 20px); } </style> </head> <body> <h1>Универсальный генератор паролей для всех продуктов Wolfram</h1> <ol> <li> Скачайте и запустите установку нужного вам приложения с <a href="https://www%2Ewolfram%2Ecom/download-center/" target="_blank"><b>Wolfram Download Center</b></a> (там можно свободно для любой платформы с документацией или без скачать Wolfram и System Modeler).<br> Если вам зачем-то вдруг нужна бесплатная пробная версия см. также:<br> — <a href="https://www%2Ewolfram%2Ecom/mathematica/trial/" target="_blank"><b>Mathematica Trial</b></a>,<br> — <a href="https://account%2Ewolfram%2Ecom/access/wolfram-one/trial" target="_blank"><b>Wolfram|One Trial</b></a>,<br> — <a href="https://account%2Ewolfram%2Ecom/access/wolfram-alpha-notebook-edition/trial" target="_blank"><b>Wolfram|Alpha Notebook Edition Trial</b></a>,<br> — <a href="https://www%2Ewolfram%2Ecom/system-modeler/trial/" target="_blank"><b>System Modeler Trial</b></a>.<br> <br> </li> <li>На экране активации продукта нажмите кнопку <b>Other ways to activate</b>, а затем <b>Manual Activation</b> или <b>Activate offline through activation key and requested password</b>.<br> <br> </li> <li>Ниже введите полученный <b>MachineID</b>, он же <b>MathID</b> (в формате nnnn-nnnnn-nnnnn), сгенерируйте случайный или введите любой <b>Activation Key</b> (в формате nnnn-nnnn-xxxxxx) (достаточно просто оставить Activation Key по умолчанию), введите <b>хэш</b>, а также для <b>Wolfram Player</b>, <b>System Modeler</b> и продукта под названием <b>Wolfram</b> (который начиная с версии <b>14.1</b> заменяет одновременно 4 продукта: Mathematica, Wolfram Finance Platform, Wolfram|One и Wolfram|Alpha Notebook Edition) обязательно укажите <b>тип лицензии (License Type — см. ниже)</b>, для приложения сетевого менеджера лицензий <b>MathLM</b> кроме того установите чекбокс (флажок) "We Are Everywhere!" и укажите <b>класс лицензии (License Class — см. ниже)</b> и, если нужно, укажите также другие данные.<br> <br> Список <b>хэшей</b> (номера версий больше 14.2 — условные):<br> <br> 0x609F — Mathematica и System Modeler 19.2(?), подходит для Mathematica 14.2 – 19.2(?) и System Modeler 14.2 – 19.2(?)<br> <br> 0xD1CF — Mathematica и System Modeler 19.1(?), подходит для Mathematica 14.1 – 19.1(?) и System Modeler 14.1 – 19.1(?)<br> <br> 0x5417 — Mathematica и System Modeler 19.0(?), подходит для Mathematica 13.0 – 19.0(?) и System Modeler 14.1 – 19.0(?)<br> 0xB013 — Mathematica и System Modeler 18.3(?), подходит для Mathematica 13.0 – 18.3(?) и System Modeler 14.1 – 18.3(?)<br> 0xD54F — Mathematica и System Modeler 18.2(?), подходит для Mathematica 13.0 – 18.2(?) и System Modeler 14.1 – 18.2(?)<br> 0x66C0 — Mathematica и System Modeler 18.1(?), подходит для Mathematica 13.0 – 18.1(?) и System Modeler 14.1 – 18.1(?)<br> 0x22DD — Mathematica и System Modeler 18.0(?), подходит для Mathematica 13.0 – 18.0(?) и System Modeler 14.1 – 18.0(?)<br> 0xCD2D — Mathematica и System Modeler 17.3(?), подходит для Mathematica 13.0 – 17.3(?) и System Modeler 14.1 – 17.3(?)<br> 0xB4D0 — Mathematica и System Modeler 17.2(?), подходит для Mathematica 13.0 – 17.2(?) и System Modeler 14.1 – 17.2(?)<br> 0xE756 — Mathematica и System Modeler 17.1(?), подходит для Mathematica 12.0 – 17.1(?) и System Modeler 14.1 – 17.1(?)<br> 0x8C68 — Mathematica и System Modeler 17.0(?), подходит для Mathematica 12.0 – 17.0(?) и System Modeler 14.1 – 17.0(?)<br> 0x8250 — Mathematica и System Modeler 16.3(?), подходит для Mathematica 12.0 – 16.3(?) и System Modeler 14.1 – 16.3(?)<br> 0xABEB — Mathematica и System Modeler 16.2(?), подходит для Mathematica 12.0 – 16.2(?) и System Modeler 14.1 – 16.2(?)<br> <br> 0x8C72 — Mathematica и System Modeler 16.1(?), подходит для Mathematica 14.1 – 16.1(?) и System Modeler 13.0 – 16.1(?)<br> 0x4209 — Mathematica и System Modeler 16.0(?), подходит для Mathematica 14.1 – 16.0(?) и System Modeler 13.0 – 16.0(?)<br> 0x73EE — Mathematica и System Modeler 15.3(?), подходит для Mathematica 14.1 – 15.3(?) и System Modeler 13.0 – 15.3(?)<br> 0x64EC — Mathematica и System Modeler 15.2(?), подходит для Mathematica 14.1 – 15.2(?) и System Modeler 13.0 – 15.2(?)<br> 0x7C53 — Mathematica и System Modeler 15.1(?), подходит для Mathematica 14.1 – 15.1(?) и System Modeler 13.0 – 15.1(?)<br> 0x5770 — Mathematica и System Modeler 15.0(?), подходит для Mathematica 14.1 – 15.0(?) и System Modeler 4.3 – 15.0(?)<br> 0x7C91 — Mathematica и System Modeler 14.3(?), подходит для Mathematica 14.1 – 14.3(?) и System Modeler 4.3 – 14.3(?)<br> 0xEEFE — Mathematica и System Modeler 14.2, подходит для Mathematica 14.1 – 14.2 и System Modeler 4.3 – 14.2 <br> <br> 0x60F0 — Mathematica 14.1, подходит для Mathematica 12.0 – 14.1 <br> 0x8E3C — Mathematica 14.0, подходит для Mathematica 12.0 – 14.0 <br> 0x44F1 — Mathematica 13.3, подходит для Mathematica 10.2 – 13.3 <br> 0x29C2 — Mathematica 13.2, подходит для Mathematica 10.2 – 13.2 <br> 0xEE71 — Mathematica 13.1, подходит для Mathematica 10.2 – 13.1 <br> 0xDB75 — Mathematica 13.0, подходит для Mathematica 10.2 – 13.0 <br> 0xD227 — Mathematica 12.3, подходит для Mathematica 10.2 – 12.3 <br> 0x2FDB — Mathematica 12.2, подходит для Mathematica 10.2 – 12.2 <br> 0xA439 — Официально этот хэш не использовался, подходит для Mathematica 10.0 – 12.0 <br> 0xE4A8 — Mathematica 12.1, подходит для Mathematica 10.0 – 12.1 <br> 0xA68B — Mathematica 12.0, подходит для Mathematica 10.0 – 12.0 <br> 0x29F8 — Mathematica 11.3, подходит для Mathematica 10.0 – 11.3 <br> 0x6A91 — Mathematica 11.2, подходит для Mathematica 10.0 – 11.2 <br> 0x42DD — Mathematica 11.1, подходит для Mathematica 10.0 – 11.1 <br> 0x25DB — Mathematica 11.0, подходит для Mathematica 10.0 – 11.0 <br> 0x14411 — Официально этот хэш не использовался, для Mathematica 10.0 – 10.4, но не работает <br> 0x5750 — Mathematica 10.4, подходит для Mathematica 10.0 – 10.4 <br> 0x80B9 — Mathematica 10.3, подходит для Mathematica 10.0 – 10.3 <br> 0x1764E — Официально этот хэш не использовался, для Mathematica 10.0 – 10.2, но не работает <br> 0xE3B7 — Mathematica 10.2, подходит для Mathematica 10.0 – 10.2 <br> 0xC1AE — Mathematica 10.1, подходит для Mathematica 10.0 – 10.1 <br> 0xDA5E — Mathematica 10.0, <br> <br> 0x1361 — System Modeler 14.1, подходит для System Modeler 4.3 – 14.1 <br> 0x755E — System Modeler 14.0, подходит для System Modeler 4.3 – 14.0 <br> 0xA5CE — System Modeler 13.3, подходит для System Modeler 4.3 – 13.3 <br> 0xF536 — System Modeler 13.2, подходит для System Modeler 4.3 – 13.2 <br> 0x1330 — System Modeler 13.1, подходит для System Modeler 4.3 – 13.1 <br> 0xBF47 — System Modeler 13.0, подходит для System Modeler 4.3 – 13.0 <br> 0x6188 — System Modeler 12.3, подходит для System Modeler 4.0 – 12.3 <br> 0xAB0B — System Modeler 12.2, подходит для System Modeler 4.0 – 12.2 <br> 0xB4D3 — System Modeler 12.1, подходит для System Modeler 4.0 – 12.1 <br> 0x47C5 — System Modeler 12.0, подходит для System Modeler 4.0 – 12.0 <br> 0x81DD — System Modeler 5.1, подходит для System Modeler 4.0 – 5.1 <br> 0x8330 — System Modeler 5.0, подходит для System Modeler 4.0 – 5.0 <br> 0x72C4 — System Modeler 4.3, подходит для System Modeler 4.0 – 4.3 <br> 0x2F33 — System Modeler 4.2, подходит для System Modeler 4.0 – 4.2 <br> 0x6897 — System Modeler 4.1, подходит для System Modeler 4.0 – 4.1 <br> 0x15BF — System Modeler 4.0 <br> <br> 0x72A4 — MathLM начиная с версии 10.0 <br> 0x29A5 — MathLM начиная с версии 10.0 <br> 0x140A — MathLM начиная с версии 10.0 <br> 0x3FD1 — MathLM начиная с версии 10.0 <br> 0x452D — MathLM начиная с версии 10.0 <br> 0x541A — MathLM начиная с версии 10.0 <br> 0x3575 — MathLM начиная с версии 10.0 <br> 0x7F8C — MathLM начиная с версии 10.0 <br> 0x6587 — MathLM начиная с версии 10.0 <br> 0x5B29 — MathLM начиная с версии 10.0 <br> <br> Таким образом, начиная с версии 14.1 у Mathematica и System Modeler общий список хэшей, кроме одного, а с версии 14.2 вообще общий список хэшей.<br> Все хэши от Mathematica и System Modeler подходят также и для соответствующих версий MathLM.<br> Хэши от Mathematica используются также и для Wolfram Player, Wolfram Finance Platform, Wolfram|Alpha Notebook Edition, Wolfram|One, Wolfram Desktop, Wolfram Engine, WolframScript.<br> Списки хэшей приведены в порядке, обратном тому, который зашит в программы, поэтому более долговечные хэши приведены здесь в начале списков.<br> Причина, по которой вместо одного хэша имеется целый список хэшей и этот список меняется в каждой версии, в том, что предполагается, что официально выдаваемая лицензия будет пригодна для текущей версии, не будет работать на следующей (в следующей версии этот хэш исключается из списка), но пригодна также и для нескольких предыдущих версий. Для этого в EXE и DLL файлы приложений и были заранее зашиты хэши от будущих версий. Данный кейген позволяет использовать не только хэши от текущей версии, но и хэши от будущих версий, но которые пригодны и для текущей версии.<br> <br> Для справки, выдаваемый приложением <b>MachineID</b> (он же <b>MathID</b>) имеет формат:<br> aabb-bbbbb-bbbcc<br> где:<br> aa - цифры числа MachineType (в пределах вроде бы от 10 до 79), которое зависит от архитектуры:<br> 58 - Windows-ARM,<br> 33 - Windows-ARM64,<br> 62 - Windows-x86-64 (AMD64 (K8), Intel 64),<br> 61 - Windows (unknown),<br> 65 - Linux,<br> 31 - MacOSX-ARM64,<br> 51 - MacOSX-x86-64.<br> bbbbbbbbbb - цифры числа UniqueNumber (32-битное число без знака, т. е. должно быть не больше 4294967295), которое привязано к разделу с операционной системой, для его вычисления:<br> - в Linux используется /etc/machine-id (для systemd) либо /var/lib/dbus/machine-id, который генерируется случайным образом при загрузке операционной системы (если его нет),<br> - в Mac OS X вроде бы используется MAC адрес,<br> - в Windows до версии 14.0 включительно используется серийный номер тома Windows, печатается командой vol (vol %SystemDrive%), поменять можно утилитой volumeid от SysInternals,<br> а начиная с версии 14.1 в Windows в первую очередь используется переменная реестра<br> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid<br> (см. командой reg query HKLM\SOFTWARE\Microsoft\Cryptography /v MachineGuid), поэтому в версии 14.1 MachineID отличается от предыдущих версий.<br> cc - цифры числа checksum, которое вычисляется по формуле:<br> checksum = ((UniqueNumber >> 2) + 43 * MachineType + 29 * (UniqueNumber & 3)) % 97<br> Узнать MachineID в приложении Mathematica (или в Wolfram, или в WolframScript) можно, используя встроенный символ <a href="https://reference%2Ewolfram%2Ecom/language/ref/$MachineID.html" target="_blank"><b>$MachineID</b></a>. Под Linux, чтобы узнать MachineID, также вроде бы можно запустить mathinfo.<br> Хранится MachineID в файле паролей, путь к которому можно узнать в Mathematica или WolframScript, используя встроенный символ <a href="https://reference%2Ewolfram%2Ecom/language/ref/$PasswordFile.html" target="_blank"><b>$PasswordFile</b></a>.<br> <br> Для генерации пароля для менеджера лицензий MathLM установите флажок <b>"We Are Everywhere!"</b> и укажите класс лицензии (<b>License Class</b>): CA или CX или CB или CC или CM (для остальных приложений этот флажок не надо ставить и не нужно указывать класс лицензии). Платформы Windows, Mac OS X и некоторые Linux относятся к классу A. Платформы серверного класса относятся к классу B. Для одного и того же Activation Key можно задать по одной лицензии каждого класса.<br> Пароли классов A, X, B, C предназначены для процессов Mathematica (MathKernel, Mathematica, Sub MathKernel, Sub Mathematica).<br> Пароли класса A действительны для клиентов класса A.<br> Пароли класса X действительны для клиентов классов A, X.<br> Пароли класса B действительны для клиентов классов A, X, B.<br> Пароли класса C действительны для клиентов классов A, X, B, C.<br> Пароли класса M предназачены для процессов System Modeler (Modeling Center, Simulation Center, Session Manager).<br> Поэтому скорее всего для MathLM достаточно 2 лицензий: класса C (для клиентов процессов Mathematica) и класса M (для клиентов процессов System Modeler).<br> Вероятно, клиентом запрашивается сетевая лицензия определённого класса: M — от System Modeler, и A, X, B, C — от остальных продуктов, и сервером лицензий MathLM выдаётся первая попавшаяся лицензия, которая подходит для запрашиваемого класса, поэтому не получится, чтобы от одного и того же сервера лицензий MathLM можно было получить лицензии, например, и для Mathematica и для Wolfram Player Pro, например, если запрашивается лицензия класса A, а первая попавшаяся лицензия — это лицензия класса C для Wolfram Player Pro (т. е. с типом лицензии 40), то вместо Mathematica мы получим в результате Wolfram Player Pro.<br> <br> Лимиты для количества процессов и субпроцессов Mathematica и System Modeler (<b>Max License Processes и Max License Subprocesses</b>) задаются в виде нескольких неотрицательных целых десятичных чисел, перечисленных через запятую без пробелов. Если оставить строку пустой, то количество процессов и субпроцессов будет неограничено.<br> Для Mathematica можно указать до 4 чисел: первое число — максимальное количество процессов (т. е. управляющих процессов) ядра (MathKernel), второе число — максимальное количество процессов Front End (Mathematica), если указать только одно число, то второе будет считаться равным первому, третье и четвёртое числа — максимальное число субпроцессов (т. е. вычислительных процессов) соответственно для ядра (MathKernel) и Front End (Mathematica). Если указать только 2 числа, то 3-е и 4-е будут считаться в 4 раза большими, чем соответственно 1-е и 2-е число.<br> Для System Modeler можно указать до 3 чисел: первое число — максимальное количество процессов Modeling Center, второе число — максимальное количество процессов Simulation Center, третье число — максимальное количество процессов Session Manager, если не указать второе число, то оно будет считаться равным первому, если не указать третье число, то оно будет считаться равным первому.<br> Числа 9999 и более означают бесконечность, т. е. неограниченное количество, т. е. 9999,9999,9999,9999 для Mathematica и 9999,9999,9999 для System Modeler дадут тот же эффект, что и пустая строка.<br> <br> Тип лицензии (<b>License Type</b>) — шестнадцатеричное число (без префикса 0x).<br> Для Mathematica и т. п. версий 14.0 и ниже если его не указать, то будет лицензия Professional, для приложения Wolfram начиная с версии 14.1 нужно указать значение, включающее одну из битовых масок: 100000 (Wolfram|Alpha Notebook Edition) или 200000 (Wolfram|One) или 400000 (Finance Platform) или 800000 (Mathematica) или 1000000 (Wolfram Programming Lab) или 20 (Player) или 40 (Player Pro).<br> Для приложения System Modeler начиная с версии 14.2 нужно обязательно указать значение, включающее битовую маску 40000000.<br> Значения имеют отдельные биты (двоичные разряды) числа, поэтому тип лицензии можно получить, сложив побитово (с помощью битовой операция ИЛИ) соответствующие шестнадцатеричные битовые маски:<br> — бит  0 (битовая маска        1) — неизвестно что означает этот бит, но он установлен в бесплатных триальных лицензиях,<br> — бит  1 (битовая маска        2) — редакция Product Trial, также нужно задать дату истечения срока действия лицензии (License Expiration Date) в формате ГГГГММДД,<br> — бит  2 (битовая маска        4) — редакция Student Edition,<br> — бит  3 (битовая маска        8) — редакция Site License,<br> — бит  4 (битовая маска       10) — Player, если установить этот бит, то Mathematica версии 13 и ниже будет как Wolfram Player, в версии 14.0 и выше этот бит вроде бы игнорируется,<br> — бит  5 (битовая маска       20) — продукт Wolfram Player, если установить этот бит, то лицензию можно использовать для Wolfram Player, а Mathematica и Wolfram начиная с версии 14.1 с такой лицензией тоже будут как Wolfram Player,<br> — бит  6 (битовая маска       40) — продукт Wolfram Player Pro, если установить этот бит, то лицензию можно использовать для Wolfram Player — он превратится в Wolfram Player Pro, а Mathematica и Wolfram начиная с версии 14.1 с такой лицензией будут как Wolfram Player Pro — можно вычислять, но не редактировать,<br> — бит 11 (битовая маска      800) — редакция Home Edition,<br> — бит 12 (битовая маска     1000) — редакция Enterprise Edition, если установить этот бит, то Mathematica версии 13.3 и ниже с такой лицензией в окнах "About" и "Welcome Screen" пишет что она "Enterprise Edition", но реально вроде бы этот бит больше ни на что не влияет, в версии 14 и выше этот бит вроде бы игнорируется,<br> — бит 13 (битовая маска     2000) — фича EnterpriseSigning — если установить этот бит, то Mathematica и Wolfram начиная с версии 14.1 с такой лицензией при выборе пункта меню "Preview for Wolfram Player" открывает Preview c "WOLFRAM Player Pro" и "Enterprise CDF Preview", а также позволяет записывать CDF файлы в формате EnterpriseCDF — CDFDeploy с опцией "Target" -> "PlayerPro" по умолчанию, для записи FreeCDF нужно будет явно указывать "Target" -> "CDFPlayer",<br> — бит 19 (битовая маска    80000) — фича AltExpirationPolicy, неизвестно, что означает, лицензию с установленным этим битом (а также с установленным битом для фичи AutoRenewingSubscription) выдают например для бесплатного Wolfram Engine — с нулевым лимитом для Front End Mathematica, а также с заданной датой истечения срока действия лицензии, эта лицезия у Wolfram Engine вроде бы автоматически обновляется,<br> — бит 20 (битовая маска   100000) — продукт Wolfram|Alpha Notebook Edition приложения Wolfram начиная с версии 14.1, в каждой лицензии для приложения Wolfram (начиная с версии 14.1) должен быть указан один и только один продукт,<br> — бит 21 (битовая маска   200000) — продукт Wolfram|One приложения Wolfram начиная с версии 14.1, в каждой лицензии для приложения Wolfram (начиная с версии 14.1) должен быть указан один и только один продукт,<br> — бит 22 (битовая маска   400000) — продукт Wolfram Finance Platform приложения Wolfram начиная с версии 14.1, в каждой лицензии для приложения Wolfram (начиная с версии 14.1) должен быть указан один и только один продукт,<br> — бит 23 (битовая маска   800000) — продукт Mathematica приложения Wolfram начиная с версии 14.1, в каждой лицензии для приложения Wolfram (начиная с версии 14.1) должен быть указан один и только один продукт,<br> — бит 24 (битовая маска  1000000) — продукт Wolfram Programming Lab приложения Wolfram начиная с версии 14.1, но вообще-то Wolfram Programming Lab — это устаревший продукт, все функции и возможности которого доступны в Wolfram|One, в каждой лицензии для приложения Wolfram (начиная с версия 14.1) должен быть указан один и только один продукт,<br> — бит 29 (битовая маска 20000000) — фича AutoRenewingSubscription, неизвестно, что означает, лицензию с установленным этим битом (а также с установленным битом для фичи AutoRenewingSubscription) выдают например для бесплатного Wolfram Engine — с нулевым лимитом для Front End Mathematica, а также с заданной датой истечения срока действия лицензии, эта лицезия у Wolfram Engine вроде бы автоматически обновляется,<br> — бит 30 (битовая маска 40000000) — продукт System Modeler, с версии 14.2 для приложения System Modeler этот бит обязателен и не должны быть установлены биты других продуктов,<br> — бит 31 (битовая маска 80000000) — неизвестно что означает этот бит, но если его установить, то приложение не принимает лицензию.<br> Просто поставьте внизу галочки, соответствующие выбранным битам.<br> Для System Modeler до версии 14.1 включительно все биты License Type, кроме битов, соответствующих битовым маскам 2 и 80000000, вроде бы ни на что не влияют, с версии 14.2 для приложения System Modeler обязателен бит 30 (битовая маска 40000000) и не должны быть установлены биты других продуктов.<br> Для Wolfram Player последних версий если не будет ни бита с битовой маской 20 ни бита с битовой маской 40, Player лицензию не примет, а также не примет, если будет бит с битовой маской 100000 или битовой маской 80000000.<br> Таким образом, для лицензии для продукта Mathematica и лицензии для приложения MathLM для Mathematica (т. е. лицензий классов A, X, B, C) лучше всего будет тип лицензии 803001, для приложения Wolfram Player — 41, для приложения System Modeler — 40000001.<br> <br> Дата истечения срока действия лицензии (<b>License Expiration Date</b>) задаётся числом в формате ГГГГММДД. Если не указать, то лицензия будет неограниченной во времени.<br> <br> Вместо всех параметров (кроме хэша) можно указать <b>строку для генерации пароля</b> (если строка не пустая, все параметры кроме хэша игнорируются):<br> — для приложения MathLM в формате:<br> <pre style="overflow: auto;">We Are Everywhere!MathID@LicenseExpirationDate:MaxLicenseProcessesSubprocesses*LicenseClass$LicenseType&ActivationKey</pre> — для приложений Mathematica (и ему подобных), Wolfram (начиная с версия 14.1), Wolfram Player и System Modeler в формате:<br> <pre style="overflow: auto;">MathID@LicenseExpirationDate:MaxLicenseProcessesSubprocesses$LicenseType&ActivationKey</pre> Ненужные параметры вместе с соответствующим символом перед ними указывать не нужно.<br> <br> <b>Примеры</b> для MathID=6202-24738-25165 и Activation Key=3893-9258-K6XJLE:<br> — для Mathematica Enterprise, тип лицензии 803001:<br> строка: 6202-24738-25165$803001&3893-9258-K6XJLE<br> С хэшем 0x609F (начиная с версии 14.2) пароль будет:<br> 1139-772-958::803001<br> — для Wolfram Finance Platform Enterprise, тип лицензии 403001:<br> строка: 6202-24738-25165$403001&3893-9258-K6XJLE<br> С хэшем 0x609F (начиная с версии 14.2) пароль будет:<br> 8849-663-854::403001<br> — для Wolfram|One Enterprise, тип лицензии 203001:<br> строка: 6202-24738-25165$203001&3893-9258-K6XJLE<br> С хэшем 0x609F (начиная с версии 14.2) пароль будет:<br> 2849-634-696::203001<br> — для Wolfram|Alpha Notebook Edition Enterprise, тип лицензии 103001:<br> строка: 6202-24738-25165$103001&3893-9258-K6XJLE<br> С хэшем 0x609F (начиная с версии 14.2) пароль будет:<br> 9449-028-317::103001<br> — для Wolfram Player Pro, тип лицензии 41:<br> строка: 6202-24738-25165$41&3893-9258-K6XJLE<br> С хэшем 0x609F (начиная с версии 14.2) пароль будет:<br> 8060-768-258::41<br> — для System Modeler, тип лицензии 40000001:<br> строка: 6202-24738-25165$40000001&3893-9258-K6XJLE<br> С хэшем 0x609F (начиная с версии 14.2) пароль будет:<br> 7958-340-838::40000001<br> — для MathLM для Mathematica Enterprise, тип лицензии 803001, класс лицензии C:<br> строка: We Are Everywhere!6202-24738-25165*CC$803001&3893-9258-K6XJLE<br> С хэшем 0x72A4 (начиная с версии 10.0) пароль будет:<br> 4558-527-625::803001::CC<br> — для MathLM для System Modeler, тип лицензии 40000001, класс лицензии M:<br> строка: We Are Everywhere!6202-24738-25165*CM$40000001&3893-9258-K6XJLE<br> С хэшем 0x72A4 (начиная с версии 10.0) пароль будет:<br> 5313-035-777::40000001::CM<br> <br> </li> <li>Нажмите <b>Сгенерировать пароль (password)</b>.<br> <br> </li> <li>В окне активации продукта введите ваш <b>Activation Key</b> и сгенерированный <b>Password</b> чтобы активировать продукт.<br> <br> </li> <li>Игнорируйте запрос <b>Register</b>.<br> <br> </li> <li>Для приложения под названием <b>Wolfram</b> (<b>начиная с версии 14.1</b>) можно добавить регистрации для разных продуктов (например, для Mathematica, Wolfram Finance Platform, Wolfram|One, Wolfram|Alpha Notebook Edition, Wolfram Player Pro, Wolfram Player, Wolfram Programming Lab) и переключаться между ними при помощи <a href="https://reference%2Ewolfram%2Ecom/language/tutorial/UsingTheWolframProductSwitcher.html" target="_blank"><b>Переключателя продуктов Wolfram</b></a> — смотрите <b>Настройки</b> (меню <b>Edit > Preferences</b> или кнопка <b>Открыть настройки...</b>), вкладка <b>Product</b>.<br> </li> </ol> Если у Вас уже есть пароль (password), то Вы можете его проверить, введя здесь MachineID (MathID), Ключ активации (Activation Key), Пароль (password) и нажав кнопку <b>Проверить пароль (password)</b>.<br> <br> Если у вас есть легальная лицензия для Mathematica, Wolfram Finance Platform, Wolfram|One, Wolfram|Alpha Notebook Edition или для Wolfram Player Pro версии не меньше 14.2, то гипотетически можно использовать Ключ активации (Activation Key) и Пароль (password) от неё для активации System Modeler, но только версии 14.1.<br> <br> См. также:<br> — <a href="https://reference%2Ewolfram%2Ecom/language/tutorial/RegistrationAndPasswords.html" target="_blank"><b>Регистрация и пароли</b></a>,<br> — <a href="https://reference%2Ewolfram%2Ecom/language/tutorial/MathematicaSystemAdministrationOverview.html" target="_blank"><b>Администрирование системы Wolfram</b></a>,<br> — <a href="https://reference%2Ewolfram%2Ecom/language/tutorial/InstallingWolfram.html" target="_blank"><b>Установка Wolfram (начиная с версии 14.1)</b></a>,<br> — <a href="https://reference%2Ewolfram%2Ecom/language/tutorial/InstallingMathematica.html" target="_blank"><b>Установка Mathematica (для версии 14 и старее)</b></a>,<br> — <a href="https://reference%2Ewolfram%2Ecom/language/tutorial/InstallingMathLM.html" target="_blank"><b>Установка MathLM</b></a>,<br> — <a href="https://reference%2Ewolfram%2Ecom/language/tutorial/ActivatingMathematica.html" target="_blank"><b>Активация Mathematica</b></a>,<br> — <a href="https://reference%2Ewolfram%2Ecom/language/tutorial/UsingTheWolframProductSwitcher.html" target="_blank"><b>Переключатель продуктов Wolfram</b></a>,<br> — <a href="https://reference%2Ewolfram%2Ecom/language/guide/SystemAndLicenseManagement.html" target="_blank"><b>Управление системой и лицензиями</b></a>,<br> — Встроенный символ <a href="https://reference%2Ewolfram%2Ecom/language/ref/$MachineID.html" target="_blank"><b>$MachineID</b></a> — показывает MachineID (он же MathID),<br> — Встроенный символ <a href="https://reference%2Ewolfram%2Ecom/language/ref/$PasswordFile.html" target="_blank"><b>$PasswordFile</b></a> — путь к файлу с паролями.<br> <br> <b>Новые версии кейгена ищите <a href="https://forum%2Eru-board%2Ecom/topic.cgi?forum=35&topic=1174&start=0&limit=1&m=27#1" target="_blank">здесь</a>.</b><br> <br> <form id="form"> <fieldset> <legend> Генератор паролей </legend> <label for="mathid" id="mathid-label"> MachineID (MathID): </label> <input type="text" id="mathid" pattern="\d{4}-\d{5}-\d{5}" title="В формате nnnn-nnnnn-nnnnn, где n - цифра." oninput="inputMathidChange(this.value);"> <label for="activation-key"> Ключ активации (Activation Key): </label> <input type="text" id="activation-key" pattern="\d{4}-\d{4}-[0-9A-Z]{6}" value="3893-9258-K6XJLE" title="В формате nnnn-nnnn-xxxxxx, где n - цифра, а x - цифра или заглавная латинская буква."> <button id="buttonGenActKey" onclick="genActKey(event);"> Сгенерировать случайный ключ активации (Activation Key) </button> <label for="password-str">Пароль (password), заполняйте только для проверки известного пароля: </label> <input type="text" id="password-str" title="Пароль. Заполняте только если хотите проверить известный пароль."> <button id="button-check-password" onclick="checkPass(event);">Проверить пароль (password)</button> <label for="max-license-processes-subprocesses"> Максимальное количество процессов и субпроцессов (Max License Processes и Max License Subprocesses): </label> <input type="text" id="max-license-processes-subprocesses" pattern="^(\s*|[0-9]\d{0,3}(,[0-9]\d{0,3}){0,3}\s*)$" title="От 1 до 4 чисел от 0 до 9999, разделённых запятыми или пустая строка."> <label for="license-type" style="display: none;"> Тип лицензии (License Type): </label> <input type="text" id="license-type" pattern="^(\s*|[1-9A-F][0-9A-F]{0,7}\s*)$" title="Шестнадцатеричное число от 1 до 8 цифр или пустая строка." style="display: none;"> <div> <div id="div-license-type"> Тип лицензии (License Type): </div> <div id="div-checkbox-license-type-bit-00" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-00" title="Неизвестно что означает этот бит, но он установлен в бесплатных триальных лицензиях." checked onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-00"> бит  0, битовая маска        1 — неизвестно </label> </div> <br> <div id="div-checkbox-license-type-bit-01" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-01" title="Установите флажок, если хотите редакцию Product Trial. Также нужно ниже задать дату истечения срока действия лицензии (License Expiration Date) в формате ГГГГММДД." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-01"> бит  1, битовая маска        2 — редакция Product Trial </label> </div> <br> <div id="div-checkbox-license-type-bit-02" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-02" title="Установите флажок, если хотите редакцию Student Edition." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-ише-02"> бит  2, битовая маска        4 — редакция Student Edition </label> </div> <br> <div id="div-checkbox-license-type-bit-03" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-03" title="Установите флажок, если хотите редакцию Site License." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-03"> бит  3, битовая маска        8 — редакция Site License </label> </div> <br> <div id="div-checkbox-license-type-bit-04" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-04" title="Установите флажок, если хотите чтобы Mathematica версии 13 и ниже превратилась в Wolfram Player. В версии 14 и выше этот бит вроде бы игнорируется." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-04"> бит  4, битовая маска       10 — Player </label> </div> <br> <div id="div-checkbox-license-type-bit-05" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-05" title="Установите флажок, если вам нужна лицензия для Wolfram Player. Лицензию можно использовать для приложения Wolfram Player, а Mathematica и Wolfram начиная с версии 14.1 с такой лицензией тоже будут как Wolfram Player. В каждой лицензии для приложения Wolfram (начиная с версии 14.1) должен быть указан один и только один продукт." onclick="checkboxLicenseWolframTypeClick();"> <label for="checkbox-license-type-bit-05"> бит  5, битовая маска       20 — продукт Wolfram Player </label> </div> <br> <div id="div-checkbox-license-type-bit-06" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-06" title="Установите флажок, если вам нужна лицензия для Wolfram Player Pro. Лицензию можно использовать для приложения Wolfram Player — он превратится в Wolfram Player Pro, а Mathematica и Wolfram начиная с версии 14.1 с такой лицензией тоже будет как Wolfram Player Pro — можно вычислять, но не редактировать. В каждой лицензии для приложения Wolfram (начиная с версии 14.1) должен быть указан один и только один продукт." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-06"> бит  6, битовая маска       40 — продукт Wolfram Player Pro </label> </div> <br> <div id="div-checkbox-license-type-bit-07" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-07" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-07"> бит  7, битовая маска       80 — неизвестно </label> </div> <br> <div id="div-checkbox-license-type-bit-08" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-08" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-08"> бит  8, битовая маска      100 — неизвестно </label> </div> <br> <div id="div-checkbox-license-type-bit-09" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-09" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-09"> бит  9, битовая маска      200 — неизвестно </label> </div> <br> <div id="div-checkbox-license-type-bit-10" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-10" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-10"> бит 10, битовая маска      400 — неизвестно </label> </div> <br> <div id="div-checkbox-license-type-bit-11" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-11" title="Установите флажок, если хотите редакцию Home Edition." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-11"> бит 11, битовая маска      800 — редакция Home Edition </label> </div> <br> <div id="div-checkbox-license-type-bit-12" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-12" title="Установите флажок, если хотите редакцию Enterprise Edition. Mathematica версии 13.3 и ниже с такой лицензией в окнах "About" и "Welcome Screen" пишет что она "Enterprise Edition", но реально вроде бы этот бит больше ни на что не влияет. В версии 14 и выше этот бит вроде бы игнорируется." checked onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-12"> бит 12, битовая маска     1000 — редакция Enterprise Edition </label> </div> <br> <div id="div-checkbox-license-type-bit-13" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-13" title="Фича EnterpriseSigning. Установите флажок, если хотите чтобы CDF файлы записывались в формате EnterpriseCDF — CDFDeploy с опцией "Target" -> "PlayerPro" по умолчанию, для записи FreeCDF нужно будет явно указывать "Target" -> "CDFPlayer". Mathematica и Wolfram начиная с версии 14.1 с такой лицензией при выборе пункта меню "Preview for Wolfram Player" открывает Preview c "WOLFRAM Player Pro" и "Enterprise CDF Preview"." checked onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-13"> бит 13, битовая маска     2000 — фича EnterpriseSigning </label> </div> <br> <div id="div-checkbox-license-type-bit-14" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-14" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-14"> бит 14, битовая маска     4000 — неизвестно </label> </div> <br> <div id="div-checkbox-license-type-bit-15" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-15" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-15"> бит 15, битовая маска     8000 — неизвестно </label> </div> <br> <div id="div-checkbox-license-type-bit-16" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-16" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-16"> бит 16, битовая маска    10000 — неизвестно </label> </div> <br> <div id="div-checkbox-license-type-bit-17" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-17" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-17"> бит 17, битовая маска    20000 — неизвестно </label> </div> <br> <div id="div-checkbox-license-type-bit-18" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-18" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-18"> бит 18, битовая маска    40000 — неизвестно </label> </div> <br> <div id="div-checkbox-license-type-bit-19" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-19" title="Фича AltExpirationPolicy. Неизвестно, что означает. Лицензию с установленным этим битом (а также с установленным битом для фичи AutoRenewingSubscription) выдают например для бесплатного Wolfram Engine — с нулевым лимитом для Front End Mathematica, а также с заданной датой истечения срока действия лицензии, эта лицезия у Wolfram Engine вроде бы автоматически обновляется." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-19"> бит 19, битовая маска    80000 — фича AltExpirationPolicy </label> </div> <br> <div id="div-checkbox-license-type-bit-20" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-20" title="Установите флажок, если вам нужна лицензия для продукта Wolfram|Alpha Notebook Edition приложения Wolfram начиная с версии 14.1. В каждой лицензии для приложения Wolfram (начиная с версии 14.1) должен быть указан один и только один продукт." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-20"> бит 20, битовая маска   100000 — продукт Wolfram|Alpha Notebook Edition </label> </div> <br> <div id="div-checkbox-license-type-bit-21" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-21" title="Установите флажок, если вам нужна лицензия для продукта Wolfram|One приложения Wolfram начиная с версии 14.1. В каждой лицензии для приложения Wolfram (начиная с версии 14.1) должен быть указан один и только один продукт." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-21"> бит 21, битовая маска   200000 — продукт Wolfram|One </label> </div> <br> <div id="div-checkbox-license-type-bit-22" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-22" title="Установите флажок, если вам нужна лицензия для продукта Wolfram Finance Platform приложения Wolfram начиная с версии 14.1. В каждой лицензии для приложения Wolfram (начиная с версии 14.1) должен быть указан один и только один продукт." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-22"> бит 22, битовая маска   400000 — продукт Wolfram Finance Platform </label> </div> <br> <div id="div-checkbox-license-type-bit-23" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-23" title="Установите флажок, если вам нужна лицензия для продукта Mathematica приложения Wolfram начиная с версии 14.1. В каждой лицензии для приложения Wolfram (начиная с версии 14.1) должен быть указан один и только один продукт." checked onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-23"> бит 23, битовая маска   800000 — продукт Mathematica </label> </div> <br> <div id="div-checkbox-license-type-bit-24" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-24" title="Установите флажок, если вам нужна лицензия для продукта Wolfram Programming Lab приложения Wolfram начиная с версии 14.1. Но вообще-то Wolfram Programming Lab — это устаревший продукт, все функции и возможности которого доступны в Wolfram|One. В каждой лицензии для приложения Wolfram (начиная с версии 14.1) должен быть указан один и только один продукт." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-24"> бит 24, битовая маска  1000000 — продукт Wolfram Programming Lab </label> </div> <br> <div id="div-checkbox-license-type-bit-25" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-25" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-25"> бит 25, битовая маска  2000000 — неизвестно </label> </div> <br> <div id="div-checkbox-license-type-bit-26" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-26" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-26"> бит 26, битовая маска  4000000 — неизвестно </label> </div> <br> <div id="div-checkbox-license-type-bit-27" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-27" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-27"> бит 27, битовая маска  8000000 — неизвестно </label> </div> <br> <div id="div-checkbox-license-type-bit-28" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-28" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-28"> бит 28, битовая маска 10000000 — неизвестно </label> </div> <br> <div id="div-checkbox-license-type-bit-29" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-29" title="Фича AutoRenewingSubscription. Неизвестно, что означает. Лицензию с установленным этим битом (а также с установленным битом для фичи AltExpirationPolicy) выдают например для бесплатного Wolfram Engine — с нулевым лимитом для Front End Mathematica, а также с заданной датой истечения срока действия лицензии, эта лицезия у Wolfram Engine вроде бы автоматически обновляется." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-29"> бит 29, битовая маска 20000000 — фича AutoRenewingSubscription </label> </div> <br> <div id="div-checkbox-license-type-bit-30" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-30" title="Продукт System Modeler, с версии 14.2 для приложения System Modeler этот бит обязателен и не должны быть установлены биты других продуктов." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-30"> бит 30, битовая маска 40000000 — продукт System Modeler </label> </div> <br> <div id="div-checkbox-license-type-bit-31" style="display: inline-flex;"> <input type="checkbox" id="checkbox-license-type-bit-31" title="Неизвестно что означает этот бит, но если его установить, то приложение не принимает лицензию." onclick="checkboxLicenseTypeClick();"> <label for="checkbox-license-type-bit-31"> бит 31, битовая маска 80000000 — неизвестно </label> </div> </div> <br> <label for="license-expiration-date">Дата истечения срока действия лицензии (License Expiration Date): </label> <input type="text" id="license-expiration-date" pattern="^(\s*|[0-9]{4}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])\s*)$" title="Дата в формате ГГГГММДД или пустая строка."> <label for="we-are-everywhere"> "We Are Everywhere!": </label> <input type="checkbox" id="we-are-everywhere" title="Установите флажок, если лицензия для приложения MathLM, а также нужно указать класс лицензии (License Class). Для остальных приложений этот флажок снимите и очистите поле с классом лицензии (License Class)."><br> <label for="license-class">Класс лицензии (License Class): </label> <input type="text" id="license-class" pattern="^(\s*|CA|CX|CB|CC|CM\s*)$" title="Укажите CA или CX или CB или CC или CM если вам нужна лицензия для приложения MathLM, а также нужно установить флажок "We Are Everywhere!". Для остальных приложений очистите поле с классом лицензии (License Class) и снимите этот флажок "We Are Everywhere!"."> <label for="key-val-str">Строка для генерации пароля: </label> <input type="text" id="key-val-str" title="Строка для генерации пароля. Если строка не пустая, все параметры кроме хэша игнорируются."> <label for="salt">Хэш: </label> <input type="text" id="salt" required pattern="^(\s*|0x[0-9a-fA-F]{1,4}|[0-9]{1,5}\s*)$" title="Число либо в десятичном формате (от 0 до 65535), либо в шестнадцатеричном формате (от 0x0000 до 0xFFFF)."> <button id="buttonGenPass" onclick="genPass(event);" type="submit">Сгенерировать пароль (password)</button> </fieldset> </form> <div id="output"></div> </body> </html>