Guest User

Untitled

a guest
Dec 25th, 2021
361
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 42.29 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3.     <head>
  4.         <meta charset="UTF-8">
  5.         <meta name="viewport" content="width=device-width, initial-scale=1">
  6.         <title>Wolfram Key Generator</title>
  7.         <script>
  8.             // Look for magic numbers in DLL and EXE files close to bytes
  9.             // 29 5B 00 00 87 65 00 00 8C 7F 00 00 75 35 00 00 1A 54 00 00 2D 45 00 00 D1 3F 00 00 0A 14 00 00 A5 29 00 00 A4 72 00 00
  10.  
  11.             const magicNumbersMath130 = [
  12.                 // Mathematica 13.0+
  13.                 0x5417,  // 13.0 - 13.0+
  14.                 0xB013,  // 13.0 - 13.0+
  15.                 0xD54F,  // 13.0 - 13.0+
  16.                 0x66C0,  // 13.0 - 13.0+
  17.                 0x22DD,  // 13.0 - 13.0+
  18.                 0xCD2D,  // 13.0 - 13.0+
  19.                 0xB4D0   // 13.0 - 13.0+
  20.             ];
  21.  
  22.             const magicNumbersMath120 = [
  23.                 // Mathematica 12.0+
  24.                 0xE756,  // 12.0 - 13.0+
  25.                 0x8C68,  // 12.0 - 13.0+
  26.                 0x8250,  // 12.0 - 13.0+
  27.                 0xABEB,  // 12.0 - 13.0+
  28.                 0x60F0,  // 12.0 - 13.0+
  29.                 0x8E3C   // 12.0 - 13.0+
  30.             ];
  31.  
  32.             const magicNumbersMath102 = [
  33.                 // Mathematica 10.2+
  34.                 0x44F1,  // 10.2 - 13.0+
  35.                 0x29C2,  // 10.2 - 13.0+
  36.                 0xEE71,  // 10.2 - 13.0+
  37.                 0xDB75,  // 10.2 - 13.0
  38.                 0xD227,  // 10.2 - 12.3
  39.                 0x2FDB   // 10.2 - 12.2
  40.             ];
  41.  
  42.             const magicNumbersMath100 = [
  43.                 // Mathematica 10.0+
  44.                 0xA439,  // 10.0 - 12.0
  45.                 0xE4A8,  // 10.0 - 12.1
  46.                 0xA68B,  // 10.0 - 12.0
  47.                 0x29F8,  // 10.0 - 11.3
  48.                 0x6A91,  // 10.0 - 11.2
  49.                 0x42DD,  // 10.0 - 11.1
  50.                 0x25DB   // 10.0 - 11.0
  51.             ];
  52.  
  53.  
  54.             const magicNumbersMath = [
  55.                 // Mathematica
  56.                 // 10.0+
  57. //                0x25DB,  // 10.0 - 11.0
  58. //                0x42DD,  // 10.0 - 11.1
  59. //                0x6A91,  // 10.0 - 11.2
  60. //                0x29F8,  // 10.0 - 11.3
  61. //                0xA68B,  // 10.0 - 12.0
  62. //                0xE4A8,  // 10.0 - 12.1
  63. //                0xA439,  // 10.0 - 12.0
  64.                 // 10.2+
  65. //                0x2FDB,  // 10.2 - 12.2
  66. //                0xD227,  // 10.2 - 12.3
  67. //                0xDB75,  // 10.2 - 13.0
  68. //                0xEE71,  // 10.2 - 13.0+
  69. //                0x29C2,  // 10.2 - 13.0+
  70. //                0x44F1,  // 10.2 - 13.0+
  71.                 // 12.0+
  72. //                0x8E3C,  // 12.0 - 13.0+
  73. //                0x60F0,  // 12.0 - 13.0+
  74. //                0xABEB,  // 12.0 - 13.0+
  75. //                0x8250,  // 12.0 - 13.0+
  76. //                0x8C68,  // 12.0 - 13.0+
  77. //                0xE756,  // 12.0 - 13.0+
  78.                 // 13.0+
  79. //                0xB4D0,  // 13.0 - 13.0+
  80. //                0xCD2D,  // 13.0 - 13.0+
  81. //                0x22DD,  // 13.0 - 13.0+
  82. //                0x66C0,  // 13.0 - 13.0+
  83. //                0xD54F,  // 13.0 - 13.0+
  84. //                0xB013,  // 13.0 - 13.0+
  85.                 0x5417   // 13.0 - 13.0+
  86.             ];
  87.  
  88.             const magicNumbersSM130 = [
  89.                 // SystemModeler 13.0+
  90.                 0x8C72,  // 13.0 - 13.0+
  91.                 0x4209,  // 13.0 - 13.0+
  92.                 0x73EE,  // 13.0 - 13.0+
  93.                 0x64EC,  // 13.0 - 13.0+
  94.                 0x7C53   // 13.0 - 13.0+
  95.             ];
  96.  
  97.             const magicNumbersSM050 = [
  98.                 // SystemModeler  5.0+
  99.                 0x5770,  //  5.0 - 13.0+  
  100.                 0x7C91,  //  5.0 - 13.0+  
  101.                 0xEEFE,  //  5.0 - 13.0+  
  102.                 0x1361,  //  5.0 - 13.0+  
  103.                 0x755E,  //  5.0 - 13.0+  
  104.                 0xA5CE,  //  5.0 - 13.0+  
  105.                 0xF536,  //  5.0 - 13.0+  
  106.                 0x1330,  //  5.0 - 13.0+
  107.                 0xBF47   //  5.0 - 13.0
  108.             ];
  109.  
  110.             const magicNumbersSM040 = [
  111.                 // SystemModeler  4.0+
  112.                 0x6188,  //  4.0 - 12.3
  113.                 0xAB0B,  //  4.0 - 12.2  
  114.                 0xB4D3,  //  4.0 - 12.1  
  115.                 0x47C5,  //  4.0 - 12.0  
  116.                 0x81DD,  //  4.0 -  5.1?
  117.                 0x8330,  //  4.0 -  5.0
  118.                 0x72C4,  //  4.0 -  4.2
  119.                 0x2F33,  //  4.0 -  4.2
  120.                 0x6897,  //  4.0 -  4.1
  121.                 0x15BF   //  4.0
  122.             ];
  123.  
  124.  
  125.             const magicNumbersSM = [
  126.                 // SystemModeler
  127.                 // 4.0+
  128. //                0x15BF,  //  4.0
  129. //                0x6897,  //  4.0 -  4.1
  130. //                0x2F33,  //  4.0 -  4.2
  131. //                0x72C4,  //  4.0 -  4.2
  132. //                0x8330,  //  4.0 -  5.0
  133. //                0x81DD,  //  4.0 -  5.1?
  134. //                0x47C5,  //  4.0 - 12.0  
  135. //                0xB4D3,  //  4.0 - 12.1  
  136. //                0xAB0B,  //  4.0 - 12.2  
  137. //                0x6188,  //  4.0 - 12.3
  138.                 // 5.0+
  139. //                0xBF47,  //  5.0 - 13.0
  140. //                0x1330,  //  5.0 - 13.0+
  141. //                0xF536,  //  5.0 - 13.0+  
  142. //                0xA5CE,  //  5.0 - 13.0+  
  143. //                0x755E,  //  5.0 - 13.0+  
  144. //                0x1361,  //  5.0 - 13.0+  
  145. //                0xEEFE,  //  5.0 - 13.0+  
  146. //                0x7C91,  //  5.0 - 13.0+  
  147. //                0x5770,  //  5.0 - 13.0+  
  148.                 // 13.0+
  149. //                0x7C53,  // 13.0 - 13.0+
  150. //                0x64EC,  // 13.0 - 13.0+
  151. //                0x73EE,  // 13.0 - 13.0+
  152. //                0x4209,  // 13.0 - 13.0+
  153.                 0x8C72   // 13.0 - 13.0+
  154.             ];
  155.  
  156.             function testSalt(a, b, c) {
  157.                 for(let i = 0; i < 8; i += 1) {
  158.                    let t = (b >> i) & 1;
  159.                     if (t + ((a - t) & ~1) === a) {
  160.                        a = (a - t) >> 1;
  161.                     } else {
  162.                         a = ((c - t) ^ a) >> 1;
  163.                     }
  164.                 }
  165.  
  166.                 return a;
  167.             }
  168.  
  169.             function genPassword(string, salt) {
  170.                 let uuid = string.split('').map(x => x.charCodeAt());
  171.  
  172.                 let salt1 = salt;
  173.                 for(let i = uuid.length - 1; i >= 0; i -= 1) {
  174.                     salt1 = testSalt(salt1, uuid[i], 0x105C3);
  175.                 }
  176.  
  177.                 let offset1 = 0;
  178.                 while (testSalt(testSalt(salt1, offset1 & 0xFF, 0x105C3), offset1 >> 8, 0x105C3) !== 0xA5B6) {
  179.                    offset1 ++;
  180.                     if (offset1 >= 0xFFFF) {
  181.                         return '';
  182.                     }
  183.                 }
  184.  
  185.                 offset1 = parseInt(((offset1 + 0x72FA) & 0xFFFF) * 99999 / 0xFFFF, 10);
  186.                 offset1 = `0000${offset1}`.substr(-5);
  187.  
  188.                 let salt2 = `${offset1.substr(0, 2)}${offset1.substr(3, 2)}${offset1.substr(2, 1)}`;
  189.                 salt2 = parseInt(salt2, 10);
  190.                 salt2 = parseInt((salt2 / 99999.0) * 0xFFFF, 10) + 1;
  191.                 salt2 = testSalt(testSalt(0, salt2 & 0xFF, 0x1064B), salt2 >> 8, 0x1064B);
  192.                 for(let i = uuid.length - 1; i >= 0; i -= 1) {
  193.                     salt2 = testSalt(salt2, uuid[i], 0x1064B);
  194.                 }
  195.  
  196.                 let offset2 = 0;
  197.                 while(testSalt(testSalt(salt2, offset2 & 0xFF, 0x1064B),
  198.                                offset2 >> 8, 0x1064B) !== 0xA5B6) {
  199.                    offset2 += 1;
  200.                     if (offset2 >= 0xFFFF) { return ''; }
  201.                 }
  202.  
  203.                 offset2 = parseInt((offset2 & 0xFFFF) * 99999 / 0xFFFF, 10);
  204.                 offset2 = `0000${offset2}`.substr(-5);
  205.  
  206.                 return [
  207.                     offset2[3],
  208.                     offset1[3],
  209.                     offset1[1],
  210.                     offset1[0],
  211.                     '-',
  212.                     offset2[4],
  213.                     offset1[2],
  214.                     offset2[0],
  215.                     '-',
  216.                     offset2[2],
  217.                     offset1[4],
  218.                     offset2[1],
  219.                     '::1'
  220. //                    ''
  221.                 ].join('');
  222.             }
  223.  
  224.             function keygenMath(mathID, activationKey = '3893-9258-K6XJLE') {
  225.                 return magicNumbersMath
  226.                     .map(magicNumber => genPassword(`${mathID}$1&${activationKey}`, magicNumber))
  227. //                    .map(magicNumber => genPassword(`${mathID}&${activationKey}`, magicNumber))
  228.                    .filter(password => password !== '');
  229.             }
  230.  
  231.             function keygenSM(mathID, activationKey = '3893-9258-K6XJLE') {
  232.                 return magicNumbersSM
  233.                     .map(magicNumber => genPassword(`${mathID}$1&${activationKey}`, magicNumber))
  234. //                    .map(magicNumber => genPassword(`${mathID}&${activationKey}`, magicNumber))
  235.                    .filter(password => password !== '');
  236.             }
  237.  
  238.             function keygenMath130(mathID, activationKey = '3893-9258-K6XJLE') {
  239.                 return magicNumbersMath130
  240.                     .map(magicNumber => genPassword(`${mathID}$1&${activationKey}`, magicNumber))
  241. //                    .map(magicNumber => genPassword(`${mathID}&${activationKey}`, magicNumber))
  242.                    .filter(password => password !== '');
  243.             }
  244.  
  245.             function keygenMath120(mathID, activationKey = '3893-9258-K6XJLE') {
  246.                 return magicNumbersMath120
  247.                     .map(magicNumber => genPassword(`${mathID}$1&${activationKey}`, magicNumber))
  248. //                    .map(magicNumber => genPassword(`${mathID}&${activationKey}`, magicNumber))
  249.                    .filter(password => password !== '');
  250.             }
  251.  
  252.             function keygenMath102(mathID, activationKey = '3893-9258-K6XJLE') {
  253.                 return magicNumbersMath102
  254.                     .map(magicNumber => genPassword(`${mathID}$1&${activationKey}`, magicNumber))
  255. //                    .map(magicNumber => genPassword(`${mathID}&${activationKey}`, magicNumber))
  256.                    .filter(password => password !== '');
  257.             }
  258.  
  259.             function keygenMath100(mathID, activationKey = '3893-9258-K6XJLE') {
  260.                 return magicNumbersMath100
  261.                     .map(magicNumber => genPassword(`${mathID}$1&${activationKey}`, magicNumber))
  262. //                    .map(magicNumber => genPassword(`${mathID}&${activationKey}`, magicNumber))
  263.                    .filter(password => password !== '');
  264.             }
  265.  
  266.             function keygenSM130(mathID, activationKey = '3893-9258-K6XJLE') {
  267.                 return magicNumbersSM130
  268.                     .map(magicNumber => genPassword(`${mathID}$1&${activationKey}`, magicNumber))
  269. //                    .map(magicNumber => genPassword(`${mathID}&${activationKey}`, magicNumber))
  270.                    .filter(password => password !== '');
  271.             }
  272.  
  273.             function keygenSM050(mathID, activationKey = '3893-9258-K6XJLE') {
  274.                 return magicNumbersSM050
  275.                     .map(magicNumber => genPassword(`${mathID}$1&${activationKey}`, magicNumber))
  276. //                    .map(magicNumber => genPassword(`${mathID}&${activationKey}`, magicNumber))
  277.                    .filter(password => password !== '');
  278.             }
  279.  
  280.             function keygenSM040(mathID, activationKey = '3893-9258-K6XJLE') {
  281.                 return magicNumbersSM040
  282.                     .map(magicNumber => genPassword(`${mathID}$1&${activationKey}`, magicNumber))
  283. //                    .map(magicNumber => genPassword(`${mathID}&${activationKey}`, magicNumber))
  284.                    .filter(password => password !== '');
  285.             }
  286.  
  287. //            document.querySelector('#button').onclick = function (e) {
  288.             function genPass(event) {
  289.                 event.preventDefault();
  290.                 let formEl = document.querySelector('#form');
  291.                 if(formEl.reportValidity && !formEl.reportValidity()) { return; }
  292.                 let mathId = document.querySelector('#mathid').value;
  293.                 let activationKey = document.querySelector('#activation-key').value;
  294.  
  295. /*
  296.                 let outputMathEl = document.querySelector('#outputMath');
  297.                 outputMathEl.innerText = 'Password for Mathematica 13.0+:';
  298.                 outputMathEl.append(document.createElement("br"));
  299.                 let passwordMathEl = document.createElement("pre");
  300.                 let passwordInnerCodeMathEl = document.createElement("code");
  301.                 passwordMathEl.append(passwordInnerCodeMathEl);
  302.                 passwordInnerCodeMathEl.innerText = keygenMath(mathId, activationKey).join('\n');
  303.                 outputMathEl.append(passwordMathEl);
  304.  
  305.                 let outputSMEl = document.querySelector('#outputSM');
  306.                 outputSMEl.innerText = 'Password for SystemModeler 13.0+:';
  307.                 outputSMEl.append(document.createElement("br"));
  308.                 let passwordSMEl = document.createElement("pre");
  309.                 let passwordInnerCodeSMEl = document.createElement("code");
  310.                 passwordSMEl.append(passwordInnerCodeSMEl);
  311.                 passwordInnerCodeSMEl.innerText = keygenSM(mathId, activationKey).join('\n');
  312.                 outputSMEl.append(passwordSMEl);
  313. */
  314.  
  315.  
  316.                 let outputMath130El = document.querySelector('#outputMath130');
  317.                 outputMath130El.innerText = 'Password for Mathematica 13.0+:';
  318.                 outputMath130El.append(document.createElement("br"));
  319.                 let passwordMath130El = document.createElement("pre");
  320.                 let passwordInnerCodeMath130El = document.createElement("code");
  321.                 passwordMath130El.append(passwordInnerCodeMath130El);
  322.                 passwordInnerCodeMath130El.innerText = keygenMath130(mathId, activationKey).join('\n');
  323.                 outputMath130El.append(passwordMath130El);
  324.  
  325.                 let outputMath120El = document.querySelector('#outputMath120');
  326.                 outputMath120El.innerText = 'Password for Mathematica 12.0+:';
  327.                 outputMath120El.append(document.createElement("br"));
  328.                 let passwordMath120El = document.createElement("pre");
  329.                 let passwordInnerCodeMath120El = document.createElement("code");
  330.                 passwordMath120El.append(passwordInnerCodeMath120El);
  331.                 passwordInnerCodeMath120El.innerText = keygenMath120(mathId, activationKey).join('\n');
  332.                 outputMath120El.append(passwordMath120El);
  333.  
  334.                 let outputMath102El = document.querySelector('#outputMath102');
  335.                 outputMath102El.innerText = 'Password for Mathematica 10.2+:';
  336.                 outputMath102El.append(document.createElement("br"));
  337.                 let passwordMath102El = document.createElement("pre");
  338.                 let passwordInnerCodeMath102El = document.createElement("code");
  339.                 passwordMath102El.append(passwordInnerCodeMath102El);
  340.                 passwordInnerCodeMath102El.innerText = keygenMath102(mathId, activationKey).join('\n');
  341.                 outputMath102El.append(passwordMath102El);
  342.  
  343.                 let outputMath100El = document.querySelector('#outputMath100');
  344.                 outputMath100El.innerText = 'Password for Mathematica 10.0+:';
  345.                 outputMath100El.append(document.createElement("br"));
  346.                 let passwordMath100El = document.createElement("pre");
  347.                 let passwordInnerCodeMath100El = document.createElement("code");
  348.                 passwordMath100El.append(passwordInnerCodeMath100El);
  349.                 passwordInnerCodeMath100El.innerText = keygenMath100(mathId, activationKey).join('\n');
  350.                 outputMath100El.append(passwordMath100El);
  351.  
  352.                 let outputSM130El = document.querySelector('#outputSM130');
  353.                 outputSM130El.innerText = 'Password for SystemModeler 13.0+:';
  354.                 outputSM130El.append(document.createElement("br"));
  355.                 let passwordSM130El = document.createElement("pre");
  356.                 let passwordInnerCodeSM130El = document.createElement("code");
  357.                 passwordSM130El.append(passwordInnerCodeSM130El);
  358.                 passwordInnerCodeSM130El.innerText = keygenSM130(mathId, activationKey).join('\n');
  359.                 outputSM130El.append(passwordSM130El);
  360.  
  361.                 let outputSM050El = document.querySelector('#outputSM050');
  362.                 outputSM050El.innerText = 'Password for SystemModeler  5.0+:';
  363.                 outputSM050El.append(document.createElement("br"));
  364.                 let passwordSM050El = document.createElement("pre");
  365.                 let passwordInnerCodeSM050El = document.createElement("code");
  366.                 passwordSM050El.append(passwordInnerCodeSM050El);
  367.                 passwordInnerCodeSM050El.innerText = keygenSM050(mathId, activationKey).join('\n');
  368.                 outputSM050El.append(passwordSM050El);
  369.  
  370.                 let outputSM040El = document.querySelector('#outputSM040');
  371.                 outputSM040El.innerText = 'Password for SystemModeler  4.0+:';
  372.                 outputSM040El.append(document.createElement("br"));
  373.                 let passwordSM040El = document.createElement("pre");
  374.                 let passwordInnerCodeSM040El = document.createElement("code");
  375.                 passwordSM040El.append(passwordInnerCodeSM040El);
  376.                 passwordInnerCodeSM040El.innerText = keygenSM040(mathId, activationKey).join('\n');
  377.                 outputSM040El.append(passwordSM040El);
  378.  
  379.             };
  380.         </script>
  381.         <style>
  382.             /**
  383.              * Forced light theme version
  384.              */
  385.  
  386.             :root {
  387.               --background-body: #fff;
  388.               --background: #efefef;
  389.               --background-alt: #f7f7f7;
  390.               --selection: #9e9e9e;
  391.               --text-main: #363636;
  392.               --text-bright: #000;
  393.               --text-muted: #70777f;
  394.               --links: #0076d1;
  395.               --focus: #0096bfab;
  396.               --border: #dbdbdb;
  397.               --code: #000;
  398.               --animation-duration: 0.1s;
  399.               --button-hover: #ddd;
  400.               --scrollbar-thumb: rgb(213, 213, 213);
  401.               --scrollbar-thumb-hover: rgb(196, 196, 196);
  402.               --form-placeholder: #949494;
  403.               --form-text: #000;
  404.               --variable: #39a33c;
  405.               --highlight: #ff0;
  406.               --select-arrow: url("data:image/svg+xml;charset=utf-8,%3C?xml version='1.0' encoding='utf-8'?%3E %3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' 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");
  407.             }
  408.  
  409.             html {
  410.               scrollbar-color: rgb(213, 213, 213) #fff;
  411.               scrollbar-color: var(--scrollbar-thumb) var(--background-body);
  412.               scrollbar-width: thin;
  413.             }
  414.  
  415.             body {
  416.               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;
  417.               line-height: 1.4;
  418.               max-width: 800px;
  419.               margin: 20px auto;
  420.               padding: 0 10px;
  421.               word-wrap: break-word;
  422.               color: #363636;
  423.               color: var(--text-main);
  424.               background: #fff;
  425.               background: var(--background-body);
  426.               text-rendering: optimizeLegibility;
  427.             }
  428.  
  429.             button {
  430.               transition:
  431.                 background-color 0.1s linear,
  432.                 border-color 0.1s linear,
  433.                 color 0.1s linear,
  434.                 box-shadow 0.1s linear,
  435.                 transform 0.1s ease;
  436.               transition:
  437.                 background-color var(--animation-duration) linear,
  438.                 border-color var(--animation-duration) linear,
  439.                 color var(--animation-duration) linear,
  440.                 box-shadow var(--animation-duration) linear,
  441.                 transform var(--animation-duration) ease;
  442.             }
  443.  
  444.             input {
  445.               transition:
  446.                 background-color 0.1s linear,
  447.                 border-color 0.1s linear,
  448.                 color 0.1s linear,
  449.                 box-shadow 0.1s linear,
  450.                 transform 0.1s ease;
  451.               transition:
  452.                 background-color var(--animation-duration) linear,
  453.                 border-color var(--animation-duration) linear,
  454.                 color var(--animation-duration) linear,
  455.                 box-shadow var(--animation-duration) linear,
  456.                 transform var(--animation-duration) ease;
  457.             }
  458.  
  459.             textarea {
  460.               transition:
  461.                 background-color 0.1s linear,
  462.                 border-color 0.1s linear,
  463.                 color 0.1s linear,
  464.                 box-shadow 0.1s linear,
  465.                 transform 0.1s ease;
  466.               transition:
  467.                 background-color var(--animation-duration) linear,
  468.                 border-color var(--animation-duration) linear,
  469.                 color var(--animation-duration) linear,
  470.                 box-shadow var(--animation-duration) linear,
  471.                 transform var(--animation-duration) ease;
  472.             }
  473.  
  474.             h1 {
  475.               font-size: 2.2em;
  476.               margin-top: 0;
  477.             }
  478.  
  479.             h1,
  480.             h2,
  481.             h3,
  482.             h4,
  483.             h5,
  484.             h6 {
  485.               margin-bottom: 12px;
  486.               margin-top: 24px;
  487.             }
  488.  
  489.             h1 {
  490.               color: #000;
  491.               color: var(--text-bright);
  492.             }
  493.  
  494.             h2 {
  495.               color: #000;
  496.               color: var(--text-bright);
  497.             }
  498.  
  499.             h3 {
  500.               color: #000;
  501.               color: var(--text-bright);
  502.             }
  503.  
  504.             h4 {
  505.               color: #000;
  506.               color: var(--text-bright);
  507.             }
  508.  
  509.             h5 {
  510.               color: #000;
  511.               color: var(--text-bright);
  512.             }
  513.  
  514.             h6 {
  515.               color: #000;
  516.               color: var(--text-bright);
  517.             }
  518.  
  519.             strong {
  520.               color: #000;
  521.               color: var(--text-bright);
  522.             }
  523.  
  524.             h1,
  525.             h2,
  526.             h3,
  527.             h4,
  528.             h5,
  529.             h6,
  530.             b,
  531.             strong,
  532.             th {
  533.               font-weight: 600;
  534.             }
  535.  
  536.             q::before {
  537.               content: none;
  538.             }
  539.  
  540.             q::after {
  541.               content: none;
  542.             }
  543.  
  544.             blockquote {
  545.               border-left: 4px solid #0096bfab;
  546.               border-left: 4px solid var(--focus);
  547.               margin: 1.5em 0;
  548.               padding: 0.5em 1em;
  549.               font-style: italic;
  550.             }
  551.  
  552.             q {
  553.               border-left: 4px solid #0096bfab;
  554.               border-left: 4px solid var(--focus);
  555.               margin: 1.5em 0;
  556.               padding: 0.5em 1em;
  557.               font-style: italic;
  558.             }
  559.  
  560.             blockquote > footer {
  561.               font-style: normal;
  562.               border: 0;
  563.             }
  564.  
  565.             blockquote cite {
  566.               font-style: normal;
  567.             }
  568.  
  569.             address {
  570.               font-style: normal;
  571.             }
  572.  
  573.             a[href^='mailto\:']::before {
  574.               content: '📧 ';
  575.             }
  576.  
  577.             a[href^='tel\:']::before {
  578.               content: '📞 ';
  579.             }
  580.  
  581.             a[href^='sms\:']::before {
  582.               content: '💬 ';
  583.             }
  584.  
  585.             mark {
  586.               background-color: #ff0;
  587.               background-color: var(--highlight);
  588.               border-radius: 2px;
  589.               padding: 0 2px 0 2px;
  590.               color: #000;
  591.             }
  592.  
  593.             button,
  594.             select,
  595.             input[type='submit'],
  596.             input[type='button'],
  597.             input[type='checkbox'],
  598.             input[type='range'],
  599.             input[type='radio'] {
  600.               cursor: pointer;
  601.             }
  602.  
  603.             input:not([type='checkbox']):not([type='radio']),
  604.             select {
  605.               display: block;
  606.             }
  607.  
  608.             input {
  609.               color: #000;
  610.               color: var(--form-text);
  611.               background-color: #efefef;
  612.               background-color: var(--background);
  613.               font-family: inherit;
  614.               font-size: inherit;
  615.               margin-right: 6px;
  616.               margin-bottom: 6px;
  617.               padding: 10px;
  618.               border: none;
  619.               border-radius: 6px;
  620.               outline: none;
  621.             }
  622.  
  623.             button {
  624.               color: #000;
  625.               color: var(--form-text);
  626.               background-color: #efefef;
  627.               background-color: var(--background);
  628.               font-family: inherit;
  629.               font-size: inherit;
  630.               margin-right: 6px;
  631.               margin-bottom: 6px;
  632.               padding: 10px;
  633.               border: none;
  634.               border-radius: 6px;
  635.               outline: none;
  636.             }
  637.  
  638.             textarea {
  639.               color: #000;
  640.               color: var(--form-text);
  641.               background-color: #efefef;
  642.               background-color: var(--background);
  643.               font-family: inherit;
  644.               font-size: inherit;
  645.               margin-right: 6px;
  646.               margin-bottom: 6px;
  647.               padding: 10px;
  648.               border: none;
  649.               border-radius: 6px;
  650.               outline: none;
  651.             }
  652.  
  653.             select {
  654.               color: #000;
  655.               color: var(--form-text);
  656.               background-color: #efefef;
  657.               background-color: var(--background);
  658.               font-family: inherit;
  659.               font-size: inherit;
  660.               margin-right: 6px;
  661.               margin-bottom: 6px;
  662.               padding: 10px;
  663.               border: none;
  664.               border-radius: 6px;
  665.               outline: none;
  666.             }
  667.  
  668.             input[type='checkbox'],
  669.             input[type='radio'] {
  670.               height: 1em;
  671.               width: 1em;
  672.             }
  673.  
  674.             input[type='radio'] {
  675.               border-radius: 100%;
  676.             }
  677.  
  678.             input {
  679.               vertical-align: top;
  680.             }
  681.  
  682.             label {
  683.               vertical-align: middle;
  684.               margin-bottom: 4px;
  685.               display: inline-block;
  686.             }
  687.  
  688.             input:not([type='checkbox']):not([type='radio']),
  689.             input[type='range'],
  690.             select,
  691.             button,
  692.             textarea {
  693.               -webkit-appearance: none;
  694.             }
  695.  
  696.             textarea {
  697.               display: block;
  698.               margin-right: 0;
  699.               box-sizing: border-box;
  700.               resize: vertical;
  701.             }
  702.  
  703.             textarea:not([cols]) {
  704.               width: 100%;
  705.             }
  706.  
  707.             textarea:not([rows]) {
  708.               min-height: 40px;
  709.               height: 140px;
  710.             }
  711.  
  712.             select {
  713.               background: #efefef url("data:image/svg+xml;charset=utf-8,%3C?xml version='1.0' encoding='utf-8'?%3E %3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' 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;
  714.               background: var(--background) var(--select-arrow) calc(100% - 12px) 50% / 12px no-repeat;
  715.               padding-right: 35px;
  716.             }
  717.  
  718.             select::-ms-expand {
  719.               display: none;
  720.             }
  721.  
  722.             select[multiple] {
  723.               padding-right: 10px;
  724.               background-image: none;
  725.               overflow-y: auto;
  726.             }
  727.  
  728.             button,
  729.             input[type='submit'],
  730.             input[type='button'] {
  731.               padding-right: 30px;
  732.               padding-left: 30px;
  733.             }
  734.  
  735.             button:hover {
  736.               background: #ddd;
  737.               background: var(--button-hover);
  738.             }
  739.  
  740.             input[type='submit']:hover {
  741.               background: #ddd;
  742.               background: var(--button-hover);
  743.             }
  744.  
  745.             input[type='button']:hover {
  746.               background: #ddd;
  747.               background: var(--button-hover);
  748.             }
  749.  
  750.             input:focus {
  751.               box-shadow: 0 0 0 2px #0096bfab;
  752.               box-shadow: 0 0 0 2px var(--focus);
  753.             }
  754.  
  755.             select:focus {
  756.               box-shadow: 0 0 0 2px #0096bfab;
  757.               box-shadow: 0 0 0 2px var(--focus);
  758.             }
  759.  
  760.             button:focus {
  761.               box-shadow: 0 0 0 2px #0096bfab;
  762.               box-shadow: 0 0 0 2px var(--focus);
  763.             }
  764.  
  765.             textarea:focus {
  766.               box-shadow: 0 0 0 2px #0096bfab;
  767.               box-shadow: 0 0 0 2px var(--focus);
  768.             }
  769.  
  770.             input[type='checkbox']:active,
  771.             input[type='radio']:active,
  772.             input[type='submit']:active,
  773.             input[type='button']:active,
  774.             input[type='range']:active,
  775.             button:active {
  776.               transform: translateY(2px);
  777.             }
  778.  
  779.             input:disabled,
  780.             select:disabled,
  781.             button:disabled,
  782.             textarea:disabled {
  783.               cursor: not-allowed;
  784.               opacity: 0.5;
  785.             }
  786.  
  787.             ::-moz-placeholder {
  788.               color: #949494;
  789.               color: var(--form-placeholder);
  790.             }
  791.  
  792.             :-ms-input-placeholder {
  793.               color: #949494;
  794.               color: var(--form-placeholder);
  795.             }
  796.  
  797.             ::-ms-input-placeholder {
  798.               color: #949494;
  799.               color: var(--form-placeholder);
  800.             }
  801.  
  802.             ::placeholder {
  803.               color: #949494;
  804.               color: var(--form-placeholder);
  805.             }
  806.  
  807.             fieldset {
  808.               border: 1px #0096bfab solid;
  809.               border: 1px var(--focus) solid;
  810.               border-radius: 6px;
  811.               margin: 0;
  812.               margin-bottom: 12px;
  813.               padding: 10px;
  814.             }
  815.  
  816.             legend {
  817.               font-size: 0.9em;
  818.               font-weight: 600;
  819.             }
  820.  
  821.             input[type='range'] {
  822.               margin: 10px 0;
  823.               padding: 10px 0;
  824.               background: transparent;
  825.             }
  826.  
  827.             input[type='range']:focus {
  828.               outline: none;
  829.             }
  830.  
  831.             input[type='range']::-webkit-slider-runnable-track {
  832.               width: 100%;
  833.               height: 9.5px;
  834.               -webkit-transition: 0.2s;
  835.               transition: 0.2s;
  836.               background: #efefef;
  837.               background: var(--background);
  838.               border-radius: 3px;
  839.             }
  840.  
  841.             input[type='range']::-webkit-slider-thumb {
  842.               box-shadow: 0 1px 1px #000, 0 0 1px #0d0d0d;
  843.               height: 20px;
  844.               width: 20px;
  845.               border-radius: 50%;
  846.               background: #dbdbdb;
  847.               background: var(--border);
  848.               -webkit-appearance: none;
  849.               margin-top: -7px;
  850.             }
  851.  
  852.             input[type='range']:focus::-webkit-slider-runnable-track {
  853.               background: #efefef;
  854.               background: var(--background);
  855.             }
  856.  
  857.             input[type='range']::-moz-range-track {
  858.               width: 100%;
  859.               height: 9.5px;
  860.               -moz-transition: 0.2s;
  861.               transition: 0.2s;
  862.               background: #efefef;
  863.               background: var(--background);
  864.               border-radius: 3px;
  865.             }
  866.  
  867.             input[type='range']::-moz-range-thumb {
  868.               box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d;
  869.               height: 20px;
  870.               width: 20px;
  871.               border-radius: 50%;
  872.               background: #dbdbdb;
  873.               background: var(--border);
  874.             }
  875.  
  876.             input[type='range']::-ms-track {
  877.               width: 100%;
  878.               height: 9.5px;
  879.               background: transparent;
  880.               border-color: transparent;
  881.               border-width: 16px 0;
  882.               color: transparent;
  883.             }
  884.  
  885.             input[type='range']::-ms-fill-lower {
  886.               background: #efefef;
  887.               background: var(--background);
  888.               border: 0.2px solid #010101;
  889.               border-radius: 3px;
  890.               box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d;
  891.             }
  892.  
  893.             input[type='range']::-ms-fill-upper {
  894.               background: #efefef;
  895.               background: var(--background);
  896.               border: 0.2px solid #010101;
  897.               border-radius: 3px;
  898.               box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d;
  899.             }
  900.  
  901.             input[type='range']::-ms-thumb {
  902.               box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d;
  903.               border: 1px solid #000;
  904.               height: 20px;
  905.               width: 20px;
  906.               border-radius: 50%;
  907.               background: #dbdbdb;
  908.               background: var(--border);
  909.             }
  910.  
  911.             input[type='range']:focus::-ms-fill-lower {
  912.               background: #efefef;
  913.               background: var(--background);
  914.             }
  915.  
  916.             input[type='range']:focus::-ms-fill-upper {
  917.               background: #efefef;
  918.               background: var(--background);
  919.             }
  920.  
  921.             a {
  922.               text-decoration: none;
  923.               color: #0076d1;
  924.               color: var(--links);
  925.             }
  926.  
  927.             a:hover {
  928.               text-decoration: underline;
  929.             }
  930.  
  931.             code {
  932.               background: #efefef;
  933.               background: var(--background);
  934.               color: #000;
  935.               color: var(--code);
  936.               padding: 2.5px 5px;
  937.               border-radius: 6px;
  938.               font-size: 1em;
  939.             }
  940.  
  941.             samp {
  942.               background: #efefef;
  943.               background: var(--background);
  944.               color: #000;
  945.               color: var(--code);
  946.               padding: 2.5px 5px;
  947.               border-radius: 6px;
  948.               font-size: 1em;
  949.             }
  950.  
  951.             time {
  952.               background: #efefef;
  953.               background: var(--background);
  954.               color: #000;
  955.               color: var(--code);
  956.               padding: 2.5px 5px;
  957.               border-radius: 6px;
  958.               font-size: 1em;
  959.             }
  960.  
  961.             pre > code {
  962.               padding: 10px;
  963.               display: block;
  964.               overflow-x: auto;
  965.             }
  966.  
  967.             var {
  968.               color: #39a33c;
  969.               color: var(--variable);
  970.               font-style: normal;
  971.               font-family: monospace;
  972.             }
  973.  
  974.             kbd {
  975.               background: #efefef;
  976.               background: var(--background);
  977.               border: 1px solid #dbdbdb;
  978.               border: 1px solid var(--border);
  979.               border-radius: 2px;
  980.               color: #363636;
  981.               color: var(--text-main);
  982.               padding: 2px 4px 2px 4px;
  983.             }
  984.  
  985.             img,
  986.             video {
  987.               max-width: 100%;
  988.               height: auto;
  989.             }
  990.  
  991.             hr {
  992.               border: none;
  993.               border-top: 1px solid #dbdbdb;
  994.               border-top: 1px solid var(--border);
  995.             }
  996.  
  997.             table {
  998.               border-collapse: collapse;
  999.               margin-bottom: 10px;
  1000.               width: 100%;
  1001.               table-layout: fixed;
  1002.             }
  1003.  
  1004.             table caption {
  1005.               text-align: left;
  1006.             }
  1007.  
  1008.             td,
  1009.             th {
  1010.               padding: 6px;
  1011.               text-align: left;
  1012.               vertical-align: top;
  1013.               word-wrap: break-word;
  1014.             }
  1015.  
  1016.             thead {
  1017.               border-bottom: 1px solid #dbdbdb;
  1018.               border-bottom: 1px solid var(--border);
  1019.             }
  1020.  
  1021.             tfoot {
  1022.               border-top: 1px solid #dbdbdb;
  1023.               border-top: 1px solid var(--border);
  1024.             }
  1025.  
  1026.             tbody tr:nth-child(even) {
  1027.               background-color: #f7f7f7;
  1028.               background-color: var(--background-alt);
  1029.             }
  1030.  
  1031.             ::-webkit-scrollbar {
  1032.               height: 10px;
  1033.               width: 10px;
  1034.             }
  1035.  
  1036.             ::-webkit-scrollbar-track {
  1037.               background: #efefef;
  1038.               background: var(--background);
  1039.               border-radius: 6px;
  1040.             }
  1041.  
  1042.             ::-webkit-scrollbar-thumb {
  1043.               background: rgb(213, 213, 213);
  1044.               background: var(--scrollbar-thumb);
  1045.               border-radius: 6px;
  1046.             }
  1047.  
  1048.             ::-webkit-scrollbar-thumb:hover {
  1049.               background: rgb(196, 196, 196);
  1050.               background: var(--scrollbar-thumb-hover);
  1051.             }
  1052.  
  1053.             ::-moz-selection {
  1054.               background-color: #9e9e9e;
  1055.               background-color: var(--selection);
  1056.               color: #000;
  1057.               color: var(--text-bright);
  1058.             }
  1059.  
  1060.             ::selection {
  1061.               background-color: #9e9e9e;
  1062.               background-color: var(--selection);
  1063.               color: #000;
  1064.               color: var(--text-bright);
  1065.             }
  1066.  
  1067.             details {
  1068.               display: flex;
  1069.               flex-direction: column;
  1070.               align-items: flex-start;
  1071.               background-color: #f7f7f7;
  1072.               background-color: var(--background-alt);
  1073.               padding: 10px 10px 0;
  1074.               margin: 1em 0;
  1075.               border-radius: 6px;
  1076.               overflow: hidden;
  1077.             }
  1078.  
  1079.             details[open] {
  1080.               padding: 10px;
  1081.             }
  1082.  
  1083.             details > :last-child {
  1084.               margin-bottom: 0;
  1085.             }
  1086.  
  1087.             details[open] summary {
  1088.               margin-bottom: 10px;
  1089.             }
  1090.  
  1091.             summary {
  1092.               display: list-item;
  1093.               background-color: #efefef;
  1094.               background-color: var(--background);
  1095.               padding: 10px;
  1096.               margin: -10px -10px 0;
  1097.               cursor: pointer;
  1098.               outline: none;
  1099.             }
  1100.  
  1101.             summary:hover,
  1102.             summary:focus {
  1103.               text-decoration: underline;
  1104.             }
  1105.  
  1106.             details > :not(summary) {
  1107.               margin-top: 0;
  1108.             }
  1109.  
  1110.             summary::-webkit-details-marker {
  1111.               color: #363636;
  1112.               color: var(--text-main);
  1113.             }
  1114.  
  1115.             footer {
  1116.               border-top: 1px solid #dbdbdb;
  1117.               border-top: 1px solid var(--border);
  1118.               padding-top: 10px;
  1119.               color: #70777f;
  1120.               color: var(--text-muted);
  1121.             }
  1122.  
  1123.             body > footer {
  1124.               margin-top: 40px;
  1125.             }
  1126.  
  1127.             @media print {
  1128.               body,
  1129.               pre,
  1130.               code,
  1131.               summary,
  1132.               details,
  1133.               button,
  1134.               input,
  1135.               textarea {
  1136.                 background-color: #fff;
  1137.               }
  1138.  
  1139.               button,
  1140.               input,
  1141.               textarea {
  1142.                 border: 1px solid #000;
  1143.               }
  1144.  
  1145.               body,
  1146.               h1,
  1147.               h2,
  1148.               h3,
  1149.               h4,
  1150.               h5,
  1151.               h6,
  1152.               pre,
  1153.               code,
  1154.               button,
  1155.               input,
  1156.               textarea,
  1157.               footer,
  1158.               summary,
  1159.               strong {
  1160.                 color: #000;
  1161.               }
  1162.  
  1163.               summary::marker {
  1164.                 color: #000;
  1165.               }
  1166.  
  1167.               summary::-webkit-details-marker {
  1168.                 color: #000;
  1169.               }
  1170.  
  1171.               tbody tr:nth-child(even) {
  1172.                 background-color: #f2f2f2;
  1173.               }
  1174.  
  1175.               a {
  1176.                 color: #00f;
  1177.                 text-decoration: underline;
  1178.               }
  1179.             }
  1180.  
  1181.             /*# sourceMappingURL=light.css.map */
  1182.  
  1183.             input[type="text"] {
  1184.                 width: calc(100% - 20px);
  1185.             }
  1186.         </style>
  1187.     </head>
  1188.     <body>
  1189.         <h1>Wolfram Key Generator</h1>
  1190.         <ol>
  1191.             <li>Install <b>Mathematica</b> from <a href="https://www.wolfram.com/mathematica/trial/">the official website</a>
  1192.              or install <b>SystemModeler</b> from <a href="https://www.wolfram.com/system-modeler/trial/">the official website</a>.</li>
  1193.             <li>Select <b>Other ways to activate</b><b>Activate Manually</b>.</li>
  1194.             <li>Input given <b>MathID</b> (xxxx-xxxxx-xxxxx) and any <b>Activation Key</b> below (the default Activation Key will suffice).</li>
  1195.             <li>Press <b>Generate Password</b>.</li>
  1196.             <li>Input your <b>Activation Key</b> and any generated <b>Password</b> to activate your copy of Mathematica.</li>
  1197.             <li>Ignore the prompt to <b>Register</b>.</li>
  1198.         </ol>
  1199.         <form id="form">
  1200.             <fieldset>
  1201.                 <legend>Generator</legend>
  1202.                 <label for="mathid">MathID: </label>
  1203.                 <input type="text" id="mathid" required pattern="\d{4}-\d{5}-\d{5}">
  1204.                 <label for="activation-key">Activation Key: </label>
  1205.                 <input type="text" id="activation-key" required pattern="\d{4}-\d{4}-[0-9A-Z]{6}" value="3893-9258-K6XJLE">
  1206.                 <button id="button" onclick="genPass(event)">Generate Password</button>
  1207.             </fieldset>
  1208.         </form>
  1209.         <div id="outputMath"></div>
  1210.         <div id="outputSM"></div>
  1211.         <div id="outputMath130"></div>
  1212.         <div id="outputMath120"></div>
  1213.         <div id="outputMath102"></div>
  1214.         <div id="outputMath100"></div>
  1215.         <div id="outputSM130"></div>
  1216.         <div id="outputSM050"></div>
  1217.         <div id="outputSM040"></div>
  1218.     </body>
  1219. </html>
  1220.  
Advertisement
Add Comment
Please, Sign In to add comment