node.js中gzip解压缩的问题(不正确的标头检查)

时间:2019-06-09 18:57:01

标签: python node.js gzip zlib

我正在尝试从游戏中解密保存文件。我已经在python中有了这个的工作版本,但是我似乎无法使用node中的equivalet库来做到这一点。

这是有效的python代码:

import base64, gzip, os, zlib, struct

data = FileOpen(path) #returns file as ASCII
res = Xor(data,11)
fin = zlib.decompress(base64.b64decode(res.replace('-','+').replace('_','/').encode())[10:],-zlib.MAX_WBITS)
#fin is the decrypted string

这是我尝试使用node的方法,但是zLib只是抛出“不正确的标头检查”:

const fs = require('fs')
const zlib = require('zlib')
const xor = require('xor-crypt')
const { base64encode, base64decode } = require('nodejs-base64')

let data = fs.readFileSync(fPath + save).toString('ascii')

let res = xor(data,11)
let gzipd = Buffer.from(base64decode(res.replace('-','+').replace('_','/')).slice(0, -10))
let fin = zlib.inflateSync(gzipd).toString('utf-8')

问题很可能出在zlib库中,因为我看不到为什么xor和base64解密会有所不同。我在减压方面没有太多经验。

这是我尝试解密(以ascii格式)的示例:

C?xBJJJJJJJJHTEBqheA::Ndrhlx]lHbYB\\X:DBXJEG92G^]JJJJ

这意味着“你好,这是一个测试”,当我使用python对其解密时,它可以正常工作。谁能弄清楚如何使用节点对其进行解密?

0 个答案:

没有答案