作为一名后勤人员,工作的首要任务就是帮兄弟们做好战前准备工作。这不来了一个微信小程序的活。还好抓包兄弟们那边没有问题。主要是加密破解问题。
adb pull /data/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg其中`{User}` 为当前用户的用户名,类似于 `2bc**************b65`。
1.1 wxapkg 包与小程序的对应关系
根据访问时间确定需要脱的.wxapkg文件,如果知道小程序关键字也可以全脱下来,使用grep -r来筛选。
1.2 小程序编译工具安装与配置
反编译工具下载链接:
https://github.com/geilige/wxappUnpacker.git
(这个工具原作者已经将仓库清了,这是一个fork的,github也有一个仍在维护反编译工具的作者,但是没有试过,因为目前使用的这个也还可以)
这些 node.js 程序除了自带的 API 外还依赖于以下包: cssbeautify、CSSTree、VM2、Esprima、UglifyES、js-beautify
npm install esprima -gnpm install css-tree -gnpm install cssbeautify -gnpm install vm2 -gnpm install uglify-es -gnpm install js-beautify -gnpm install escodegen -g
此外,这些 node.js 程序之间也有一定的依赖关系,比如他们都依赖于 wuLib.js.
1.3 如何使用
node wuWxapkg.js D:/node/wxappUnpacker-xxxxxx-41_321.wxapkg(具体的.wxapkg 的文件路径)
2.小程序的加解密及加签算法
2.1 参数1
2.2 加签参数
2.3 数据加密参数2
n({requestData: s.encrypt(JSON.stringify(d), l)
l = (0, i.getGlobalData)("encryptKey")
2.4 第三个参数
2.5 Burpsuite插件编写
s = require("./index.js").sm4;const http = require('http');let app = http.createServer((req, res) => { const { headers, method, url } = req; let body = []; req.on('error', (err) => { console.error(err); }).on('data', (chunk) => { body.push(chunk); }).on('end', () => { body = Buffer.concat(body).toString(); t = JSON.parse(body); if(t.type=="decrypt"){ // b = s.decrypt(eval(t.data),"xxxxxxxxxxxxxxxxx"); b = s.decrypt(t.data,"xxxxxxxxxxxxxxxxxxx"); res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(b); } if(t.type=="encrypt"){ // a = s.encrypt(eval(JSON.stringify(t.data)),"xxxxxxxxxxxxxxxxx"); console.log(t.data) a = s.encrypt(t.data,"xxxxxxxxxxxxxxxxxxx"); console.log(a); res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(a); } }); });app.listen(3000, '127.0.0.1');
class BurpExtender(IBurpExtender,IMessageEditorTabFactory): def registerExtenderCallbacks(self, callbacks): self.stdout = PrintWriter(callbacks.getStdout(), True) self.stderr = PrintWriter(callbacks.getStderr(), True) self._callbacks = callbacks self._helpers = callbacks.getHelpers() callbacks.setExtensionName(pkgname) callbacks.registerMessageEditorTabFactory(self) return def createNewInstance(self, controller, editable): return Display_data(self, controller, editable)
class Display_data(IMessageEditorTab): def __init__(self, extender, controller, editable): self._helpers = extender._helpers self._txtInput = extender._callbacks.createTextEditor() self._extender = extender self.rep_body = "" self.res_body = "" def getUiComponent(self): return self._txtInput.getComponent() def getTabCaption(self): return pkgname def isEnabled(self, content, isRequest): return True
def api_req(self,data,type): try: headers = {"Content-type": "application/json", "Accept": "text/plain"} conn = httplib.HTTPConnection(_api) # print data params = json.dumps({'type':type,'data': data}) # print params conn.request("POST", "/", params, headers) resp = conn.getresponse() assert resp.status == 200 data = resp.read() conn.close() # print(data) return str(data) except Exception as e: return {"status":"error","data":e.__str__()}
def setMessage(self, content, isRequest):
npm install esprima -gnpm install css-tree -gnpm install cssbeautify -gnpm install vm2 -gnpm install uglify-es -gnpm install js-beautify -gnpm install escodegen -g0
npm install esprima -gnpm install css-tree -gnpm install cssbeautify -gnpm install vm2 -gnpm install uglify-es -gnpm install js-beautify -gnpm install escodegen -g1
npm install esprima -gnpm install css-tree -gnpm install cssbeautify -gnpm install vm2 -gnpm install uglify-es -gnpm install js-beautify -gnpm install escodegen -g2
npm install esprima -gnpm install css-tree -gnpm install cssbeautify -gnpm install vm2 -gnpm install uglify-es -gnpm install js-beautify -gnpm install escodegen -g3
npm install esprima -gnpm install css-tree -gnpm install cssbeautify -gnpm install vm2 -gnpm install uglify-es -gnpm install js-beautify -gnpm install escodegen -g4
npm install esprima -gnpm install css-tree -gnpm install cssbeautify -gnpm install vm2 -gnpm install uglify-es -gnpm install js-beautify -gnpm install escodegen -g5
npm install esprima -gnpm install css-tree -gnpm install cssbeautify -gnpm install vm2 -gnpm install uglify-es -gnpm install js-beautify -gnpm install escodegen -g6
npm install esprima -gnpm install css-tree -gnpm install cssbeautify -gnpm install vm2 -gnpm install uglify-es -gnpm install js-beautify -gnpm install escodegen -g7
加密及加签:
还没有评论,来说两句吧...