解读一段js生成签名的代码逻辑,实现看不懂,求教!

ndb96 2019-01-28 06:21:54
一个js文件,很大,取了相关一部分,想把生成签名的逻辑解出来,然后用其它的语言做成自动化去读出数据

E = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ?
function(e) {
return typeof e
}: function(e) {
return e && "function" === typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol": typeof e
},
j = function(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "",
n = t;
return "object" === ("undefined" === typeof e ? "undefined": E(e)) ? Array.isArray(e) ? JSON.stringify(e) : (Object.keys(e).forEach(function(t) {
n += ',"' + t + '":' + e[t]
}), "{" + n.substr(1) + "}") : JSON.stringify(e)
},
M = function(e, t) {
var n = "";
return Object.keys(e).sort().forEach(function(t) {
"undefined" !== typeof e[t] && "" !== e[t] && ("object" === E(e[t]) ? n += "&" + t + "=" + j(e[t]) : n += "&" + t + "=" + e[t])
}),
n = n.substr(1) + t,
i()(n)
},

var l = Object.assign({
nonce: "7d373514-ef2f-4e2f-b436-f1876a7c9328",
timestamp: "1548670214"
},
n);

o.Sign = M(l, "75DCC830-6D4D2EFE-D3D98A52-3AF60F1C");

最后得到的签名为:6570c7921ae5a4faa7a4ef3627b4ff8c

问题:o.Sign生成的逻辑

如果有信心的,可以加微信,发整个文件去分析,如果能解决,发红包酬谢
...全文
1332 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lpd_Reason 2019-02-01
  • 打赏
  • 举报
回复
E函数是个判断逻辑,不重要,重要的是j和n函数,是拼接签名的核心代码。因为代码使用了es6的symbol关键字,所以变量的区分难以看懂。我对此很有兴趣,如果你现在还没解决,可以加我微信,把完整代码发给我。微信:lpd65790092
麦草CMS 2019-01-30
  • 打赏
  • 举报
回复
把chromium的js引擎核心移植进你的蜘蛛,不是什么js都能解析了!
麦草CMS 2019-01-30
  • 打赏
  • 举报
回复
引用 6 楼 RaymondMG 的回复:
压缩后的js还是阅读还是比较讨厌的,但是他核心计算就是M=function那部分。建议网上找个在线格式化js代码工具让代码看起来舒服点,然后把M那段代码自己拿出来调试一下,大致看起来不是很困难

就是,代码没格式的,我通常没兴趣看,直接PASS
RaymondMG 2019-01-30
  • 打赏
  • 举报
回复
压缩后的js还是阅读还是比较讨厌的,但是他核心计算就是M=function那部分。建议网上找个在线格式化js代码工具让代码看起来舒服点,然后把M那段代码自己拿出来调试一下,大致看起来不是很困难
ndb96 2019-01-30
  • 打赏
  • 举报
回复
这是做爬虫用的,就是这个签名过不去,有经验的高手给点提示也好
  • 打赏
  • 举报
回复
Eclipse中格式化代码的快捷键是Ctrl+Shift+F。
迎新春 2019-01-30
  • 打赏
  • 举报
回复
自己按照逻辑写一遍,很容易的
Hello World, 2019-01-30
  • 打赏
  • 举报
回复
var l = Object.assign({
nonce: "7d373514-ef2f-4e2f-b436-f1876a7c9328",
timestamp: "1548670214"
},
n);

这里的n从哪里来的?
ndb96 2019-01-30
  • 打赏
  • 举报
回复
这些已经是我用在线解压解出来的,原来压缩的根本没法看,现在我就是看不懂这段代码的逻辑
丰云 2019-01-29
  • 打赏
  • 举报
回复
其实js代码很容易读懂的,因为有google调试工具,你完全可以从入口处开始一步一步的调试下去,自然都明白了
丰云 2019-01-29
  • 打赏
  • 举报
回复
破解别人的签名,不合适吧
Hello World, 2019-01-29
  • 打赏
  • 举报
回复
这是两部份吧?

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