mirror of
https://github.com/zarfadev/WinRAR-Keygen.git
synced 2026-07-15 15:18:49 +00:00
Initial commit
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
# Auto detect text files and perform LF normalization
|
||||
* text=auto
|
||||
+384
@@ -0,0 +1,384 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" class="antialiased">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>WinRAR Keygen</title>
|
||||
<link rel="icon" href="https://i.imgur.com/FtcF9ZP.png" />
|
||||
<meta name="description" content="Professional Key Generator for WinRAR - Designed by Zarfala" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<script>
|
||||
tailwind.config = {
|
||||
darkMode: "class",
|
||||
theme: {
|
||||
extend: {
|
||||
fontFamily: { sans: ['Outfit', 'sans-serif'] },
|
||||
colors: {
|
||||
primary: {
|
||||
50: '#eef2ff', 100: '#e0e7ff', 200: '#c3dafe', 300: '#a3bffa',
|
||||
400: '#7f9cf5', 500: '#667eea', 600: '#5a67d8', 700: '#4c51bf',
|
||||
800: '#434190', 900: '#3c366b',
|
||||
}
|
||||
},
|
||||
animation: {
|
||||
'blob': 'blob 7s infinite',
|
||||
'fade-in-up': 'fadeInUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards',
|
||||
},
|
||||
keyframes: {
|
||||
blob: {
|
||||
'0%': { transform: 'translate(0px, 0px) scale(1)' },
|
||||
'33%': { transform: 'translate(30px, -50px) scale(1.1)' },
|
||||
'66%': { transform: 'translate(-20px, 20px) scale(0.9)' },
|
||||
'100%': { transform: 'translate(0px, 0px) scale(1)' },
|
||||
},
|
||||
fadeInUp: {
|
||||
'0%': { opacity: '0', transform: 'translateY(40px)' },
|
||||
'100%': { opacity: '1', transform: 'translateY(0)' },
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
|
||||
document.documentElement.classList.add('dark');
|
||||
} else {
|
||||
document.documentElement.classList.remove('dark');
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Outfit', sans-serif;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: rgba(156, 163, 175, 0.5);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: rgba(107, 114, 128, 0.8);
|
||||
}
|
||||
|
||||
.glass-panel {
|
||||
background: rgba(255, 255, 255, 0.85);
|
||||
backdrop-filter: blur(40px);
|
||||
-webkit-backdrop-filter: blur(40px);
|
||||
border: 1px solid rgba(255, 255, 255, 0.6);
|
||||
box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(255, 255, 255, 0.4) inset;
|
||||
}
|
||||
|
||||
.dark .glass-panel {
|
||||
background: rgba(15, 23, 42, 0.75);
|
||||
backdrop-filter: blur(40px);
|
||||
-webkit-backdrop-filter: blur(40px);
|
||||
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||
box-shadow: 0 30px 60px -12px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(255, 255, 255, 0.05) inset;
|
||||
}
|
||||
|
||||
.input-modern {
|
||||
background: rgba(255, 255, 255, 0.7);
|
||||
border: 2px solid rgba(209, 213, 219, 0.6);
|
||||
color: #1f2937;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.input-modern:focus {
|
||||
background: #ffffff;
|
||||
border-color: #667eea;
|
||||
box-shadow: 0 0 0 4px rgba(102, 126, 234, 0.2);
|
||||
}
|
||||
|
||||
.dark .input-modern {
|
||||
background: rgba(15, 23, 42, 0.7);
|
||||
border: 2px solid rgba(71, 85, 105, 0.6);
|
||||
color: #f8fafc;
|
||||
}
|
||||
|
||||
.dark .input-modern:focus {
|
||||
background: rgba(15, 23, 42, 0.95);
|
||||
border-color: #7f9cf5;
|
||||
box-shadow: 0 0 0 4px rgba(127, 156, 245, 0.2);
|
||||
}
|
||||
|
||||
.btn-gradient {
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
background-size: 200% auto;
|
||||
color: white;
|
||||
transition: 0.5s ease;
|
||||
box-shadow: 0 10px 20px -5px rgba(102, 126, 234, 0.4);
|
||||
}
|
||||
|
||||
.btn-gradient:hover {
|
||||
background-position: right center;
|
||||
box-shadow: 0 15px 25px -5px rgba(102, 126, 234, 0.5);
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.btn-gradient:active {
|
||||
transform: translateY(1px);
|
||||
box-shadow: 0 5px 10px -5px rgba(102, 126, 234, 0.4);
|
||||
}
|
||||
|
||||
.animate-gradient-text {
|
||||
background-size: 300%;
|
||||
animation: gradientText 6s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes gradientText {
|
||||
0% {
|
||||
background-position: 0% 50%;
|
||||
}
|
||||
|
||||
50% {
|
||||
background-position: 100% 50%;
|
||||
}
|
||||
|
||||
100% {
|
||||
background-position: 0% 50%;
|
||||
}
|
||||
}
|
||||
|
||||
/* VIP Aurora Stripes Background */
|
||||
@keyframes aurora {
|
||||
from {
|
||||
background-position: 50% 50%, 50% 50%;
|
||||
}
|
||||
|
||||
to {
|
||||
background-position: 350% 50%, 350% 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.jumbo {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
z-index: 0;
|
||||
pointer-events: none;
|
||||
--stripes: repeating-linear-gradient(100deg, #fff 0%, #fff 7%, transparent 10%, transparent 12%, #fff 16%);
|
||||
--stripesDark: repeating-linear-gradient(100deg, #000 0%, #000 7%, transparent 10%, transparent 12%, #000 16%);
|
||||
--rainbow: repeating-linear-gradient(100deg, #60a5fa 10%, #e879f9 15%, #60a5fa 20%, #5eead4 25%, #60a5fa 30%);
|
||||
mask-image: radial-gradient(ellipse at center, black 40%, transparent 80%);
|
||||
-webkit-mask-image: radial-gradient(ellipse at center, black 40%, transparent 80%);
|
||||
background-image: var(--stripes), var(--rainbow);
|
||||
background-size: 300%, 200%;
|
||||
background-position: 50% 50%, 50% 50%;
|
||||
filter: blur(15px) invert(100%);
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.jumbo::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image: var(--stripes), var(--rainbow);
|
||||
background-size: 200%, 100%;
|
||||
animation: aurora 40s linear infinite;
|
||||
mix-blend-mode: difference;
|
||||
}
|
||||
|
||||
.dark .jumbo {
|
||||
background-image: var(--stripesDark), var(--rainbow);
|
||||
filter: blur(15px) opacity(60%) saturate(200%);
|
||||
}
|
||||
|
||||
.dark .jumbo::after {
|
||||
background-image: var(--stripesDark), var(--rainbow);
|
||||
}
|
||||
|
||||
[x-cloak] {
|
||||
display: none !important;
|
||||
}
|
||||
</style>
|
||||
<!-- Alpine.js for lightweight reactivity -->
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script>
|
||||
</head>
|
||||
|
||||
<body class="transition-colors duration-500 bg-slate-50 dark:bg-black font-sans text-slate-800 dark:text-slate-200">
|
||||
|
||||
<main id="main-content" class="antialiased" x-data="keygenApp()" x-cloak>
|
||||
<div class="relative flex min-h-screen flex-col items-center justify-center overflow-hidden px-4 py-8">
|
||||
|
||||
<!-- Abstract Animated Background Elements -->
|
||||
<div class="absolute inset-0 overflow-hidden pointer-events-none">
|
||||
<div class="jumbo"></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="z-10 w-full max-w-2xl mx-auto animate-fade-in-up relative mt-12 sm:mt-0">
|
||||
<div class="glass-panel rounded-3xl p-8 md:p-12 transition-all duration-300 relative overflow-hidden">
|
||||
<div
|
||||
class="absolute inset-0 bg-gradient-to-tr from-white/5 to-white/0 dark:from-white/5 dark:to-transparent pointer-events-none rounded-3xl">
|
||||
</div>
|
||||
|
||||
<header class="mb-10 text-center relative z-10">
|
||||
<div class="absolute top-0 right-0 sm:-top-4 sm:-right-4 flex items-center space-x-3 z-50">
|
||||
<!-- Custom Lang Selector -->
|
||||
<div class="relative" x-data="{ open: false }" @click.away="open = false">
|
||||
<button @click="open = !open" type="button"
|
||||
class="flex items-center space-x-2 bg-white/60 dark:bg-slate-800/60 border border-slate-200 dark:border-slate-700 shadow-sm text-sm rounded-full py-2 px-3 text-slate-700 dark:text-slate-300 focus:outline-none hover:bg-white dark:hover:bg-slate-800 transition-all">
|
||||
<img :src="lang === 'en' ? 'https://flagcdn.com/h20/us.png' : 'https://flagcdn.com/h20/es.png'"
|
||||
class="w-auto h-4 rounded-[1px]" alt="flag">
|
||||
<span class="font-bold uppercase tracking-wide text-xs" x-text="lang"></span>
|
||||
</button>
|
||||
|
||||
<div x-show="open" x-transition.opacity style="display: none;"
|
||||
class="absolute right-0 mt-2 w-36 bg-white dark:bg-slate-800 rounded-xl shadow-lg border border-slate-200 dark:border-slate-700 py-1.5 z-50 overflow-hidden">
|
||||
<button type="button" @click="lang = 'en'; updateLanguage(); open = false"
|
||||
class="w-full text-left flex items-center space-x-3 px-4 py-2.5 hover:bg-slate-100 dark:hover:bg-slate-700 text-sm font-semibold text-slate-700 dark:text-slate-300 transition-colors">
|
||||
<img src="https://flagcdn.com/h20/us.png" class="w-auto h-4 rounded-[1px]"
|
||||
alt="EN">
|
||||
<span>English</span>
|
||||
</button>
|
||||
<button type="button" @click="lang = 'es'; updateLanguage(); open = false"
|
||||
class="w-full text-left flex items-center space-x-3 px-4 py-2.5 hover:bg-slate-100 dark:hover:bg-slate-700 text-sm font-semibold text-slate-700 dark:text-slate-300 transition-colors">
|
||||
<img src="https://flagcdn.com/h20/es.png" class="w-auto h-4 rounded-[1px]"
|
||||
alt="ES">
|
||||
<span>Español</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Custom Theme Toggler -->
|
||||
<button @click="toggleTheme()"
|
||||
class="p-2 sm:p-2.5 rounded-full bg-white/60 dark:bg-slate-800/60 border border-slate-200 dark:border-slate-700 shadow-sm text-slate-600 dark:text-slate-300 hover:bg-white dark:hover:bg-slate-800 transition-all focus:outline-none"
|
||||
aria-label="Toggle Theme">
|
||||
<svg x-show="isDark()" class="w-4 h-4 sm:w-5 sm:h-5" fill="none" viewBox="0 0 24 24"
|
||||
stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" />
|
||||
</svg>
|
||||
<svg x-show="!isDark()" class="w-4 h-4 sm:w-5 sm:h-5" fill="none" viewBox="0 0 24 24"
|
||||
stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
class="inline-flex items-center justify-center space-x-2 px-3 py-1 mb-6 rounded-full bg-primary-100 dark:bg-primary-900/40 border border-primary-200 dark:border-primary-800 text-xs font-semibold text-primary-700 dark:text-primary-300">
|
||||
<span class="flex h-2 w-2 relative">
|
||||
<span
|
||||
class="animate-ping absolute inline-flex h-full w-full rounded-full bg-primary-400 opacity-75"></span>
|
||||
<span class="relative inline-flex rounded-full h-2 w-2 bg-primary-500"></span>
|
||||
</span>
|
||||
<span x-text="t.badge">Any Version Compatible</span>
|
||||
</div>
|
||||
|
||||
<h1
|
||||
class="flex flex-wrap items-center justify-center gap-x-3 text-4xl sm:text-5xl font-extrabold tracking-tight text-slate-900 dark:text-white mb-2">
|
||||
<span>WinRAR</span>
|
||||
<span
|
||||
class="text-transparent bg-clip-text bg-gradient-to-r from-blue-600 via-pink-500 to-indigo-600 animate-gradient-text inline-block py-2 pr-2">
|
||||
Keygen
|
||||
</span>
|
||||
</h1>
|
||||
<p class="text-slate-500 dark:text-slate-400 mt-2 text-sm sm:text-base max-w-sm mx-auto"
|
||||
x-text="t.subtitle">
|
||||
Fast, reliable and automatic license generator.
|
||||
</p>
|
||||
</header>
|
||||
|
||||
<form @submit.prevent="generate" class="relative z-10 space-y-6">
|
||||
|
||||
<div>
|
||||
<label for="userName"
|
||||
class="block text-sm font-semibold text-slate-700 dark:text-slate-300 mb-1.5 ml-1"
|
||||
x-text="t.usernameLabel">Username</label>
|
||||
<div class="relative">
|
||||
<div
|
||||
class="absolute inset-y-0 left-0 flex items-center pl-4 pointer-events-none text-slate-400">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
<input type="text" id="userName" x-model="userName" :placeholder="t.usernamePlaceholder"
|
||||
required
|
||||
class="input-modern block w-full pl-11 pr-4 py-3.5 rounded-xl outline-none" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="licenseType"
|
||||
class="block text-sm font-semibold text-slate-700 dark:text-slate-300 mb-1.5 ml-1"
|
||||
x-text="t.editionLabel">License Type</label>
|
||||
<div class="relative">
|
||||
<div
|
||||
class="absolute inset-y-0 left-0 flex items-center pl-4 pointer-events-none text-slate-400">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z">
|
||||
</path>
|
||||
</svg>
|
||||
</div>
|
||||
<input type="text" id="licenseType" x-model="licenseType"
|
||||
:placeholder="t.editionPlaceholder" required
|
||||
class="input-modern block w-full pl-11 pr-4 py-3.5 rounded-xl outline-none" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pt-4">
|
||||
<button type="submit"
|
||||
class="btn-gradient w-full py-4 px-6 rounded-xl text-lg font-bold uppercase tracking-wider flex items-center justify-center gap-2 focus:outline-none focus:ring-4 focus:ring-primary-500/50 transition-all">
|
||||
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"></path>
|
||||
</svg>
|
||||
<span x-text="t.generateBtn">Generate License</span>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer class="mt-14 relative z-10">
|
||||
<div class="flex flex-col items-center space-y-3">
|
||||
<div
|
||||
class="flex items-center space-x-2 bg-white/40 dark:bg-slate-800/40 px-4 py-1.5 rounded-full border border-slate-200 dark:border-slate-700 backdrop-blur-sm">
|
||||
<span class="text-xs font-medium text-slate-600 dark:text-slate-400">Handcrafted
|
||||
with</span>
|
||||
<span class="animate-pulse text-red-500">❤</span>
|
||||
<span class="text-xs font-medium text-slate-600 dark:text-slate-400">by</span>
|
||||
<span
|
||||
class="text-xs font-extrabold bg-clip-text text-transparent bg-gradient-to-r from-purple-500 to-pink-500">Zarfala</span>
|
||||
</div>
|
||||
<div class="text-[11px] font-medium text-slate-500 tracking-wide">
|
||||
v1.0 © 2026 All rights reserved
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div x-show="toast.show" x-transition.opacity.duration.300ms
|
||||
class="fixed bottom-6 right-6 px-6 py-4 rounded-xl shadow-2xl z-50 flex items-center gap-3 backdrop-blur-md font-semibold text-sm border bg-green-50/90 dark:bg-green-900/90 text-green-700 dark:text-green-100 border-green-200 dark:border-green-800">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
|
||||
</svg>
|
||||
<span x-text="toast.message"></span>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<script src="./js/keygen.js"></script>
|
||||
<script src="./js/app.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,92 @@
|
||||
const translations = {
|
||||
en: {
|
||||
badge: "Any Version Compatible",
|
||||
subtitle: "Fast, reliable and automatic license generator.",
|
||||
usernameLabel: "Username",
|
||||
usernamePlaceholder: "e.g. My Company Inc",
|
||||
editionLabel: "License Type",
|
||||
editionPlaceholder: "e.g. Unlimited Company License",
|
||||
generateBtn: "Generate License",
|
||||
successMsg: "rarreg.key downloaded securely!"
|
||||
},
|
||||
es: {
|
||||
badge: "Compatible con cualquier versión",
|
||||
subtitle: "Generador de licencias rápido, confiable y automático.",
|
||||
usernameLabel: "Nombre de usuario",
|
||||
usernamePlaceholder: "ej. My Company Inc",
|
||||
editionLabel: "Tipo de licencia",
|
||||
editionPlaceholder: "ej. Unlimited Company License",
|
||||
generateBtn: "Generar Licencia",
|
||||
successMsg: "¡rarreg.key descargado con éxito!"
|
||||
}
|
||||
};
|
||||
|
||||
document.addEventListener('alpine:init', () => {
|
||||
Alpine.data('keygenApp', () => ({
|
||||
lang: 'en',
|
||||
t: translations['en'],
|
||||
userName: 'My Company Inc',
|
||||
licenseType: 'Unlimited Company License',
|
||||
toast: { show: false, message: '' },
|
||||
|
||||
init() {
|
||||
// Load preferred language from localStorage
|
||||
const savedLang = localStorage.getItem('winrarKeygenLang');
|
||||
if (savedLang && translations[savedLang]) {
|
||||
this.lang = savedLang;
|
||||
this.t = translations[savedLang];
|
||||
}
|
||||
},
|
||||
|
||||
updateLanguage() {
|
||||
this.t = translations[this.lang];
|
||||
localStorage.setItem('winrarKeygenLang', this.lang);
|
||||
},
|
||||
|
||||
isDark() {
|
||||
return document.documentElement.classList.contains('dark');
|
||||
},
|
||||
|
||||
toggleTheme() {
|
||||
if (this.isDark()) {
|
||||
document.documentElement.classList.remove('dark');
|
||||
localStorage.theme = 'light';
|
||||
} else {
|
||||
document.documentElement.classList.add('dark');
|
||||
localStorage.theme = 'dark';
|
||||
}
|
||||
},
|
||||
|
||||
showToast(msg) {
|
||||
this.toast.message = msg;
|
||||
this.toast.show = true;
|
||||
setTimeout(() => {
|
||||
this.toast.show = false;
|
||||
}, 3000);
|
||||
},
|
||||
|
||||
generate() {
|
||||
if (!this.userName || !this.licenseType) return;
|
||||
|
||||
try {
|
||||
// Generate the raw license string
|
||||
const keyData = generateWinRARLicense(this.userName, this.licenseType);
|
||||
|
||||
// Use Data URI instead of Blob to prevent UUID filenames on file:// protocol
|
||||
const link = document.createElement("a");
|
||||
link.setAttribute("href", "data:application/octet-stream;charset=utf-8," + encodeURIComponent(keyData));
|
||||
link.setAttribute("download", "rarreg.key");
|
||||
|
||||
// Programmatically trigger download
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
|
||||
this.showToast(this.t.successMsg);
|
||||
} catch (err) {
|
||||
console.error("Error generating key:", err);
|
||||
alert("Error: " + err.message);
|
||||
}
|
||||
}
|
||||
}));
|
||||
});
|
||||
+213
@@ -0,0 +1,213 @@
|
||||
window.generateWinRARLicense = function(username, licenseType) {
|
||||
let $ = function f() {
|
||||
let $ = new Uint32Array(32767), e = 1;
|
||||
$[0] = 1;
|
||||
for (let n = 1; n < 32767; n++)
|
||||
(e <<= 1) > 32767 && (e ^= 32771),
|
||||
$[n] = e;
|
||||
return $
|
||||
}();
|
||||
|
||||
let e = function f() {
|
||||
let e = new Uint32Array(32768);
|
||||
e[1] = 0;
|
||||
for (let n = 0; n < 32767; n++)
|
||||
e[$[n]] = n;
|
||||
return e[0] = 0, e
|
||||
}();
|
||||
|
||||
function n(f) {
|
||||
for (var $ = 0n, e = 0; e < f.length; e++)
|
||||
$ += BigInt(255 & f[e].charCodeAt(0)) << BigInt(8 * e);
|
||||
return $
|
||||
}
|
||||
|
||||
function r(f, $) {
|
||||
var e = "", n = 0n, r = 0;
|
||||
n = BigInt(f);
|
||||
for (var t = 0; t < $; t++)
|
||||
e = String.fromCharCode(r = 255 & Number(n % BigInt(256))) + e,
|
||||
n >>= 8n;
|
||||
return e
|
||||
}
|
||||
|
||||
function t(f) {
|
||||
for (var $ = "", e = 0; e < f.length; e++)
|
||||
$ += (255 & f[e].charCodeAt(0)).toString(16).padStart(2, "0");
|
||||
return $
|
||||
}
|
||||
|
||||
function a(f, $) { return f ^ $ }
|
||||
function x(f, $) { return f ^ $ }
|
||||
|
||||
function i(f, n) {
|
||||
function r(f, n) {
|
||||
return 0 == f || 0 == n ? 0 : $[(e[f] + e[n]) % 32767]
|
||||
}
|
||||
if (0n == f || 0n == n) return 0n;
|
||||
var t, a, x, i = new Uint32Array(17), o = new Uint32Array(17), u = new Uint32Array(34);
|
||||
for (t = 0; t < 17; t++)
|
||||
i[t] = Number(32767n & f), o[t] = Number(32767n & n), f >>= 15n, n >>= 15n;
|
||||
for (t = 0; t < 34; t++) u[t] = 0;
|
||||
for (t = 0; t < 17; t++)
|
||||
for (a = 0; a < 17; a++)
|
||||
u[t + a] ^= r(i[t], o[a]);
|
||||
for (t = 33; t > 16; t--)
|
||||
u[t - 17] ^= u[t], u[t - 14] ^= u[t], u[t] = 0;
|
||||
for (t = 16, x = 0n; t > 0; t--)
|
||||
x = x + BigInt(u[t]) << 15n;
|
||||
return x + BigInt(u[0])
|
||||
}
|
||||
|
||||
function o(f, n) {
|
||||
return i(f, function f(n) {
|
||||
var r, t, a, x;
|
||||
if (0n == n) return 0n;
|
||||
for (x = 0, r = n, t = 1n, a = 0n; x < 16; x++)
|
||||
r = i(r, r), r = i(r, r), r = i(r, r), r = i(r, r),
|
||||
r = i(r, r), r = i(r, r), r = i(r, r), r = i(r, r),
|
||||
r = i(r, r), r = i(r, r), r = i(r, r), r = i(r, r),
|
||||
r = i(r, r), r = i(r, r), r = i(r, r), t = i(t, r);
|
||||
return a = BigInt($[(32767 - e[Number(32767n & (a = i(t, n)))]) % 32767]),
|
||||
t = i(t, a)
|
||||
}(n))
|
||||
}
|
||||
|
||||
function u(f, $) {
|
||||
var e, n, r, t, a, x, u, c, _, s, b, g, l, d, h, p, v, y, C, m, w, k, A;
|
||||
return (e = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn & f,
|
||||
n = f >> 255n & 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn,
|
||||
r = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn & $,
|
||||
t = $ >> 255n & 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn,
|
||||
f == $) ? function f($) {
|
||||
var e, n, r, t, a, x, u, c, _, s, b, g;
|
||||
if (0n == $) return $;
|
||||
return e = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn & $,
|
||||
r = (x = o(n = $ >> 255n & 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn, e),
|
||||
x ^ (u = e)),
|
||||
t = (c = i(r, r), c ^ (_ = r)),
|
||||
a = (b = i(1n ^ (s = r), t), b ^ (g = i(e, e))),
|
||||
t | a << 255n
|
||||
}(f) : 0n == e && 0n == n ? $ : 0n == r && 0n == t ? f : 0n == e && 0n == r && 0n != n && 0n != t ? 0n : (x = (p = (g = a = o((c = n,
|
||||
c ^ (_ = t)), (s = e, s ^ (b = r))), g ^ (l = i(a, a))),
|
||||
p ^ (v = (d = e, d ^ (h = r)))),
|
||||
u = (k = i(a, (y = e, y ^ (C = x))),
|
||||
k ^ (A = (m = x, m ^ (w = n)))),
|
||||
x | u << 255n)
|
||||
}
|
||||
|
||||
function c(f, $) {
|
||||
var e, n, r;
|
||||
if (0n == f) return 0n;
|
||||
for (e = f % 0x1026dd85081b82314691ced9bbec30547840e4bf72d8b5e0d258442bbcd31n, n = $, r = 0n; 0n != e; )
|
||||
(1n & e) != 0n && (r = u(r, n)), n = u(n, n), e >>= 1n;
|
||||
return r
|
||||
}
|
||||
|
||||
function _(f) {
|
||||
if (0 == f.length) return "\x81\xb7>\xeb)S&P\xa3\xf4^\xdc\xd5\xb9GhL;\xe4\xcd";
|
||||
var $, e = new Uint8Array(20), n = "", r = 0;
|
||||
for (r = 0, $ = function f($) {
|
||||
function e(f, $) { return f << $ | f >>> 32 - $ }
|
||||
function n(f) {
|
||||
var $ = "";
|
||||
return $ += (f >>> 28 & 15).toString(16), $ += (f >>> 24 & 15).toString(16),
|
||||
$ += (f >>> 20 & 15).toString(16), $ += (f >>> 16 & 15).toString(16),
|
||||
$ += (f >>> 12 & 15).toString(16), $ += (f >>> 8 & 15).toString(16),
|
||||
$ += (f >>> 4 & 15).toString(16), $ += (15 & f).toString(16)
|
||||
}
|
||||
var r, t, a, x, i, o, u, c, _, s = Array(80), b = 1732584193, g = 4023233417, l = 2562383102, d = 271733878, h = 3285377520, p = $.length, v = [];
|
||||
for (t = 0; t < p - 3; t += 4)
|
||||
a = $.charCodeAt(t) << 24 | $.charCodeAt(t + 1) << 16 | $.charCodeAt(t + 2) << 8 | $.charCodeAt(t + 3),
|
||||
v.push(a);
|
||||
switch (p % 4) {
|
||||
case 0: t = 2147483648; break;
|
||||
case 1: t = $.charCodeAt(p - 1) << 24 | 8388608; break;
|
||||
case 2: t = $.charCodeAt(p - 2) << 24 | $.charCodeAt(p - 1) << 16 | 32768; break;
|
||||
case 3: t = $.charCodeAt(p - 3) << 24 | $.charCodeAt(p - 2) << 16 | $.charCodeAt(p - 1) << 8 | 128
|
||||
}
|
||||
for (v.push(t); v.length % 16 != 14; ) v.push(0);
|
||||
for (v.push(p >>> 29), v.push(p << 3 & 4294967295), r = 0; r < v.length; r += 16) {
|
||||
for (t = 0; t < 16; t++) s[t] = v[r + t];
|
||||
for (t = 16; t <= 79; t++) s[t] = e(s[t - 3] ^ s[t - 8] ^ s[t - 14] ^ s[t - 16], 1);
|
||||
for (t = 0, x = b, i = g, o = l, u = d, c = h; t <= 19; t++)
|
||||
_ = e(x, 5) + (i & o | ~i & u) + c + s[t] + 1518500249 & 4294967295,
|
||||
c = u, u = o, o = e(i, 30), i = x, x = _;
|
||||
for (t = 20; t <= 39; t++)
|
||||
_ = e(x, 5) + (i ^ o ^ u) + c + s[t] + 1859775393 & 4294967295,
|
||||
c = u, u = o, o = e(i, 30), i = x, x = _;
|
||||
for (t = 40; t <= 59; t++)
|
||||
_ = e(x, 5) + (i & o | i & u | o & u) + c + s[t] + 2400959708 & 4294967295,
|
||||
c = u, u = o, o = e(i, 30), i = x, x = _;
|
||||
for (t = 60; t <= 79; t++)
|
||||
_ = e(x, 5) + (i ^ o ^ u) + c + s[t] + 3395469782 & 4294967295,
|
||||
c = u, u = o, o = e(i, 30), i = x, x = _;
|
||||
b = b + x & 4294967295, g = g + i & 4294967295, l = l + o & 4294967295, d = d + u & 4294967295, h = h + c & 4294967295
|
||||
}
|
||||
return (n(b) + n(g) + n(l) + n(d) + n(h)).toLowerCase()
|
||||
}(f); r < 20; r++)
|
||||
e[r] = 255 & Number("0x" + $.substring(2 * r, 2 * r + 2));
|
||||
for (r = 0; r < 5; r++)
|
||||
n += String.fromCharCode(e[4 * r + 3]), n += String.fromCharCode(e[4 * r + 2]),
|
||||
n += String.fromCharCode(e[4 * r + 1]), n += String.fromCharCode(e[4 * r + 0]);
|
||||
return n
|
||||
}
|
||||
|
||||
function s(f) {
|
||||
var $ = _(f), e = "";
|
||||
return e += _("\x01\0\0\0" + $).substring(0, 2), e += _("\x02\0\0\0" + $).substring(0, 2),
|
||||
e += _("\x03\0\0\0" + $).substring(0, 2), e += _("\x04\0\0\0" + $).substring(0, 2),
|
||||
e += _("\x05\0\0\0" + $).substring(0, 2), e += _("\x06\0\0\0" + $).substring(0, 2),
|
||||
e += _("\x07\0\0\0" + $).substring(0, 2), e += _("\b\0\0\0" + $).substring(0, 2),
|
||||
e += _(" \0\0\0" + $).substring(0, 2), e += _("\n\0\0\0" + $).substring(0, 2),
|
||||
e += _("\v\0\0\0" + $).substring(0, 2), e += _("\f\0\0\0" + $).substring(0, 2),
|
||||
e += _("\r\0\0\0" + $).substring(0, 2), e += _("\x0e\0\0\0" + $).substring(0, 2),
|
||||
e += _("\x0f\0\0\0" + $).substring(0, 2)
|
||||
}
|
||||
|
||||
function b(f) {
|
||||
var $ = 0n, e = 0n, r = 0n, t = 0n, a = 0n, x = 0n;
|
||||
return r = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn & (e = c($ = n(f), 0x106d197457e485be7873b5ef2224b5a683ca02a73753079c43412318997c98d3d6fdcbc6a27acee0cc2996e0096ae74feb1acf220a2341b898b549440297b8ccn)),
|
||||
t = e >> 255n & 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn,
|
||||
(a = 2n * r) + (x = 1n & o(t, r))
|
||||
}
|
||||
|
||||
function g(f) {
|
||||
var $, e = 0n, r = new Uint32Array(2), t = 0n, a = 0n;
|
||||
return crypto.getRandomValues(r),
|
||||
e = e + BigInt(r[0]) << 32n, e += BigInt(r[1]), e &= 255n,
|
||||
t = ((0x1026dd85081b82314691ced9bbec30547840e4bf72d8b5e0d258442bbcd31n << 512n) + (0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn & c(e, 0x106d197457e485be7873b5ef2224b5a683ca02a73753079c43412318997c98d3d6fdcbc6a27acee0cc2996e0096ae74feb1acf220a2341b898b549440297b8ccn)) + n(_($ = f) + "C\x8d\xfd\x0f|<\xe3\xb4\xd1\x1b")) % 0x1026dd85081b82314691ced9bbec30547840e4bf72d8b5e0d258442bbcd31n,
|
||||
a = ((0x1026dd85081b82314691ced9bbec30547840e4bf72d8b5e0d258442bbcd31n << 512n) + e - 0x59fe6abcca90bdb95f0105271fa85fb9f11f467450c1ae9044b7fd61d65en * t) % 0x1026dd85081b82314691ced9bbec30547840e4bf72d8b5e0d258442bbcd31n,
|
||||
[t, a]
|
||||
}
|
||||
|
||||
// Main License Generation Logic
|
||||
var n_val = "", a_val = "", x_val = "", i_val = "", o_val = "", u_val = "", c_val = 0n, _val = 0n, l_val = "", d_val = "", h_val = 0n, p_val = 0n, v_val = "", y_val = "", C_val = "", m_val = "";
|
||||
|
||||
for (u_val = t("`" + (n_val = r(b(s(username)), 32)).substring(0, 24)), x_val = t(r(b(s(u_val)), 32)); ; ) {
|
||||
var [c_val,_val] = g(licenseType);
|
||||
if (c_val < 1n << 240n - 1n && _val < 1n << 240n - 1n) break
|
||||
}
|
||||
|
||||
for (l_val = t(r(c_val, 30)), i_val = "60" + (d_val = t(r(_val, 30))) + l_val; ; ) {
|
||||
var [h_val,p_val] = g(username + x_val);
|
||||
if (h_val < 1n << 240n - 1n && p_val < 1n << 240n - 1n) break
|
||||
}
|
||||
|
||||
v_val = t(r(h_val, 30));
|
||||
a_val = "6412212250" + (a_val = x_val + i_val + (o_val = "60" + (y_val = t(r(p_val, 30))) + v_val) + u_val) + (function f($) {
|
||||
for (var e, n = [], r = 0; r < 256; r++) {
|
||||
e = r;
|
||||
for (var t = 0; t < 8; t++)
|
||||
e = 1 & e ? 3988292384 ^ e >>> 1 : e >>> 1;
|
||||
n[r] = e
|
||||
}
|
||||
for (var a = -1, x = 0; x < $.length; x++)
|
||||
a = a >>> 8 ^ n[255 & (a ^ $.charCodeAt(x))];
|
||||
return (-1 ^ a) >>> 0
|
||||
}(licenseType + username + a_val)).toString(10).padStart(10, "0");
|
||||
|
||||
m_val = "RAR registration data\n" + username + "\n" + licenseType + "\nUID=" + (C_val = t(n_val.substring(24, 32)) + x_val.substring(0, 4)) + "\n" + a_val.substring(0, 54) + "\n" + a_val.substring(54, 108) + "\n" + a_val.substring(108, 162) + "\n" + a_val.substring(162, 216) + "\n" + a_val.substring(216, 270) + "\n" + a_val.substring(270, 324) + "\n" + a_val.substring(324, 378) + "\n";
|
||||
|
||||
return m_val;
|
||||
}
|
||||
Reference in New Issue
Block a user