xorFileContent.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. const fs = require('fs')
  2. const path = require('path')
  3. const { xorKeyMap } = require('./constant')
  4. function xorFileContent(data, xorKey) {
  5. // 这里示例简单地对每个字节进行异或操作,你可以根据需要进行更复杂的操作
  6. const result = Buffer.alloc(data.length);
  7. for (let i = 0; i < data.length; i++) {
  8. result[i] = data[i] ^ xorKey;
  9. }
  10. return result;
  11. }
  12. const getHtml = (filename) => {
  13. const data = fs.readFileSync(path.join(__dirname, '../files/' + filename, 'index.html'));
  14. const fileKey = [...filename.slice(0, 3) , ...filename.slice(filename.length - 3, filename.length)]
  15. let xorKey = ''
  16. fileKey.forEach( key => {
  17. xorKey += xorKeyMap.get(key)
  18. })
  19. // 执行异或操作
  20. const decryptedData = xorFileContent(data, (xorKey % 255).toString(16));
  21. return decryptedData.toString('utf-8')
  22. }
  23. const xorFileAssets = (name) => {
  24. const data = fs.readFileSync(path.join(__dirname, name));
  25. return xorFileContent(data)
  26. }
  27. const xorFile = (path) => {
  28. function xorBuffer(buffer, key) {
  29. for (let i = 0; i < buffer.length; i++) {
  30. buffer[i] ^= key;
  31. }
  32. }
  33. // 读取图片文件
  34. fs.readFile(path, (err, data) => {
  35. if (err) {
  36. console.error('Error reading file:', err);
  37. return;
  38. }
  39. // 异或处理
  40. const key = 0xFF; // 这里可以设置异或的密钥
  41. xorBuffer(data, key);
  42. // 写入处理后的图片文件
  43. fs.writeFile(path, data, (err) => {
  44. if (err) {
  45. console.error('Error writing file:', err);
  46. return;
  47. }
  48. console.log('File written successfully');
  49. });
  50. });
  51. }
  52. // getHtml('lk7hBDCE7WRVGEX7UQ7zweT0ELrX')
  53. // xorFile(path.join(__dirname, '../files/lk7hBDCE7WRVGEX7UQ7zweT0ELrX/data/pres/s4s10.png'))
  54. module.exports = {
  55. getHtml,
  56. xorFileAssets
  57. }