逆向案例二十九——某品威客登录,哀求头参数加密,简朴webpack ...

打印 上一主题 下一主题

主题 1001|帖子 1001|积分 3003

网址:登录- 一品威客网,创新型知识技能共享服务平台
抓到登陆包分析,发现哀求头有参数加密,直接搜刮

定位到加密位置,打上断点,很明显是对象f的a方法举行了加密。


往上找f,可以发现f被界说了,是个webpack,打上断点,刷新页面‘

进入e,找到加载器,复制自执行函数,导出加载器,补上环境,改成字典格式,删除初始化。找到443函数,复制函数。

初步写成代码

现在把里面的参数找齐,l是一个固定对象,是固定的打印一下就知道了

M是载荷

U在上方有界说

里面缺少A,上面界说了

又缺少h.e函数 ,进去复制


将h.e改写成d


现在代码情况,现在就是缺少模块了。去一个个复制即可。


实在也不用这样子扣webpack,由于我发现就如f.a函数中,里面的的方法无非是MD5和AES
所以调用库即可。
完整代码:
  1. const CryptoJS = require("crypto-js");
  2. function d(t) {
  3.     return CryptoJS.MD5(t)
  4. };
  5. l = {
  6.             key: CryptoJS.enc.Utf8.parse("fX@VyCQVvpdj8RCa"),
  7.             iv: CryptoJS.enc.Utf8.parse(function(t) {
  8.                 for (var e = "", i = 0; i < t.length - 1; i += 2) {
  9.                     var n = parseInt(t[i] + "" + t[i + 1], 16);
  10.                     e += String.fromCharCode(n)
  11.                 }
  12.                 return e
  13.             }("00000000000000000000000000000000"))
  14.         }
  15. var v = function(data) {
  16.             return function(data) {
  17.                 return CryptoJS.AES.encrypt(data, l.key, {
  18.                     iv: l.iv,
  19.                     mode: CryptoJS.mode.CBC,
  20.                     padding: CryptoJS.pad.Pkcs7
  21.                 }).toString()
  22.             }(data)
  23. };
  24. var g = {
  25.     "i": false,
  26.     "j": false,
  27.     "h": true,
  28.     "d": "prod",
  29.     "a": "https://s1.weikeimg.com/_nuxt/",
  30.     "e": "https://im2.epwitkey.com",
  31.     "b": "4ac490420ac63db4",
  32.     "c": "a75846eb4ac490420ac63db46d2a03bf",
  33.     "f": "af9f93d4530c6167",
  34.     "g": "c93ce713af9f93d4530c6167b78a3871"
  35. };
  36. A = parseInt((new Date).getTime() / 1e3);
  37. var M={
  38.     "username": "123456",
  39.     "password": "123456",
  40.     "code": "",
  41.     "hdn_refer": "https://zt.epwk.com/"
  42. };
  43. var U = {
  44.     "App-Ver": "",
  45.     "Os-Ver": "",
  46.     "Device-Ver": "",
  47.     Imei: "",
  48.     "Access-Token": "",
  49.     Timestemp: A,
  50.     NonceStr: "".concat(A).concat(Object(d)()),
  51.     "App-Id": l.j ? l.f : l.b,
  52.     "Device-Os": "web"
  53. };
  54. f = function(t) {
  55.             var e = "";
  56.             return Object.keys(t).sort().forEach((function(n) {
  57.                 e += n + ("object" === typeof (t[n]) ? JSON.stringify(t[n], (function(t, e) {
  58.                     return "number" == typeof e && (e = String(e)),
  59.                     e
  60.                 }
  61.                 )).replace(/\//g, "\\/") : t[n])
  62.             }
  63.             )),
  64.             e
  65.         };
  66. h = function(t) {
  67.             var data = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}
  68.               , e = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "a75846eb4ac490420ac63db46d2a03bf"
  69.               , n = e + f(data) + f(t) + e;
  70.             return n = d(n),
  71.             n = v(n)
  72.         };
  73. console.log(h(U, M, g.c))
  74. // 结果为RLD9f/i0LE0orrEqIey98ZOF7ezlL+yFkeycUVYF2kI=
复制代码





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

吴旭华

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表