A powerful web-based tool to securely clone, obfuscate, and mirror GitHub repositories with advanced JavaScript protection.
Features β’ Tech Stack β’ Installation β’ Usage β’ Deployment β’ API β’ Contributing β’ License
- π Advanced JavaScript Obfuscation - Protect your code with military-grade obfuscation techniques
- π Repository Mirroring - Clone and mirror GitHub repositories seamlessly
- β‘ One-Click Deployment - Simple web interface for quick obfuscation
- π¨ Modern UI/UX - Beautiful, responsive design with glassmorphism effects
- π Secure Processing - GitHub tokens are never stored or logged
- π¦ Batch Processing - Automatically processes all JavaScript files in a repository
- βοΈ Smart Filtering - Skips configuration files (settings.js, config.js) automatically
- π Real-time Progress - Live updates during the obfuscation process
- πΎ Form Persistence - Auto-saves form data for convenience
- π Vercel Ready - Optimized for serverless deployment
- Node.js - JavaScript runtime environment
- Express.js - Fast, unopinionated web framework
- javascript-obfuscator - Advanced JavaScript obfuscation library
- simple-git - Git command wrapper for Node.js
- body-parser - Request body parsing middleware
- dotenv - Environment variable management
- HTML5 - Modern markup
- CSS3 - Advanced styling with gradients and glassmorphism
- Vanilla JavaScript - No framework overhead
- Google Fonts (Inter) - Clean, professional typography
- Vercel - Serverless deployment platform
- Nodemon - Development auto-reload
- Git - Version control
Before you begin, ensure you have the following installed:
- Node.js (v14.0.0 or higher) - Download
- npm (v6.0.0 or higher) - Comes with Node.js
- Git - Download
- GitHub Account - For repository access
- GitHub Personal Access Token - Create one here
git clone https://github.com/mrfr8nk/elitejsobfuscater.git
cd elitejsobfuscaternpm installCreate a .env file in the root directory:
PORT=7860
NODE_ENV=developmentnpm run devnpm startThe application will be available at http://localhost:7860
-
Navigate to the application in your browser
-
Fill in the form fields:
- Source GitHub Repo URL: The repository you want to obfuscate (e.g.,
https://github.com/username/source-repo) - Destination GitHub Repo URL: Where the obfuscated code will be pushed (e.g.,
https://github.com/username/dest-repo) - GitHub Personal Access Token: Your GitHub PAT with
repopermissions - Git Commit Username: Your GitHub username
- Git Commit Email: Your GitHub email
- Source GitHub Repo URL: The repository you want to obfuscate (e.g.,
-
Click "Obfuscate & Push" and watch the magic happen!
-
Monitor progress through the real-time progress tracker
The obfuscator applies the following transformations:
- β Control Flow Flattening - Makes code flow harder to understand
- β Dead Code Injection - Adds confusing but harmless code
- β String Array Encoding - Encrypts strings using RC4 encoding
- β Code Compacting - Removes whitespace and formatting
- β Custom Banner - Adds "Powered by MR FRANK π" header
settings.jsconfig.js- Non-JavaScript files
- Install Vercel CLI:
npm install -g vercel- Deploy:
vercel- Set Environment Variables (if needed) in Vercel Dashboard
heroku create your-app-name
git push heroku mainThe application is compatible with:
- Railway
- Render
- DigitalOcean App Platform
- AWS Elastic Beanstalk
- Google Cloud Run
Obfuscates a GitHub repository and pushes it to a destination repository.
{
"sourceRepo": "https://github.com/user/source",
"destRepo": "https://github.com/user/destination",
"token": "ghp_xxxxxxxxxxxx",
"gitUser": "username",
"gitEmail": "user@example.com"
}Success:
{
"success": true,
"message": "Obfuscation complete and pushed to destination repo!"
}Error:
{
"success": false,
"message": "Error: [error details]"
}Edit obfuscate.js to customize obfuscation parameters:
const obfuscationResult = JavaScriptObfuscator.obfuscate(code, {
compact: true,
controlFlowFlattening: true,
deadCodeInjection: true,
stringArray: true,
stringArrayEncoding: ['rc4'],
stringArrayThreshold: 0.75,
// Add more options from javascript-obfuscator docs
});Modify the banner in obfuscate.js:
const obfuscatedCode =
(options.banner || '// Your Custom Banner\n') +
obfuscationResult.getObfuscatedCode();Edit CSS variables in public/index.html:
:root {
--bg-start: #0b1220;
--bg-end: #251148;
--primary: #7c3aed;
--accent: #0ea5e9;
/* Customize colors */
}β οΈ Never commit your.envfile with sensitive tokensβ οΈ Use GitHub tokens with minimal required permissions (onlyreposcope)β οΈ Tokens are processed in memory and never stored on diskβ οΈ The app uses ephemeral storage (/tmp) for temporary repositoriesβ οΈ HTTPS is enforced for all repository URLsβ οΈ Force push is used - ensure destination repo is dedicated for obfuscated code
You can use the obfuscator programmatically:
const obfuscateDirectory = require('./obfuscate');
obfuscateDirectory('/path/to/your/project', {
banner: '// Custom banner text\n'
});Modify the exclusion logic in obfuscate.js:
if (file === 'settings.js' || file === 'config.js' || file === 'yourfile.js') {
console.log(`Skipping ${file}`);
continue;
}elitejsobfuscater/
βββ public/
β βββ index.html # Frontend UI
βββ obfuscate.js # Obfuscation logic
βββ server.js # Express server
βββ package.json # Dependencies
βββ vercel.json # Vercel configuration
βββ README.md # Documentation
npm start # Start production server
npm run dev # Start development server with auto-reload- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Issue: Port already in use
# Solution: Change port in .env or kill process
PORT=8080 npm startIssue: GitHub authentication failed
# Solution: Verify your PAT has 'repo' permissions
# Regenerate token at: https://github.com/settings/tokensIssue: Obfuscation fails
# Solution: Check if source repo contains valid JavaScript files
# Ensure you have read access to source repo- Processing Speed: ~100-500 files per minute (depends on file size)
- Memory Usage: ~50-200MB during obfuscation
- Supported File Size: Up to 10MB per JavaScript file
- Concurrent Requests: Supports multiple simultaneous obfuscations
Contributions are what make the open-source community amazing! Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Please be respectful and constructive in all interactions.
Distributed under the MIT License. See LICENSE file for more information.
If you find this project helpful, please consider:
- β Starring the repository
- π Reporting bugs
- π‘ Suggesting new features
- π Improving documentation
- javascript-obfuscator - The core obfuscation library
- simple-git - Git operations in Node.js
- Thanks to the javascript-obfuscator team for the amazing obfuscation library
- Inspired by the need for code protection in open-source projects
- Built with passion for the developer community
β‘ Powered by JavaScript Obfuscator Β· Secured with β€οΈ
If you have any questions or need help, feel free to open an issue!