Advertisement
Guest User

Untitled

a guest
Feb 27th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.98 KB | None | 0 0
  1. from .env import YowsupEnv
  2. import base64
  3. import hashlib
  4.  
  5.  
  6. class AndroidYowsupEnv(YowsupEnv):
  7. _SIGNATURE = "MIIDMjCCAvCgAwIBAgIETCU2pDALBgcqhkjOOAQDBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFDASBgNV" \
  8. "BAcTC1NhbnRhIENsYXJhMRYwFAYDVQQKEw1XaGF0c0FwcCBJbmMuMRQwEgYDVQQLEwtFbmdpbmVlcmluZzEUMBIGA1UEAxMLQnJ" \
  9. "pYW4gQWN0b24wHhcNMTAwNjI1MjMwNzE2WhcNNDQwMjE1MjMwNzE2WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5" \
  10. "pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExFjAUBgNVBAoTDVdoYXRzQXBwIEluYy4xFDASBgNVBAsTC0VuZ2luZWVyaW5nMRQwEg" \
  11. "YDVQQDEwtCcmlhbiBBY3RvbjCCAbgwggEsBgcqhkjOOAQBMIIBHwKBgQD9f1OBHXUSKVLfSpwu7OTn9hG3UjzvRADDHj+AtlEm" \
  12. "aUVdQCJR+1k9jVj6v8X1ujD2y5tVbNeBO4AdNG/yZmC3a5lQpaSfn+gEexAiwk+7qdf+t8Yb+DtX58aophUPBPuD9tPFHsMCN" \
  13. "VQTWhaRMvZ1864rYdcq7/IiAxmd0UgBxwIVAJdgUI8VIwvMspK5gqLrhAvwWBz1AoGBAPfhoIXWmz3ey7yrXDa4V7l5lK+7+jr" \
  14. "qgvlXTAs9B4JnUVlXjrrUWU/mcQcQgYC0SRZxI+hMKBYTt88JMozIpuE8FnqLVHyNKOCjrh4rs6Z1kW6jfwv6ITVi8ftiegEkO" \
  15. "8yk8b6oUZCJqIPf4VrlnwaSi2ZegHtVJWQBTDv+z0kqA4GFAAKBgQDRGYtLgWh7zyRtQainJfCpiaUbzjJuhMgo4fVWZIvXHaS" \
  16. "HBU1t5w//S0lDK2hiqkj8KpMWGywVov9eZxZy37V26dEqr/c2m5qZ0E+ynSu7sqUD7kGx/zeIcGT0H+KAVgkGNQCo5Uc0koLRW" \
  17. "YHNtYoIvt5R3X6YZylbPftF/8ayWTALBgcqhkjOOAQDBQADLwAwLAIUAKYCp0d6z4QQdyN74JDfQ2WCyi8CFDUM4CaNB+ceVXd" \
  18. "KtOrNTQcc0e+t"
  19.  
  20. _MD5_CLASSES = "1I2weuZmVg+uL50+HXeSJw=="
  21. _KEY = "eQV5aq/Cg63Gsq1sshN9T3gh+UUp0wIw0xgHYT1bnCjEqOJQKCRrWxdAe2yvsDeCJL+Y4G3PRD2HUF7oUgiGo8vGlNJOaux26k+A2F3hj8A="
  22.  
  23. _VERSION = "2.16.328"
  24. _OS_NAME = "Android"
  25. _OS_VERSION = "4.3"
  26. _DEVICE_NAME = "armani"
  27. _MANUFACTURER = "Xiaomi"
  28. _BUILD_VERSION = "JLS36C"
  29. _AXOLOTL = True
  30.  
  31. def getVersion(self):
  32. return self.__class__._VERSION
  33.  
  34. def getOSName(self):
  35. return self.__class__._OS_NAME
  36.  
  37. def getOSVersion(self):
  38. return self.__class__._OS_VERSION
  39.  
  40. def getDeviceName(self):
  41. return self.__class__._DEVICE_NAME
  42.  
  43. def getBuildVersion(self):
  44. return self.__class__._BUILD_VERSION
  45.  
  46. def getManufacturer(self):
  47. return self.__class__._MANUFACTURER
  48.  
  49. def isAxolotlEnabled(self):
  50. return self.__class__._AXOLOTL
  51.  
  52. def getToken(self, phoneNumber):
  53. keyDecoded = bytearray(base64.b64decode(self.__class__._KEY))
  54. sigDecoded = base64.b64decode(self.__class__._SIGNATURE)
  55. clsDecoded = base64.b64decode(self.__class__._MD5_CLASSES)
  56. data = sigDecoded + clsDecoded + phoneNumber.encode()
  57.  
  58. opad = bytearray()
  59. ipad = bytearray()
  60. for i in range(0, 64):
  61. opad.append(0x5C ^ keyDecoded[i])
  62. ipad.append(0x36 ^ keyDecoded[i])
  63. hash = hashlib.sha1()
  64. subHash = hashlib.sha1()
  65. try:
  66. subHash.update(ipad + data)
  67. hash.update(opad + subHash.digest())
  68. except TypeError:
  69. subHash.update(bytes(ipad + data))
  70. hash.update(bytes(opad + subHash.digest()))
  71. result = base64.b64encode(hash.digest())
  72. return result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement