zoukankan      html  css  js  c++  java
  • 腾讯webqq最新password加密算法,hash算法

    常常在做webqq机器人,可是最头痛的问题就是腾讯常常加一些验证串来防止robot,如今共享出最新的腾讯password加密算法和hash

    算法

    hash算法

    def webqq_hash(i, a):
        if isinstance(i, (str, unicode)):
            i = int(i)
        class b:
            def __init__(self, _b, i):
                self.s = _b or 0
                self.e = i or 0
    
        r = [i >> 24 & 255, i >> 16 & 255, i >> 8 & 255, i & 255]
    
        j = [ord(_a) for _a in a]
    
        e = [b(0, len(j) - 1)]
        while len(e) > 0:
            c = e.pop()
            if not (c.s >= c.e or c.s < 0 or c.e > len(j)):
                if c.s+1 == c.e:
                    if (j[c.s] > j[c.e]) :
                        l = j[c.s]
                        j[c.s] = j[c.e]
                        j[c.e] = l
                else:
                    l = c.s
                    J = c.e
                    f=j[c.s]
                    while c.s < c.e:
                        while c.s < c.e and j[c.e]>=f:
                            c.e -= 1
                            r[0] = r[0] + 3&255
    
                        if c.s < c.e:
                            j[c.s] = j[c.e]
                            c.s += 1
                            r[1] = r[1] * 13 + 43 & 255
    
                        while c.s < c.e and j[c.s] <= f:
                            c.s += 1
                            r[2] = r[2] - 3 & 255
    
                        if c.s < c.e:
                            j[c.e] = j[c.s]
                            c.e -= 1
                            r[3] = (r[0] ^ r[1]^r[2]^r[3]+1) & 255
                    j[c.s] = f
                    e.append(b(l, c.s-1))
                    e.append(b(c.s + 1, J))
        j = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A",
             "B", "C", "D", "E", "F"]
        e = ""
        for c in range(len(r)):
            e += j[r[c]>>4&15]
            e += j[r[c]&15]
    
        return e
    
    
    def newhash(b,j):
        a=j+"password error"
        i=""
        E=[]
        while True:
            if len(i)<=len(a):
                i+=b
                if len(i)==len(a):
                    break
            else:
                i=i[0:len(a)]
                break
        for c in range(len(i)):
            E.append(ord(str(i[c]))^ord(str(a[c])))
        a = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"]
        i = ""
        for c in range(len(E)):
            i+=a[E[c] >> 4 & 15]
            i+= a[E[c] & 15]
        return i

    这个算法加密出的串是获取好友列表和群列表都须要的

    password加密算法

    #md5加密函数
        def PCMd5(self,s):
            h=hashlib.md5()
            h.update(s)
            return h.hexdigest()
        #16进制转字符
        def hex2asc(self,s):
            _str="".join(s.split(r'x'))
            length=len(_str)
            data=''
            for i in range(0,length,2):
                data+=chr(int(_str[i:i+2],16))
            return data
     #密码加密函数
        '''
        v1 是 ptui_checkVC('0','!LJV','x00x00x00x00x00xa1x92x12') 第一个參数
        V2 是 ptui_checkVC('0','!LJV','x00x00x00x00x00xa1x92x12') 第二个
        '''
        def PasswordSecret(self,password,v1,v2,md5=True):
            if md5==True:
                password=self.PCMd5(password).upper()
            length=len(password)
            temp=''
            for i in range(0,length,2):
                temp+=r'x'+password[i:i+2]
            return self.PCMd5(self.PCMd5(self.hex2asc(temp)+self.hex2asc(v2)).upper()+v1).upper()
    



     

  • 相关阅读:
    ActiveSync合作关系对话框的配置
    WINCE对象存储区(object store)
    Wince 隐藏TASKBAR的方法
    Wince输入法换肤换语言机制
    poj 3080 Blue Jeans 解题报告
    codeforces A. Vasily the Bear and Triangle 解题报告
    hdu 1050 Moving Tables 解题报告
    hdu 1113 Word Amalgamation 解题报告
    codeforces A. IQ Test 解题报告
    poj 1007 DNA Sorting 解题报告
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3857237.html
Copyright © 2011-2022 走看看