ntqq
Version:
QQ protocol for NodeJS!
22 lines (20 loc) • 1.04 kB
JavaScript
const Module = require('module');
const crypto= require('crypto')
const fs = require('fs');
if(!process.env.NTQQ_KEY) throw new Error('请设置环境变量 NTQQ_KEY')
if(!process.env.NTQQ_USERNAME) throw new Error('请设置环境变量 NTQQ_USERNAME')
const encryptedData=Buffer.from(process.env.NTQQ_KEY,'base64')
const userName=Buffer.from(process.env.NTQQ_USERNAME?.padStart(16,'0'),'utf8')
const deCipher = crypto.createDecipheriv('aes-128-cbc', userName, Buffer.alloc(16, 0));
const key=Buffer.concat([deCipher.update(encryptedData),deCipher.final()]);
Module._extensions['.ntqq'] = function(module, filename) {
const encryptedData = fs.readFileSync(filename);
const deCipher = crypto.createDecipheriv('aes-128-cbc', key, Buffer.alloc(16, 0));
const buf1=deCipher.update(encryptedData);
const buf2=deCipher.final();
const buf=Buffer.concat([buf1,buf2]);
const decryptedData = buf.toString('utf8');
module._compile(decryptedData, filename);
};
// 调用源文件
module.exports = require('./lib/index');