[windows] Begin work on HWID

HWID activation uses a lobotomised util found on windows 10 isos for
migration from windows 7 to generate a license upgrade ticket that can
be redeemed on ms servers for a full digital license. Started work on
this, currently it only downloads and creates the util, but does not
perform any other action, work to be done in the future

EXPERIMENTAL VERSION, NOT ALL FEATURES ARE COMPLETE!!!

DEVMODE IS ON!!!!
dev
Joaquin 3 years ago
parent ced4b8ccf6
commit c863c2a575
Signed by: puly
GPG Key ID: 9E9299CD96C65EC6
  1. 4
      Makefile
  2. 92
      main.js
  3. 18
      package-lock.json
  4. 3
      package.json
  5. 29
      webPage/css/dist.css
  6. 11
      webPage/css/source.css
  7. 4
      webPage/windows/index.html
  8. 77
      webPage/winhwid/edt.html
  9. 78
      webPage/winhwid/genexe.html
  10. 4
      webPage/winhwid/index.html

@ -3,10 +3,10 @@ all: linux windows node_modules
node_modules:
npm install
linux:
linux: node_modules
npx electron-builder build --linux appImage
windows:
windows: node_modules
npx electron-builder build --win portable

@ -1,7 +1,9 @@
const { app, BrowserWindow, ipcMain, dialog, shell } = require('electron')
const { exec } = require('child_process')
const path = require('path')
const { stringify } = require('querystring')
const { fstat } = require('fs')
const fs = require('fs')
const crypto = require('crypto')
let win = null;
@ -12,7 +14,7 @@ const createWindow = () => {
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
devTools: false,
devTools: true,
},
autoHideMenuBar: true
})
@ -86,6 +88,88 @@ function activationSettings(){
exec("start ms-settings:activation");
}
function downloadExe(){
if(fs.existsSync('C:\\Users\\Public\\ActTicket\\14f4df8a2a7fc82a4f415cf6a341415d.cab')){
var exeStream = fs.readFileSync('C:\\Users\\Public\\ActTicket\\14f4df8a2a7fc82a4f415cf6a341415d.cab')
var checksum = crypto.createHash('sha256').update(exeStream).digest('hex')
if(checksum.toLowerCase() === '24399eb37ca3e935ab5aa8e501fea950f99ff25565553b7641598d85b3cf381d'){
win.webContents.send('exeDownloadOk')
return
}
}
let exeDownProc = exec('powershell mkdir C:\\Users\\Public\\ActTicket & cd C:\\Users\\Public\\ActTicket & echo "Y -> Downloading binary archive .cab file from microsoft Z" & powershell wget -UseBasicParsing -Uri https://download.microsoft.com/download/9/A/E/9AE69DD5-BA93-44E0-864E-180F5E700AB4/adk/Installers/14f4df8a2a7fc82a4f415cf6a341415d.cab -Outfile .\\14f4df8a2a7fc82a4f415cf6a341415d.cab ')
exeDownProc.stdout.on('data', (data) => {
win.webContents.send('stdout', String(data))
})
exeDownProc.stderr.on('data', (data) => {
win.webContents.send('stderr', String(data))
})
exeDownProc.on('close', () => {
if(fs.existsSync('C:\\Users\\Public\\ActTicket\\14f4df8a2a7fc82a4f415cf6a341415d.cab')){
var exeStream = fs.readFileSync('C:\\Users\\Public\\ActTicket\\14f4df8a2a7fc82a4f415cf6a341415d.cab')
var checksum = crypto.createHash('sha256').update(exeStream).digest('hex')
win.webContents.send('stdout', checksum)
win.webContents.send('stdout', "EXPECTED CHECKSUM (SHA256, HEX): 1f6e56a5467ab472c915cd98b4e93226182684358ca1cdc14ec3bbb2e584b3e7")
if(checksum.toLowerCase() === '24399eb37ca3e935ab5aa8e501fea950f99ff25565553b7641598d85b3cf381d'){
win.webContents.send('exeDownloadOk')
}else{
win.webContents.send('exeDownloadErr')
}
}else{
win.webContents.send('exeDownloadErr')
}
})
}
function genExe(){
if(fs.existsSync('C:\\Users\\Public\\ActTicket\\gatherosstatemodified.exe')){
var exeStream = fs.readFileSync('C:\\Users\\Public\\ActTicket\\gatherosstatemodified.exe')
var checksum = crypto.createHash('sha256').update(exeStream).digest('hex')
win.webContents.send('stdout', checksum)
if(checksum.toLowerCase() === '1f6e56a5467ab472c915cd98b4e93226182684358ca1cdc14ec3bbb2e584b3e7'){
win.webContents.send('exeGenOk')
return
}
}
let exeGenProc = exec('powershell cd C:\\Users\\Public\\ActTicket ; echo "Y-> EXTRACTING GATHEROSSTATE.EXE Z" ; expand .\\14f4df8a2a7fc82a4f415cf6a341415d.cab -F:filf8377e82b29deadca67bc4858ed3fba9 . ; powershell mv .\\filf8377e82b29deadca67bc4858ed3fba9 .\\gatherosstate.exe ; echo "*Modifying Binary Code To Enable Exploit, credit to GamerOSState*" & powershell "" $bytes = [System.IO.File]::ReadAllBytes("""C:\\Users\\Public\\ActTicket\\gatherosstate.exe""") ; $bytes[320] = 0xf8 ; $bytes[321] = 0xfb ; $bytes[322] = 0x05 ; $bytes[324] = 0x03 ; $bytes[13672] = 0x25 ; $bytes[13674] = 0x73 ; $bytes[13676] = 0x3b ; $bytes[13678] = 0x00 ; $bytes[13680] = 0x00 ; $bytes[13682] = 0x00 ; $bytes[13684] = 0x00 ; $bytes[32748] = 0xe9 ; $bytes[32749] = 0x9e ; $bytes[32750] = 0x00 ; $bytes[32751] = 0x00 ; $bytes[32752] = 0x00 ; $bytes[32894] = 0x8b ; $bytes[32895] = 0x44 ; $bytes[32897] = 0x64 ; $bytes[32898] = 0x85 ; $bytes[32899] = 0xc0 ; $bytes[32900] = 0x0f ; $bytes[32901] = 0x85 ; $bytes[32902] = 0x1c ; $bytes[32903] = 0x02 ; $bytes[32904] = 0x00 ; $bytes[32906] = 0xe9 ; $bytes[32907] = 0x3c ; $bytes[32908] = 0x01 ; $bytes[32909] = 0x00 ; $bytes[32910] = 0x00 ; $bytes[32911] = 0x85 ; $bytes[32912] = 0xdb ; $bytes[32913] = 0x75 ; $bytes[32914] = 0xeb ; $bytes[32915] = 0xe9 ; $bytes[32916] = 0x69 ; $bytes[32917] = 0xff ; $bytes[32918] = 0xff ; $bytes[32919] = 0xff ; $bytes[33094] = 0xe9 ; $bytes[33095] = 0x80 ; $bytes[33096] = 0x00 ; $bytes[33097] = 0x00 ; $bytes[33098] = 0x00 ; $bytes[33449] = 0x64 ; $bytes[33576] = 0x8d ; $bytes[33577] = 0x54 ; $bytes[33579] = 0x24 ; $bytes[33580] = 0xe9 ; $bytes[33581] = 0x55 ; $bytes[33582] = 0x01 ; $bytes[33583] = 0x00 ; $bytes[33584] = 0x00 ; $bytes[33978] = 0xc3 ; $bytes[34189] = 0x59 ; $bytes[34190] = 0xeb ; $bytes[34191] = 0x28 ; $bytes[34238] = 0xe9 ; $bytes[34239] = 0x4f ; $bytes[34240] = 0x00 ; $bytes[34241] = 0x00 ; $bytes[34242] = 0x00 ; $bytes[34346] = 0x24 ; $bytes[34376] = 0xeb ; $bytes[34377] = 0x63 ; [System.IO.File]::WriteAllBytes("""C:\\Users\\Public\\ActTicket\\gatherosstatemodified.exe""", $bytes) "" & echo "-> Set exe Compatiblility Mode to xpsp3 in Registry" & powershell start-process powershell -verb runas { reg.exe Add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\Users\Public\ActTicket\gatherosstatemodified.exe" /d "WINXPSP3" /f } & echo "Y -> File gatherosstatemodified.exe has now been sucesfully pacified and should output DownLevel tickets regardless or conditions met Z"')
exeGenProc.stdout.on('data', (data) => {
win.webContents.send('stdout', String(data))
})
exeGenProc.stderr.on('data', (data) => {
win.webContents.send('stderr', String(data))
})
exeGenProc.on('close', () => {
exec('powershell {reg.exe Add `HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers` /v "C:\\ProgramData\\ActTicket\\gatherosstatemodified.exe" /d "WINXPSP3" /f ; echo "`n=======> Put file (gatherosstatemodified.exe) in Windows XP SP3 compatibility mode`n" ; pause}')
if(fs.existsSync('C:\\Users\\Public\\ActTicket\\gatherosstatemodified.exe')){
var exeStream = fs.readFileSync('C:\\Users\\Public\\ActTicket\\gatherosstatemodified.exe')
var checksum = crypto.createHash('sha256').update(exeStream).digest('hex')
win.webContents.send('stdout', checksum)
if(checksum.toLowerCase() === '1f6e56a5467ab472c915cd98b4e93226182684358ca1cdc14ec3bbb2e584b3e7'){
win.webContents.send('exeGenOk')
}else{
win.webContents.send('exeGenErr')
}
}else{
win.webContents.send('exeGenErr')
}
})
}
ipcMain.on("getCertDetails", getCertDetails)
ipcMain.on("setKMS", (event, response) => {
@ -118,6 +202,10 @@ ipcMain.on("openServerPage", openServerPage)
ipcMain.on("activationSettings", activationSettings)
ipcMain.on("downloadexe", downloadExe)
ipcMain.on("genexe", genExe)
app.whenReady().then(() => {
createWindow()
})

18
package-lock.json generated

@ -1,13 +1,16 @@
{
"name": "univator",
"version": "1.1.2",
"version": "1.1.5",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "univator",
"version": "1.1.2",
"version": "1.1.5",
"license": "0BSD",
"dependencies": {
"crypto": "^1.0.1"
},
"devDependencies": {
"electron": "^24.1.0",
"electron-builder": "^24.2.0"
@ -1393,6 +1396,12 @@
"node": ">= 8"
}
},
"node_modules/crypto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz",
"integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==",
"deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in."
},
"node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@ -4947,6 +4956,11 @@
"which": "^2.0.1"
}
},
"crypto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz",
"integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig=="
},
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",

