@midasr/novashadowcookie
v1.6.0
Published
Module NPM natif pour le décryptage des données Chrome App-Bound Encryption, compatible avec Node.js et Bun
Downloads
9
Maintainers
Readme
Chrome Decrypt Native
Module NPM natif pour le décryptage des données Chrome App-Bound Encryption, compatible avec Node.js et Bun.
🚀 Installation
npm install
# ou avec Bun
bun install🔨 Build
npm run build
# ou directement
node scripts/build.js📖 Usage
JavaScript/Node.js
const chromeDecrypt = require('./index.js');
// Décrypter un profil Chrome
async function example() {
try {
const result = await chromeDecrypt.decryptChromeData(
'C:\\Users\\User\\AppData\\Local\\Google\\Chrome\\User Data\\Default',
'./output'
);
console.log('Succès:', result.success);
console.log('Clé AES:', result.aesKey);
console.log('Cookies:', result.cookiesCount);
console.log('Mots de passe:', result.passwordsCount);
} catch (error) {
console.error('Erreur:', error.message);
}
}
example();TypeScript
import * as chromeDecrypt from './index';
async function example(): Promise<void> {
const result = await chromeDecrypt.decryptChromeData(
'C:\\Users\\User\\AppData\\Local\\Google\\Chrome\\User Data\\Default',
'./output'
);
console.log(`Trouvé ${result.cookiesCount} cookies`);
}Avec Bun
import chromeDecrypt from './index.js';
// Trouver automatiquement les profils
const profiles = chromeDecrypt.findChromeProfiles();
console.log('Profils trouvés:', profiles);
// Décrypter
for (const profile of profiles) {
const result = await chromeDecrypt.decryptChromeData(profile, './output');
console.log(`Profil ${profile}:`, result);
}🔧 API
decryptChromeData(profilePath, outputPath)
Décrypte les données d'un profil Chrome.
- profilePath (string): Chemin vers le profil Chrome
- outputPath (string): Dossier de sortie
- Returns:
Promise<ChromeDecryptResult>
chaCha20Encrypt(data, key, nonce)
Chiffre/déchiffre des données avec ChaCha20.
- data (Buffer): Données à traiter
- key (Buffer): Clé de 32 bytes
- nonce (Buffer): Nonce de 12 bytes
- Returns:
Buffer
getEncryptedMasterKey(localStatePath)
Extrait la clé maître du fichier Local State.
- localStatePath (string): Chemin vers Local State
- Returns:
Buffer
decryptGCM(key, encryptedData)
Décrypte des données AES-GCM.
- key (Buffer): Clé de déchiffrement
- encryptedData (Buffer): Données chiffrées
- Returns:
Buffer | null
findChromeProfiles()
Trouve automatiquement les profils Chrome/Edge/Brave.
- Returns:
string[]
🛠️ Utilitaires
// Conversion hex <-> Buffer
const hex = chromeDecrypt.bufferToHex(buffer);
const buffer = chromeDecrypt.hexToBuffer('deadbeef');
// Alias
const result = await chromeDecrypt.decrypt(profilePath, outputPath);
const encrypted = chromeDecrypt.encrypt(data, key, nonce);🔒 Sécurité
Ce module utilise:
- AES-GCM pour le déchiffrement des données Chrome
- ChaCha20 pour le chiffrement des payloads
- Appels système directs pour éviter les hooks
- Obfuscation du code natif
📋 Prérequis
- Windows (x64 ou ARM64)
- Node.js >= 16.0.0 ou Bun >= 1.0.0
- Visual Studio Build Tools ou Visual Studio Community
- Python >= 3.7 (pour node-gyp)
🔧 Développement
# Build debug
npm run build
# Tests
npm test
# Nettoyage
npm run clean📁 Structure
├── src/
│ ├── binding.cpp # Point d'entrée N-API
│ ├── crypto_wrapper.cpp # Wrappers des fonctions crypto
│ └── crypto_wrapper.h # Headers
├── libs/
│ ├── chacha/ # Implémentation ChaCha20
│ └── sqlite/ # SQLite
├── scripts/
│ └── build.js # Script de build
├── examples/ # Exemples d'usage
├── binding.gyp # Configuration node-gyp
├── package.json
└── index.js # Interface JavaScript⚠️ Avertissement
Ce module est destiné à des fins éducatives et de recherche en sécurité. L'utilisation sur des données sans autorisation appropriée peut violer les lois locales.
📄 Licence
MIT - Voir le fichier LICENSE pour plus de détails.
Basé sur le travail original de Alexander 'xaitax' Hagenah.
