Skip to content

Instantly share code, notes, and snippets.

@lukalafaye
Created August 18, 2018 02:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lukalafaye/9410fd29d8f930c5ebf39219f743c73c to your computer and use it in GitHub Desktop.
Save lukalafaye/9410fd29d8f930c5ebf39219f743c73c to your computer and use it in GitHub Desktop.
Javascirpt Keygens for Mathematica 11.1, 11.2 and 11.3

Steps

  1. Install Mathematica
  2. Select "Other ways to activate" and "Manual Activation".
  3. Copy the MathID and launch the html file in a browser,
  4. Paste it in the first box, enter any Activation Key (respect the format) string in the next box, ie: 1234-4321-123456
  5. Generate and copy Activation Key and Password to the Activation window of Mathematica
  6. Press Activate
<!DOCTYPE html>
<html>
<head>
<title>Mathematica 11.1 Crack (Keygen, no download needed, everything is in browser)</title>
<style type="text/css">
body {
font-family: Arial, sans-serif;
}
</style>
<script>
function println(str) {
document.getElementById("output").innerHTML += str + "</br>";
}
function clear() {
document.getElementById("output").innerHTML = "";
}
function f1(n, byte, c) { // inverse of f2: f1(f2(x, y, c), c, y, c) == x
for (var bitIndex = 0; bitIndex <= 7; bitIndex++) {
var bit = (byte >> bitIndex) & 1;
if (bit + ((n - bit) & ~1) == n) {
n = (n - bit) >> 1;
} else {
n = ((c - bit) ^ n) >> 1;
}
}
return n;
}
/*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;
}*/
function genPassword(str) {
var hash = 0x42DD; // Mathematica 11.0.1: Change to 0x25DB
for (var byteIndex = str.length - 1; byteIndex >= 0; byteIndex--) {
hash = f1(hash, str.charCodeAt(byteIndex), 0x105C3);
}
var n1 = 0;
while (f1(f1(hash, n1 & 0xFF, 0x105C3), n1 >> 8, 0x105C3) != 0xA5B6) {
if (++n1 >= 0xFFFF) {
println("Failed to find a key!");
return "";
}
}
n1 = Math.floor(((n1 + 0x72FA) & 0xFFFF) * 99999.0 / 0xFFFF);
var n1str = ("0000" + n1.toString(10)).slice(-5); // this will be used at the end
var temp = parseInt(n1str.slice(0,-3) + n1str.slice(-2) + n1str.slice(-3, -2), 10);
temp = Math.ceil((temp / 99999.0) * 0xFFFF);
temp = f1(f1(0, temp & 0xFF, 0x1064B), temp >> 8, 0x1064B);
for (byteIndex = str.length - 1; byteIndex >= 0; byteIndex--) {
temp = f1(temp, str.charCodeAt(byteIndex), 0x1064B);
}
var n2 = 0;
while (f1(f1(temp, n2 & 0xFF, 0x1064B), n2 >> 8, 0x1064B) != 0xA5B6) {
if (++n2 >= 0xFFFF) {
println("Failed to find a key!");
return "";
}
}
n2 = Math.floor((n2 & 0xFFFF) * 99999.0 / 0xFFFF);
var n2str = ("0000" + n2.toString(10)).slice(-5);
var password = n2str.charAt(3) + n1str.charAt(3) + n1str.charAt(1)
+ n1str.charAt(0) + "-" + n2str.charAt(4)
+ n1str.charAt(2) + n2str.charAt(0) + "-"
+ n2str.charAt(2) + n1str.charAt(4) + n2str.charAt(1)
+ "::1";
return password;
}
function genFromMathId() {
clear();
var mathId = document.getElementById("str").value;
var activationKey = "1234-1234-123456";
println("Your activation key is: " + activationKey);
var password = genPassword(mathId + "$1&" + activationKey);
println("Your password is: " + password);
}
</script>
</head>
<body>
<h2>Mathematica 11.1 Crack (Keygen, no download needed, everything is in browser)</h2>
<p>This generator works with Mathematica version 11.1 (See code comment or Github history for 11.0.1). To download it, sign up for a free trial here: <a href="https://www.wolfram.com/mathematica/trial/">https://www.wolfram.com/mathematica/trial/</a> (use a <a href="https://www.mailinator.com/">mailinator</a> email address if you already downloaded a trial with yours) and then use this keygen to permanently activate the program. You can see this keygen's source code on github here: <a href="https://github.com/keygens/keygens.github.io/blob/master/mathematica11.html">https://github.com/keygens/keygens.github.io/blob/master/mathematica11.html</a>
<br/>
<br/>
<b>Instrutions: </b>On the Mathematica activation screen, click the "Other ways to activate" button and then "Activate Manually". Input your MathID in the box below and click "Generate using MathID". </p>
<input type="text" id="str"/>
<button onclick="genFromMathId()">Generate using MathID</button>
<br/>
<br/>
<div id="output"></div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>Mathematica 11.2</title>
<style type="text/css">
body {
font-family: Arial, sans-serif;
}
</style>
<script>
function f1(n, byte, c) { // inverse of f2: f1(f2(x, y, c), c, y, c) == x
for (var bitIndex = 0; bitIndex <= 7; bitIndex++) {
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(str) {
var hash = 0x6A91;
for (var byteIndex = str.length - 1; byteIndex >= 0; byteIndex--) {
hash = f1(hash, str.charCodeAt(byteIndex), 0x105C3);
}
var n1 = 0;
while (f1(f1(hash, n1 & 0xFF, 0x105C3), n1 >> 8, 0x105C3) != 0xA5B6) {
if (++n1 >= 0xFFFF) {
return "Error";
}
}
n1 = Math.floor(((n1 + 0x72FA) & 0xFFFF) * 99999.0 / 0xFFFF);
var n1str = ("0000" + n1.toString(10)).slice(-5); // this will be used at the end
var temp = parseInt(n1str.slice(0,-3) + n1str.slice(-2) + n1str.slice(-3, -2), 10);
temp = Math.ceil((temp / 99999.0) * 0xFFFF);
temp = f1(f1(0, temp & 0xFF, 0x1064B), temp >> 8, 0x1064B);
for (byteIndex = str.length - 1; byteIndex >= 0; byteIndex--) {
temp = f1(temp, str.charCodeAt(byteIndex), 0x1064B);
}
var n2 = 0;
while (f1(f1(temp, n2 & 0xFF, 0x1064B), n2 >> 8, 0x1064B) != 0xA5B6) {
if (++n2 >= 0xFFFF) {
return "Error";
}
}
n2 = Math.floor((n2 & 0xFFFF) * 99999.0 / 0xFFFF);
var n2str = ("0000" + n2.toString(10)).slice(-5);
var password = n2str.charAt(3) + n1str.charAt(3) + n1str.charAt(1) + n1str.charAt(0) + "-"
+ n2str.charAt(4) + n1str.charAt(2) + n2str.charAt(0) + "-"
+ n2str.charAt(2) + n1str.charAt(4) + n2str.charAt(1) + "::1";
return password;
}
function genFromMathId() {
document.getElementById("output").innerHTML = "";
var mathId = document.getElementById("str").value;
var activationKey = document.getElementById("act").value;
var password = genPassword(mathId + "$1&" + activationKey);
document.getElementById("output").innerHTML += "Password: " + password + "</br>";
}
</script>
</head>
<body>
<h2>Mathematica 11.2</h2>
<p> <br/><br/>Input given MathID (xxxx-xxxxx-xxxxx), whatever Activation Key (xxxx-xxxx-xxxxxx) and press Generate.</p>
<input type="text" id="str"/>
<input type="text" id="act"/>
<button onclick="genFromMathId()">Generate</button>
<br/>
<br/>
<div id="output"></div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>Mathematica 11.3</title>
<style type="text/css">
body {
font-family: Arial, sans-serif;
}
</style>
<script>
function f1(n, byte, c) { // inverse of f2: f1(f2(x, y, c), c, y, c) == x
for (var bitIndex = 0; bitIndex <= 7; bitIndex++) {
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(str) {
var hash = 0xA439;
for (var byteIndex = str.length - 1; byteIndex >= 0; byteIndex--) {
hash = f1(hash, str.charCodeAt(byteIndex), 0x105C3);
}
var n1 = 0;
while (f1(f1(hash, n1 & 0xFF, 0x105C3), n1 >> 8, 0x105C3) != 0xA5B6) {
if (++n1 >= 0xFFFF) {
return "Error";
}
}
n1 = Math.floor(((n1 + 0x72FA) & 0xFFFF) * 99999.0 / 0xFFFF);
var n1str = ("0000" + n1.toString(10)).slice(-5);
var temp = parseInt(n1str.slice(0,-3) + n1str.slice(-2) + n1str.slice(-3, -2), 10);
temp = Math.ceil((temp / 99999.0) * 0xFFFF);
temp = f1(f1(0, temp & 0xFF, 0x1064B), temp >> 8, 0x1064B);
for (byteIndex = str.length - 1; byteIndex >= 0; byteIndex--) {
temp = f1(temp, str.charCodeAt(byteIndex), 0x1064B);
}
var n2 = 0;
while (f1(f1(temp, n2 & 0xFF, 0x1064B), n2 >> 8, 0x1064B) != 0xA5B6) {
if (++n2 >= 0xFFFF) {
return "Error";
}
}
n2 = Math.floor((n2 & 0xFFFF) * 99999.0 / 0xFFFF);
var n2str = ("0000" + n2.toString(10)).slice(-5);
var password = n2str.charAt(3) + n1str.charAt(3) + n1str.charAt(1) + n1str.charAt(0) + "-"
+ n2str.charAt(4) + n1str.charAt(2) + n2str.charAt(0) + "-"
+ n2str.charAt(2) + n1str.charAt(4) + n2str.charAt(1) + "::1";
return password;
}
function genFromMathId() {
document.getElementById("output").innerHTML = "";
var mathId = document.getElementById("str").value;
var activationKey = document.getElementById("act").value;
var password = genPassword(mathId + "$1&" + activationKey);
document.getElementById("output").innerHTML += "Password: " + password + "</br>";
document.body.appendChild(a);
}
</script>
</head>
<body>
<h2>Mathematica 11.3</h2>
<p> <br/><br/>Input given MathID (xxxx-xxxxx-xxxxx), whatever Activation Key (xxxx-xxxx-xxxxxx i.e. 1111-1111-111111 ) and press Generate.</p>
<input type="text" id="str"/>
<input type="text" id="act"/>
<button class="btn" onclick="genFromMathId()">Generate</button>
<br/>
<br/>
<div id="output"></div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment