某乎x-zse-96签名算法python重写

查看 94|回复 9
作者:天空宫阙   
某乎x-zse-96签名算法python重写
具体的分析小小白大佬已经分析的非常详细了,就是按这个方法就可以得到最后的签名算法
https://mp.weixin.qq.com/s/sVDHQeRY-774Jw70k7mINQ
网站
aHR0cHM6Ly93d3cuemhpaHUuY29tL3NlYXJjaD90eXBlPWNvbnRlbnQmcT1weXRob24=
签名的总体流程
source:101_3_2.0+/api/v4/search_v3?t=general&q=office&correction=1&offset=0&limit=20&filter_fields=&lc_idx=0&show_all_topics=0&search_source=Normal+"APAdT9SE4hSPTk_l1utlpb-FN6jTF5TgpSY=|1651578807"
signature:sign(md5(source))
sign方法
[ol]
  • md5(source) 后的字符串末尾补\u0000 通过charCodeAt从末尾开始得到3个数字一组的数字
  • 3个数字作为参数通过4种位运算得到一个大数m
  • fixed_str = "RuPtXwxpThIZ0qyz_9fYLCOV8B1mMGKs7UnFHgN3iDaWAJE-Qrk2ecSo6bjd4vl5"
    4个数字一组通过索引固定的字符串得到每组的四个字符, 比如任意一组的4个字符分别是 fixed_str[m % 64],fixed_str[(m >> 6) % 64],fixed_str[(m >> 12) % 64],fixed_str[(m >> 18) % 64]
  • 拼接所有得到的字符串得到最后的签名
    [/ol]
    [/ol]
    四种位运算的方式
    def m1(a, b, c): return ((a ^ 42) | (b
    其中第一组的a,b,c 分别为a = ord(md5_str[32]) ``b = ord(md5_str[31]) ``c = ord(md5_str[30]),后面的以此类推
    补充知识学习
    返回字符串字符的 Unicode 编码
    // JavaScript
    string.charCodeAt(index)
    // python
    ord(string[index])
    位运算
    [table]
    [tr]
    [td]含义[/td]
    [td]符号[/td]
    [td]例子[/td]
    [/tr]
    [tr]
    [td]与

    字符串, 算法

  • cuilongjin   

    大佬  “JavaScript逆向系列课+高阶课‘’ 这个帖子的资源能分享一下吗,那个帖子下不能回复了
    苏晓宇c   

    DD厉害
    XiaoZouYu   

    厉害,跟着学习一下,谢谢分享
    yc0205   

    厉害厉害厉害ING
    xiadongming   

    厉害了,大佬
    wuaikirin   

    厉害厉害厉害ING
    Lrxtx   

    感谢大佬分享
    Tovgik   

    牛蛙~感谢分享
    xiong930626   

    厉害,学习一下
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部