webQQ 中hash值的计算 python实现 2015年7月

目前,在获取群列表时,需要post一个hash值,计算函数在js中,具体位置详见注释部分。

另外,此部分更改的频率很快,应该很快就变了。

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

def getHashCode(b, j):
    """
    get the hash num to achieve the grouplist info (record:gcode)

    source function:
        http://0.web.qstatic.com/webqqpic/pubapps/0/50/eqq.all.js
    source function definition:
        P=function(b,j)

    Args:
         b : real QQ num
         j : ptwebqq (get it by cookies)

    Returns:
         string : hashValue

    Raises:
         No raises

    Author:
         zhang

    Date:
         2015-7-31
    """
    a = [0,0,0,0]
    for i in range(0,len(j)):
        a[i%4] ^= ord(j[i])

    w = ["EC","OK"]
    d = [0,0,0,0]

    d[0] = int(b) >> 24 & 255 ^ ord(w[0][0])
    d[1] = int(b) >> 16 & 255 ^ ord(w[0][1])
    d[2] = int(b) >> 8 & 255 ^ ord(w[1][0])
    d[3] = int(b) & 255 ^ ord(w[1][1])

    w = [0,0,0,0,0,0,0,0]

    for i in range(0,8):
        if i%2 == 0:
            w[i] = a[i>>1]
        else:
            w[i] = d[i>>1]
    a = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"]
    d = ""

    for i in range(0,len(w)):
        d += a[w[i]>>4&15]
        d += a[w[i]&15]

    return d

if __name__ == "__main__":

    b = "1958317603"
    j = "8bb6208103fb248b333db1a17c7c688297379b614f6e48123cbee0d5d6a53160"

    hashV = getHashCode(b,j)
    print hashV

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-07 05:47:27

webQQ 中hash值的计算 python实现 2015年7月的相关文章

Java 区块链BLOCKCHAIN中区块BLOCK的hash值的计算

Java 区块链中区块的hash值的计算 计算方法有多种,如,可以直接String拼接,也可以用stringbuffer,或者stringbuilder .这里采用了速度较快的stringbuilder,自己编程的时候可采用stringbuffer.其中index是区块BLOCK的索引,timestamp是区块BLOCK的时间戳,data是区块BLOCK内包含的数据,nonce为该区块的难度系数.总体计算代码如下: /** * 计算hash服务 * @param index 索引 * @para

bt 介绍以及 bt 种子的hash值(特征值)计算

bt种子的hansh值计算,最近忽然对bt种子感兴趣了(原因勿问) 1. bt种子(概念) bt 是一个分布式文件分发协议,每个文件下载者在下载的同时向其它下载者不断的上传已经下载的数据,这样保证下载越快,上传越快,从而实现告诉下载 2. bt 如何实现下载同时上传文件 这个需要从文件本身说起,bt文件包含了两部分信息,一部分是Tracker信息,一部分是文件信息,tracker信息主要是记录下载过程中需要的tracker服务器地址和针对tracker服务器的设置,文件信息是根据对目标文件的计算

IOS9.0中hash值的bug与解决方案

事件起因 事情是这样的:产品上线发布,突然出现了问题.运营Gg过来反应,当场给露珠演示,运营同事的手机是iphone,bug确实是存在的.奇怪的是露珠用了其他iphone手机(借别人的,露珠的是吊死安卓机),却没有发现这个问题.仔细询问,同事说他最近刚刚升级的ios9,于是问题最初定位在操作系统上.接下来检查代码,发现运行正常,逻辑也没错.问题就卡到这里了.没办法,线上问题,fiddler替换本地脚本调试,一级一级alert,从项目文件到底层库,最后定位到了backbone.查看backbone

向云转型中的江西互联网基础服务行业面貌-2015年2月江西IDC排行榜

 原来卖虚拟主机.域名注册.服务器托管的, 现在已经不再是这样叫卖了, 冠上新名称:云主机 万网也因上市无望,被阿里收编为"阿里云", 而参与竞争的又加了一批国际高手:AWS.Azure,甚至是各个行业云应用. 而在全国的主机市上,七牛等主机也显得生机蓬勃. 那么江西IDC市场的"云"转化得如何呢? 自2014年初,华夏互联推出省内第一款云主机,并配合逐浪CMS进行使用,目前已经拥有了一定的经验和客户积累.同城的IDC企业也开始了新一轮的云主机建设,在通向云设施

中山大学选拔赛第一章题1【计算生成树】------2015年1月23日

1.1问题描述 1.2问题分析 本题主要考查图论中生成树及组合数学的求法.通过观察我们可以发现当输入为n时,我们一共有(5*n-n)=4n个点.通过思考我们可以知道,要想求得生成树,我们必须使所有五角形的圈全部破掉.那么我们可以思考: 如果对于一个五角形而言,它的每一条边都不删除,那么我们可以发现这必定不能构成生成树,因为这会导致在五角形内任意两个点会至少含有两条路径,不符合生成树的含义.所以我们可以得出如下结论: (1)对于有边数为n的回圈,我们可以发现一共有4n个点,共有5n条边.根据生成树

中山大学校队选拔赛第一章题1【计算生成树】------2015年1月23日

1.1问题描述 1.2问题分析 本题主要考查图论中生成树及组合数学的求法.通过观察我们可以发现当输入为n时,我们一共有(5*n-n)=4n个点.通过思考我们可以知道,要想求得生成树,我们必须使所有五角形的圈全部破掉.那么我们可以思考: 如果对于一个五角形而言,它的每一条边都不删除,那么我们可以发现这必定不能构成生成树,因为这会导致在五角形内任意两个点会至少含有两条路径,不符合生成树的含义.所以我们可以得出如下结论: (1)对于有边数为n的回圈,我们可以发现一共有4n个点,共有5n条边.根据生成树

域hash值破解的总结经验

1.vsssown.vbs拷贝域数据库: 1.1上传vssown.vbs文件 上传cscript.exe和vssown.vbs到域服务器上 1.2创建快照 reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters //得到ntds的默认路径:c:\ Windows\NTDS\ntds.dit cd 桌面 cscript //nologo vssown.vbs /start //启用 cscript

WebQQ hash值获取 C#方法 2014/06/20

去年心血来潮,利用闲暇时间做了一个WebQQ的桌面软件,基本功能实现之后,就放那儿了.webQQ的协议时常更新,导致有些参数加密的方法要跟着更新,今天群里一朋友提供了一份最新的WebQQ hash的js,我转成了C#的方法,记在这里,希望对正在做webqq的朋友有所帮助. js方法 p=getqqhsahs(b,j) { for (var a = j + "password error", i = "", E = [];;) if (i.length <= a

计算4000000000以内最大的f(n)=n的值---字符串问题python实现(五)

问题: 写一个函数,计算4 000 000 000 以内的最大的那个f(n)=n的值,函数f的功能是统计所有0到n之间所有含有数字1的数字和.比如:f(13)= 6,因为"1"在"1,2,3,4,5,6,7,8,9,10,11,12,13"中的总数是6(1,10,11,12,13). 分析: 一.简单方法 - 枚举 采用"枚举法"对每个数都计算一遍1的个数,直到枚举完给定范围所有数,找到符合f(n)=n的数.此方法,代码效率极低,运算所需时间巨大