diff --git a/Makefile b/Makefile index 5e2ae0c..649560a 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/main.js b/main.js index ce20907..0d0fb9d 100644 --- a/main.js +++ b/main.js @@ -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() }) diff --git a/package-lock.json b/package-lock.json index 9a7cb98..9bbe2f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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", diff --git a/package.json b/package.json index f0dfbc4..1eb7756 100644 --- a/package.json +++ b/package.json @@ -12,5 +12,8 @@ "devDependencies": { "electron": "^24.1.0", "electron-builder": "^24.2.0" + }, + "dependencies": { + "crypto": "^1.0.1" } } diff --git a/webPage/css/dist.css b/webPage/css/dist.css index da086d0..5fee79d 100644 --- a/webPage/css/dist.css +++ b/webPage/css/dist.css @@ -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)); diff --git a/webPage/css/source.css b/webPage/css/source.css index 4c07621..17a0892 100644 --- a/webPage/css/source.css +++ b/webPage/css/source.css @@ -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; } \ No newline at end of file diff --git a/webPage/windows/index.html b/webPage/windows/index.html index 0fff265..223da7b 100644 --- a/webPage/windows/index.html +++ b/webPage/windows/index.html @@ -22,7 +22,7 @@

- Non-intrusive

- Easily Reversible (see options)

- Requires connection to e-KMS server every 180 days to refresh

- Show More + Show More