@ -12,5 +12,8 @@
"devDependencies": {
"electron": "^24.1.0",
"electron-builder": "^24.2.0"
},
"dependencies": {
"crypto": "^1.0.1"
}
}

@ -585,14 +585,14 @@ Ensure the default browser behavior of the `hidden` attribute.
width: 80%;
}
.w-3\/4 {
width: 75%;
}
.w-5\/6 {
width: 83.333333%;
}
.w-3\/4 {
width: 75%;
}
.min-w-\[60vw\] {
min-width: 60vw;
}
@ -643,6 +643,11 @@ Ensure the default browser behavior of the `hidden` attribute.
background-color: rgb(49 46 129 / var(--tw-bg-opacity));
}
.bg-white {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
}
.bg-\[\#D0E7A6\] {
--tw-bg-opacity: 1;
background-color: rgb(208 231 166 / var(--tw-bg-opacity));
@ -818,6 +823,11 @@ Ensure the default browser behavior of the `hidden` attribute.
color: rgb(0 0 0 / var(--tw-text-opacity));
}
.underline {
-webkit-text-decoration-line: underline;
text-decoration-line: underline;
}
.shadow {
--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
@ -1081,6 +1091,17 @@ button:hover{
max-width: 700px;
}
.oppositec{
color: black;
background-color: white;
}
.oppositecx{
color: black;
background-color: white;
font-size: large;
}
.hover\:bg-indigo-900:hover {
--tw-bg-opacity: 1;
background-color: rgb(49 46 129 / var(--tw-bg-opacity));

@ -145,4 +145,15 @@ button:hover{
display: block;
width: 80%;
max-width: 700px;
}
.oppositec{
color: black;
background-color: white;
}
.oppositecx{
color: black;
background-color: white;
font-size: large;
}

@ -22,7 +22,7 @@
<p class="pb-3 text-lg font-bold">- Non-intrusive</p>
<p class="pb-3 text-lg font-bold">- Easily Reversible (see options)</p>
<p class="pb-3 text-lg font-bold">- Requires connection to e-KMS server every 180 days to refresh</p>
<a onclick="showMore()" id="morebutton1" style="color:cornflowerblue; text-decoration: underline; cursor:pointer; text-align: center;">Show More</a>
<a onclick="showMore()" id="morebutton1" style="color:cornflowerblue; text-decoration: underline; cursor: pointer; padding-inline: 5px; padding-bottom: 6px;">Show More</a>
<div id="morekms" style="display: none;" class="detaildiv">
<p class="pb-3 text-md font-bold">- Activation Certificate stored locally</p>
<p class="pb-3 text-md font-bold">- Reactivations (performed automatically) WILL ping the server your IP (TCP, duh)
@ -36,7 +36,7 @@
<p class="pb-3 text-lg font-bold">- Requires System Changes</p>
<p class="pb-3 text-lg font-bold">- Entirely Permanent, even on full wipe</p>
<p class="pb-3 text-lg font-bold">- Fully equivalent to digitally bought Windows, transfers to other PCs with this MS acc</p>
<a href="#" onclick="showMore()" id="morebutton2" style="color:cornflowerblue; text-decoration: underline; cursor: pointer; padding-inline: auto;">Show More</a>
<a href="#" onclick="showMore()" id="morebutton2" style="color:cornflowerblue; text-decoration: underline; cursor: pointer; padding-inline: 5px; padding-bottom: 6px;">Show More</a>
<div id="morehwid" style="display: none;" class="detaildiv">
<p class="pb-3 text-md font-bold">- Digital Activation Certificate stored on Microsoft Servers Forever</p>
<p class="pb-3 text-md font-bold">- Needs to download and modify an exe (gatherosstate.exe)found on win ISOs used for win7 migration</p>

@ -0,0 +1,77 @@
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="../css/dist.css" rel="stylesheet">
<title>Univator</title>
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" />
</head>
<body>
<div class="flex min-h-[100vh] justify-center items-center text-white" bg-[url('../../img/bground1.jpg')]>
<div class="md:max-w-[70vw] ml-auto mr-auto">
<div class="min-w-[60vw] rounded-3xl flex flex-wrap sm:flex-nowrap items-center py-10 sm:py-100 px-8 pb-10 justify-center text-center">
<div class="my-5 md:w-2/3 items-center justify-center text-center">
<p class="text-3xl pb-10 font-extrabold tracking-wide">Product Key Gen</p>
<p class="text-md md:text-xl font-normal tracking-wide pb-10">Select the appropriate windows edition you have</p>
<p class="text-md md:text-xl font-normal tracking-wide pb-10">Press the button to automatically download and generate "gatherosstatemodified.exe"</p>
<p><a id="settings" style="color:cornflowerblue; text-decoration: underline; cursor:pointer;">I don't know my windows edition</a></p>
<div class="text-center text-white">
<button type="button" class="rounded-xl w-full bg-indigo-900 my-2 py-5 my-2 px-5 text-sm md:text-xl font-bold tracking-wide justify-center items-center font-[manrope]" id="home">Home</button>
<button type="button" class="rounded-xl w-full bg-indigo-900 my-2 py-5 my-2 px-5 text-sm md:text-xl font-bold tracking-wide justify-center items-center font-[manrope]" id="pro">Pro</button>
<button type="button" class="rounded-xl w-full bg-indigo-900 my-2 py-5 my-2 px-5 text-sm md:text-xl font-bold tracking-wide justify-center items-center font-[manrope]" id="edu">Education</button>
<button type="button" class="rounded-xl w-full bg-indigo-900 my-2 py-5 my-2 px-5 text-sm md:text-xl font-bold tracking-wide justify-center items-center font-[manrope]" id="ent">Enterprise</button>
</div>
</div>
</div>
</div>
<div class="text-white bold fixed bottom-4 flex flex-row flex-wrap sm:flex-nowrap items-center mx-50 justify-center ml-auto mr-auto mx-100 px-2 pt-100 text-md bg-purple md:bg-transparent">
<button type="button" class="redir outline rounded-md py-1 md:py-3 bg-mycol2 px-3 md:px-7 outline-0 outline-white hover:bg-indigo-900 mx-2" onclick="location.href = './index.html';">
<span class="hidden md:inline">Back</span>
</button>
</div>
</div>
</body>
<script>
const { ipcRenderer } = require('electron');
document.getElementById("home").addEventListener("click", function(){
ipcRenderer.send("setIPK", "YTMG3-N6DKC-DKB77-7M9GH-8HVX7");
location.href = "genexe.html";
});
document.getElementById("pro").addEventListener("click", function(){
ipcRenderer.send("setIPK", "VK7JG-NPHTM-C97JM-9MPGT-3V66T");
location.href = "genexe.html";
});
document.getElementById("edu").addEventListener("click", function(){
ipcRenderer.send("setIPK", "YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY");
location.href = "genexe.html";
});
document.getElementById("ent").addEventListener("click", function(){
ipcRenderer.send("setIPK", "XGVPP-NMH47-7TTHJ-W3FW7-8HV2C");
location.href = "genexe.html";
});
document.getElementById("settings").addEventListener("click", function(){
ipcRenderer.send("activationSettings");
});
</script>
</html>

@ -0,0 +1,78 @@
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="../css/dist.css" rel="stylesheet">
<title>Univator</title>
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" />
</head>
<body>
<div class="flex min-h-[100vh] justify-center items-center text-white" bg-[url('../../img/bground1.jpg')]>
<div class="ml-auto mr-auto">
<div class="min-w-[60vw] rounded-3xl flex flex-wrap sm:flex-nowrap items-center py-10 sm:py-100 px-8 pb-10 justify-center text-center">
<div class="my-5 w-5/6 items-center justify-center text-center">
<p class="text-3xl pb-10 font-extrabold tracking-wide" id="title">Download and Generate gatherosstate.exe</p>
<div class="text-center text-white" id="okdiv">
<button type="button" class="rounded-xl w-full bg-indigo-900 my-2 py-5 my-2 px-5 text-sm md:text-xl font-bold tracking-wide justify-center items-center font-[manrope]" id="ok">Start →</button>
</div>
<p class="text-md md:text-xl font-normal tracking-wide pb-10" style="display: none;" id="label">Mirror: <span class="bold underline bg-white text-black">[https://download.microsoft.com/download/9/A/E/9AE69DD5-BA93-44E0-864E-180F5E700AB4/adk/Installers/14f4df8a2a7fc82a4f415cf6a341415d.cab]</span><br /><br /></p>
<button type="button" class="rounded-xl w-full bg-indigo-900 my-2 py-5 my-2 px-5 text-sm md:text-xl font-bold tracking-wide justify-center items-center font-[manrope] hidden" id="next" onclick="location.href = './genticket.html';">Continue →</button>
</div>
</div>
</div>
</div>
</body>
<script>
const { ipcRenderer } = require('electron');
document.getElementById('ok').addEventListener('click', () => {
ipcRenderer.send('downloadexe');
document.getElementById('okdiv').style.display = 'none';
document.getElementById('label').style.display = 'block';
document.getElementById('title').innerHTML = 'Downloading...';
});
ipcRenderer.on('exeDownloadOk', () => {
document.getElementById('label').innerHTML = 'Extracting and generating "gatherosstatemodified.exe"';
document.getElementById('title').innerHTML = 'Generating...';
ipcRenderer.send('genexe');
});
ipcRenderer.on('exeGenOk', () => {
document.getElementById('title').innerHTML = 'DONE!';
document.getElementById('next').style.display = 'block';
});
ipcRenderer.on('exeDownloadErr', () => {
document.getElementById('label').innerHTML += '<br /><span style="font-family: monospace; background-color: red;">[ERROR DOWNLOADING FILE / FILE CORRUPTED (SHA256) / NOT ON WINDOWS]</span>';
document.getElementById('title').innerHTML = 'ERROR';
});
ipcRenderer.on('exeGenErr', () => {
document.getElementById('label').innerHTML += '<br /><span style="font-family: monospace; background-color: red;">[ERROR GENERATING FILE / FILE CORRUPTED (SHA256) / NOT ON WINDOWS]</span>';
document.getElementById('title').innerHTML = 'ERROR';
});
ipcRenderer.on('stdout', (event, data) => {
document.getElementById('label').innerHTML += ('<br /><span style="font-family: monospace; background-color: black;">' + String(data).replace('"', '').replace('Y', '<span class=oppositec>').replace('Z', '</span>') + '</span>');
});
ipcRenderer.on('stderr', (event, data) => {
document.getElementById('label').innerHTML += ('<br /><span style="font-family: monospace; background-color: red;">' + String(data) + '</span>');
});
</script>
</html>

@ -18,10 +18,10 @@
<div class="items-center text-center justify-center text-white">
<div class="kmscontainer text-center w-full">
<div class="windows px-2">
<button type="button" class="rounded-xl w-full bg-mycol2 my-2 py-5 my-2 px-5 text-sm md:text-xl font-bold tracking-wide justify-center items-center font-[manrope]" onclick="location.href='../edt/10/index.html';"><img class="w-4/5 ml-auto mr-auto pb-7" src="../img/win11.png">windows 11</button>
<button type="button" class="rounded-xl w-full bg-mycol2 my-2 py-5 my-2 px-5 text-sm md:text-xl font-bold tracking-wide justify-center items-center font-[manrope]" onclick="location.href='edt.html';"><img class="w-4/5 ml-auto mr-auto pb-7" src="../img/win11.png">windows 11</button>
</div>
<div class="office px-2">
<button type="button" class="rounded-xl w-full bg-mycol2 my-2 py-5 my-2 px-5 text-sm md:text-xl font-bold tracking-wide justify-center items-center font-[manrope]" onclick="location.href='../edt/10/index.html';"><img class="w-4/5 ml-auto mr-auto pb-7" src="../img/win10.png">windows 10</button>
<button type="button" class="rounded-xl w-full bg-mycol2 my-2 py-5 my-2 px-5 text-sm md:text-xl font-bold tracking-wide justify-center items-center font-[manrope]" onclick="location.href='edt.html';"><img class="w-4/5 ml-auto mr-auto pb-7" src="../img/win10.png">windows 10</button>
</div>
</div>

Loading…
Cancel
Save