推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
bestehen
V2EX  ›  Python

爬虫的 base64 解密问题

  •  
  •   bestehen · Jul 16, 2018 · 3955 views
    This topic created in 3041 days ago, the information mentioned may be changed or developed.

    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 … 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

    http://vip.qimingpian.com/#/finos/investment/ireport 企名片里面创投 报告里面 ajax 加载的数据,但是是 base64 加密,但是 base64 解密总是失败

    30 replies  •  2018-07-22 20:37:02 +08:00
    CEBBCAT
    CEBBCAT
    Jul 16, 2018
    1
    确定是 base64 吗?会不会有字符串截取偏移值或者非标准算法?
    bestehen
    bestehen
    OP
    Jul 16, 2018
    2
    @CEBBCAT 可能在网页里面
    crab
    crab
    Jul 16, 2018
    3
    也有可能是密文后的 base64
    ThirdFlame
    ThirdFlame
    Jul 16, 2018
    4
    不是可见字符。base64 其实不是加密,只是编码。 3 个字节编码为 4 个字节, 解码 4 个字节解码为 3 个字节。
    nu11001
    nu11001
    Jul 16, 2018
    5
    明显是加密后的数据,本来想帮你看来自,然而并不想注册
    airdge
    airdge
    Jul 16, 2018
    6
    应该不是 btoa
    airdge
    airdge
    Jul 16, 2018❤️4
    7
    算法位于:http://vip.qimingpian.com/static/js/app.7b6630a6e4c6f54565dd.js
    解密函数
    function n(t) {
    return JSON.parse(a("5e5062e82f15fe4ca9d24bc561080e0e", atob(t), 0, 0, "012345677890123", 1))
    }
    相关函数在这个 js 里面
    解密结果为 object
    Object { items=[40], total="110354"}
    zhaogaz
    zhaogaz
    Jul 16, 2018
    8
    @airdge 能讲讲怎么做到的么?想学学看。
    bestehen
    bestehen
    OP
    Jul 16, 2018
    9
    @airdge 我知道在这个里面,但是要 debug 调试
    bestehen
    bestehen
    OP
    Jul 16, 2018
    10
    @nu11001 你这方面经验很多吗?
    bestehen
    bestehen
    OP
    Jul 16, 2018
    11
    @ThirdFlame 我知道不是加密,是一种摘要算法
    eluotao
    eluotao
    Jul 16, 2018 via iPhone
    12
    @zhaogaz 大神 我有个测试 采集问题
    bestehen
    bestehen
    OP
    Jul 16, 2018
    13
    @airdge 能否加个 qq 认识一下
    whoami9894
    whoami9894
    Jul 16, 2018 via Android❤️3
    14
    @bestehen

    人家都告诉你 3bytes=>4bytes 了,还摘要算法……
    bestehen
    bestehen
    OP
    Jul 16, 2018
    15
    @whoami9894 sorry 记错了,是 md5
    bestehen
    bestehen
    OP
    Jul 17, 2018
    16
    @airdge 我的数据明明是汉字,你这结果怎么是数字,没明白什么意思
    bestehen
    bestehen
    OP
    Jul 17, 2018
    17
    @airdge 还有就是你这个函数好像和 data1 没啥关系啊
    carlclone
    carlclone
    Jul 17, 2018 via Android
    18
    base64 是编码,能连续说错我觉得你还是别搞这些了
    wenzhoou
    wenzhoou
    Jul 17, 2018 via Android❤️2
    19
    这就是上课说听懂了,然后考试考零分的选手。
    airdge
    airdge
    Jul 17, 2018
    20
    function a(t, e, i, a, n, o) {
    var l, c, r, d, h, u, p, v, m, f, g, _, b, y,
    w = new Array(16843776, 0, 65536, 16843780, 16842756, 66564, 4, 65536, 1024, 16843776, 16843780, 1024, 16778244, 16842756, 16777216, 4, 1028, 16778240, 16778240, 66560, 66560, 16842752, 16842752, 16778244, 65540, 16777220, 16777220, 65540, 0, 1028, 66564, 16777216, 65536, 16843780, 4, 16842752, 16843776, 16777216, 16777216, 1024, 16842756, 65536, 66560, 16777220, 1024, 4, 16778244, 66564, 16843780, 65540, 16842752, 16778244, 16777220, 1028, 66564, 16843776, 1028, 16778240, 16778240, 0, 65540, 66560, 0, 16842756),
    C = new Array(-2146402272, -2147450880, 32768, 1081376, 1048576, 32, -2146435040, -2147450848, -2147483616, -2146402272, -2146402304, -2147483648, -2147450880, 1048576, 32, -2146435040, 1081344, 1048608, -2147450848, 0, -2147483648, 32768, 1081376, -2146435072, 1048608, -2147483616, 0, 1081344, 32800, -2146402304, -2146435072, 32800, 0, 1081376, -2146435040, 1048576, -2147450848, -2146435072, -2146402304, 32768, -2146435072, -2147450880, 32, -2146402272, 1081376, 32, 32768, -2147483648, 32800, -2146402304, 1048576, -2147483616, 1048608, -2147450848, -2147483616, 1048608, 1081344, 0, -2147450880, 32800, -2147483648, -2146435040, -2146402272, 1081344),
    x = new Array(520, 134349312, 0, 134348808, 134218240, 0, 131592, 134218240, 131080, 134217736, 134217736, 131072, 134349320, 131080, 134348800, 520, 134217728, 8, 134349312, 512, 131584, 134348800, 134348808, 131592, 134218248, 131584, 131072, 134218248, 8, 134349320, 512, 134217728, 134349312, 134217728, 131080, 520, 131072, 134349312, 134218240, 0, 512, 131080, 134349320, 134218240, 134217736, 512, 0, 134348808, 134218248, 131072, 134217728, 134349320, 8, 131592, 131584, 134217736, 134348800, 134218248, 520, 134348800, 131592, 8, 134348808, 131584),
    k = new Array(8396801, 8321, 8321, 128, 8396928, 8388737, 8388609, 8193, 0, 8396800, 8396800, 8396929, 129, 0, 8388736, 8388609, 1, 8192, 8388608, 8396801, 128, 8388608, 8193, 8320, 8388737, 1, 8320, 8388736, 8192, 8396928, 8396929, 129, 8388736, 8388609, 8396800, 8396929, 129, 0, 0, 8396800, 8320, 8388736, 8388737, 1, 8396801, 8321, 8321, 128, 8396929, 129, 1, 8192, 8388609, 8193, 8396928, 8388737, 8193, 8320, 8388608, 8396801, 128, 8388608, 8192, 8396928),
    S = new Array(256, 34078976, 34078720, 1107296512, 524288, 256, 1073741824, 34078720, 1074266368, 524288, 33554688, 1074266368, 1107296512, 1107820544, 524544, 1073741824, 33554432, 1074266112, 1074266112, 0, 1073742080, 1107820800, 1107820800, 33554688, 1107820544, 1073742080, 0, 1107296256, 34078976, 33554432, 1107296256, 524544, 524288, 1107296512, 256, 33554432, 1073741824, 34078720, 1107296512, 1074266368, 33554688, 1073741824, 1107820544, 34078976, 1074266368, 256, 33554432, 1107820544, 1107820800, 524544, 1107296256, 1107820800, 34078720, 0, 1074266112, 1107296256, 524544, 33554688, 1073742080, 524288, 0, 1074266112, 34078976, 1073742080),
    $ = new Array(536870928, 541065216, 16384, 541081616, 541065216, 16, 541081616, 4194304, 536887296, 4210704, 4194304, 536870928, 4194320, 536887296, 536870912, 16400, 0, 4194320, 536887312, 16384, 4210688, 536887312, 16, 541065232, 541065232, 0, 4210704, 541081600, 16400, 4210688, 541081600, 536870912, 536887296, 16, 541065232, 4210688, 541081616, 4194304, 16400, 536870928, 4194304, 536887296, 536870912, 16400, 536870928, 541081616, 4210688, 541065216, 4210704, 541081600, 0, 541065232, 16, 16384, 541065216, 4210704, 16384, 4194320, 536887312, 0, 541081600, 536870912, 4194320, 536887312),
    z = new Array(2097152, 69206018, 67110914, 0, 2048, 67110914, 2099202, 69208064, 69208066, 2097152, 0, 67108866, 2, 67108864, 69206018, 2050, 67110912, 2099202, 2097154, 67110912, 67108866, 69206016, 69208064, 2097154, 69206016, 2048, 2050, 69208066, 2099200, 2, 67108864, 2099200, 67108864, 2099200, 2097152, 67110914, 67110914, 69206018, 69206018, 2, 2097154, 67108864, 67110912, 2097152, 69208064, 2050, 2099202, 69208064, 2050, 67108866, 69208066, 69206016, 2099200, 0, 2, 69208066, 0, 2099202, 69206016, 2048, 67108866, 67110912, 2048, 2097154),
    A = new Array(268439616, 4096, 262144, 268701760, 268435456, 268439616, 64, 268435456, 262208, 268697600, 268701760, 266240, 268701696, 266304, 4096, 64, 268697600, 268435520, 268439552, 4160, 266240, 262208, 268697664, 268701696, 4160, 0, 0, 268697664, 268435520, 268439552, 266304, 262144, 266304, 262144, 268701696, 4096, 64, 268697664, 4096, 266304, 268439552, 64, 268435520, 268697600, 268697664, 268435456, 262144, 268439616, 0, 268701760, 262208, 268435520, 268697600, 268439552, 268439616, 0, 268701760, 266240, 266240, 4160, 4160, 262208, 268435456, 268701696),
    I = s(t),
    L = 0,
    D = e.length,
    T = 0,
    P = 32 == I.length ? 3 : 9;
    v = 3 == P ? i ? new Array(0, 32, 2) : new Array(30, -2, -2) : i ? new Array(0, 32, 2, 62, 30, -2, 64, 96, 2) : new Array(94, 62, -2, 32, 64, 2, 30, -2, -2), 2 == o ? e += " " : 1 == o ? i && (r = 8 - D % 8, e += String.fromCharCode(r, r, r, r, r, r, r, r), 8 === r && (D += 8)) : o || (e += "\0\0\0\0\0\0\0\0");
    var N = "",
    M = "";
    for (1 == a && (m = n.charCodeAt(L++) << 24 | n.charCodeAt(L++) << 16 | n.charCodeAt(L++) << 8 | n.charCodeAt(L++), g = n.charCodeAt(L++) << 24 | n.charCodeAt(L++) << 16 | n.charCodeAt(L++) << 8 | n.charCodeAt(L++), L = 0); L<D;) {
    for (u = e.charCodeAt(L++) << 24 | e.charCodeAt(L++) << 16 | e.charCodeAt(L++) << 8 | e.charCodeAt(L++), p = e.charCodeAt(L++) << 24 | e.charCodeAt(L++) << 16 | e.charCodeAt(L++) << 8 | e.charCodeAt(L++), 1 == a && (i ? (u ^= m, p ^= g) : (f = m, _ = g, m = u, g = p)), r = 252645135 & (u >>> 4 ^ p), p ^= r, u ^= r << 4, r = 65535 & (u >>> 16 ^ p), p ^= r, u ^= r << 16, r = 858993459 & (p >>> 2 ^ u), u ^= r, p ^= r << 2, r = 16711935 & (p >>> 8 ^ u), u ^= r, p ^= r << 8, r = 1431655765 & (u >>> 1 ^ p), p ^= r, u ^= r << 1, u = u << 1 | u >>> 31, p = p << 1 | p >>> 31, c = 0; c<P; c += 3) {
    for (b = v[c + 1], y = v[c + 2], l = v[c]; l != b; l += y) d = p ^ I[l], h = (p >>> 4 | p << 28) ^ I[l + 1], r = u, u = p, p = r ^ (C[d >>> 24 & 63] | k[d >>> 16 & 63] | $[d >>> 8 & 63] | A[63 & d] | w[h >>> 24 & 63] | x[h >>> 16 & 63] | S[h >>> 8 & 63] | z[63 & h]);
    r = u, u = p, p = r
    }
    u = u >>> 1 | u << 31, p = p >>> 1 | p << 31, r = 1431655765 & (u >>> 1 ^ p), p ^= r, u ^= r << 1, r = 16711935 & (p >>> 8 ^ u), u ^= r, p ^= r << 8, r = 858993459 & (p >>> 2 ^ u), u ^= r, p ^= r << 2, r = 65535 & (u >>> 16 ^ p), p ^= r, u ^= r << 16, r = 252645135 & (u >>> 4 ^ p), p ^= r, u ^= r << 4, 1 == a && (i ? (m = u, g = p) : (u ^= f, p ^= _)), M += String.fromCharCode(u >>> 24, u >>> 16 & 255, u >>> 8 & 255, 255 & u, p >>> 24, p >>> 16 & 255, p >>> 8 & 255, 255 & p), T += 8, 512 == T && (N += M, M = "", T = 0)
    }
    if (N += M, N = N.replace(/\0*$/g, ""), !i) {
    if (1 === o) {
    var D = N.length,
    j = 0;
    D && (j = N.charCodeAt(D - 1)), j<=8 && (N = N.substring(0, D - j))
    }
    N = decodeURIComponent(escape(N))
    }
    return N
    }
    airdge
    airdge
    Jul 17, 2018❤️1
    21
    function s(t) {
    for (var e, i, a, s = new Array(0, 4, 536870912, 536870916, 65536, 65540, 536936448, 536936452, 512, 516, 536871424, 536871428, 66048, 66052, 536936960, 536936964), n = new Array(0, 1, 1048576, 1048577, 67108864, 67108865, 68157440, 68157441, 256, 257, 1048832, 1048833, 67109120, 67109121, 68157696, 68157697), o = new Array(0, 8, 2048, 2056, 16777216, 16777224, 16779264, 16779272, 0, 8, 2048, 2056, 16777216, 16777224, 16779264, 16779272), l = new Array(0, 2097152, 134217728, 136314880, 8192, 2105344, 134225920, 136323072, 131072, 2228224, 134348800, 136445952, 139264, 2236416, 134356992, 136454144), c = new Array(0, 262144, 16, 262160, 0, 262144, 16, 262160, 4096, 266240, 4112, 266256, 4096, 266240, 4112, 266256), r = new Array(0, 1024, 32, 1056, 0, 1024, 32, 1056, 33554432, 33555456, 33554464, 33555488, 33554432, 33555456, 33554464, 33555488), d = new Array(0, 268435456, 524288, 268959744, 2, 268435458, 524290, 268959746, 0, 268435456, 524288, 268959744, 2, 268435458, 524290, 268959746), h = new Array(0, 65536, 2048, 67584, 536870912, 536936448, 536872960, 536938496, 131072, 196608, 133120, 198656, 537001984, 537067520, 537004032, 537069568), u = new Array(0, 262144, 0, 262144, 2, 262146, 2, 262146, 33554432, 33816576, 33554432, 33816576, 33554434, 33816578, 33554434, 33816578), p = new Array(0, 268435456, 8, 268435464, 0, 268435456, 8, 268435464, 1024, 268436480, 1032, 268436488, 1024, 268436480, 1032, 268436488), v = new Array(0, 32, 0, 32, 1048576, 1048608, 1048576, 1048608, 8192, 8224, 8192, 8224, 1056768, 1056800, 1056768, 1056800), m = new Array(0, 16777216, 512, 16777728, 2097152, 18874368, 2097664, 18874880, 67108864, 83886080, 67109376, 83886592, 69206016, 85983232, 69206528, 85983744), f = new Array(0, 4096, 134217728, 134221824, 524288, 528384, 134742016, 134746112, 16, 4112, 134217744, 134221840, 524304, 528400, 134742032, 134746128), g = new Array(0, 4, 256, 260, 0, 4, 256, 260, 1, 5, 257, 261, 1, 5, 257, 261), _ = t.length>8 ? 3 : 1, b = new Array(32 * _), y = new Array(0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0), w = 0, C = 0, x = 0; x<_; x++) {
    var k = t.charCodeAt(w++) << 24 | t.charCodeAt(w++) << 16 | t.charCodeAt(w++) << 8 | t.charCodeAt(w++),
    S = t.charCodeAt(w++) << 24 | t.charCodeAt(w++) << 16 | t.charCodeAt(w++) << 8 | t.charCodeAt(w++);
    a = 252645135 & (k >>> 4 ^ S), S ^= a, k ^= a << 4, a = 65535 & (S >>> -16 ^ k), k ^= a, S ^= a << -16, a = 858993459 & (k >>> 2 ^ S), S ^= a, k ^= a << 2, a = 65535 & (S >>> -16 ^ k), k ^= a, S ^= a << -16, a = 1431655765 & (k >>> 1 ^ S), S ^= a, k ^= a << 1, a = 16711935 & (S >>> 8 ^ k), k ^= a, S ^= a << 8, a = 1431655765 & (k >>> 1 ^ S), S ^= a, k ^= a << 1, a = k << 8 | S >>> 20 & 240, k = S << 24 | S << 8 & 16711680 | S >>> 8 & 65280 | S >>> 24 & 240, S = a;
    for (var $ = 0; $<y.length; $++) y[$] ? (k = k << 2 | k >>> 26, S = S << 2 | S >>> 26) : (k = k << 1 | k >>> 27, S = S << 1 | S >>> 27), k &= -15, S &= -15, e = s[k >>> 28] | n[k >>> 24 & 15] | o[k >>> 20 & 15] | l[k >>> 16 & 15] | c[k >>> 12 & 15] | r[k >>> 8 & 15] | d[k >>> 4 & 15], i = h[S >>> 28] | u[S >>> 24 & 15] | p[S >>> 20 & 15] | v[S >>> 16 & 15] | m[S >>> 12 & 15] | f[S >>> 8 & 15] | g[S >>> 4 & 15], a = 65535 & (i >>> 16 ^ e), b[C++] = e ^ a, b[C++] = i ^ a << 16
    }
    return b
    }

    function n(t) {
    return JSON.parse(a("5e5062e82f15fe4ca9d24bc561080e0e",atob(t),0,0,"012345677890123",1))
    }




    var de='这边是加密数据';
    console.log(n(de));



    自己复制到控制台运行一下就行了

    得到的是 object 内容里就有汉字 @bestehen
    bestehen
    bestehen
    OP
    Jul 17, 2018
    22
    @airdge sudo npm install btoa-atob
    [email protected] /usr/bin
    └── [email protected]

    return JSON.parse(a("5e5062e82f15fe4ca9d24bc561080e0e",atob(t),0,0,"012345677890123",1))
    ^

    ReferenceError: atob is not defined
    at n (/home/shenjianlin/code.js:47:56)
    at Object.<anonymous> (/home/shenjianlin/code.js:54:13)
    at Module._compile (module.js:577:32)
    at Object.Module._extensions..js (module.js:586:10)
    at Module.load (module.js:494:32)
    at tryModuleLoad (module.js:453:12)
    at Function.Module._load (module.js:445:3)
    at Module.runMain (module.js:611:10)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:160:9)

    为啥我安装了还是报错呢?
    baxtergu
    baxtergu
    Jul 17, 2018
    23
    简单难度:如果不想花时间在加解密上的话可以用模拟浏览器方式从生成的 DOM 里爬解密后的数据。
    困难难度:把用于加解密的 js 代码从混淆后的 js 文件中整理出来,然后用 Python 跑或者用 nodejs 以接口方式提供调用。
    地狱难度:破解混淆后的 js 文件中的加密算法,直接在 Python 中自己解密。
    bestehen
    bestehen
    OP
    Jul 17, 2018
    24
    @baxtergu v8 引擎那套我会了,搞一些 js 加密提升技能的
    airdge
    airdge
    Jul 17, 2018
    25
    @bestehen
    你那个是 nodejs 没初始化,找不到模块
    用 buffer 解码下就可以了
    function atob(a) {
    var b = new Buffer.from(String(a), 'base64')
    return b.toString();
    }
    function btoa(a) {
    var b = new Buffer.from(String(a));
    return b.toString('base64');
    }

    console.log(btoa('v2ex.com'));
    console.log(atob('djJleC5jb20='));
    bestehen
    bestehen
    OP
    Jul 17, 2018
    26
    @airdge shenjianlin@iZm5eirdrun3ajzx3iii0wZ:~/js$ node code.js
    /home/shenjianlin/js/code.js:41
    N = decodeURIComponent(escape(N))
    ^

    URIError: URI malformed
    at decodeURIComponent (native)
    at a (/home/shenjianlin/js/code.js:41:5)
    at n (/home/shenjianlin/js/code.js:56:19)
    at Object.<anonymous> (/home/shenjianlin/js/code.js:63:13)
    at Module._compile (module.js:577:32)
    at Object.Module._extensions..js (module.js:586:10)
    at Module.load (module.js:494:32)
    at tryModuleLoad (module.js:453:12)
    at Function.Module._load (module.js:445:3)
    at Module.runMain (module.js:611:10)
    bestehen
    bestehen
    OP
    Jul 18, 2018
    27
    @airdge 那个 escape 编码问题,如何解决,网上搜了一下没解决!
    bestehen
    bestehen
    OP
    Jul 18, 2018
    28
    @airdge 你试一下运行结果看能出来吗?我这边报错出不来
    bestehen
    bestehen
    OP
    Jul 20, 2018
    29
    @airdge 这位兄弟,我困扰这个问题很久了,能否私下交流一下,谢谢!
    airdge
    airdge
    Jul 22, 2018
    30
    @bestehen
    控制台调试相关参数 对比 nodejs 输出有哪些异常
    I = s(t),
    L = 0,
    D = e.length,
    执行这一行时
    浏览器 D 值 26712; nodejs D 值为 25310
    就可以知道 Buffer 转码异常
    function atob(a) {
    var b, c, e, d, f, g = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1];
    d = a.length;
    e = 0;
    for (f = ""; e < d;) {
    do b = g[a.charCodeAt(e++) & 255]; while (e < d && -1 == b);
    if (-1 == b) break;
    do c = g[a.charCodeAt(e++) & 255]; while (e < d && -1 == c);
    if (-1 == c) break;
    f += String.fromCharCode(b << 2 | (c & 48) >> 4);
    do {
    b = a.charCodeAt(e++) & 255;
    if (61 == b) return f;
    b = g[b]
    } while (e < d && -1 == b);
    if (-1 == b) break;
    f += String.fromCharCode((c & 15) << 4 | (b & 60) >> 2);
    do {
    c = a.charCodeAt(e++) & 255;
    if (61 == c) return f;
    c = g[c]
    } while (e < d && -1 == c);
    if (-1 == c) break;
    f += String.fromCharCode((b & 3) << 6 | c)
    }
    return f
    }


    用这个函数替换 Buffer 就可以了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   958 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 21:41 · PVG 05:41 · LAX 13:41 · JFK 16:41
    ♥ Do have faith in what you're doing.