diff --git a/yowsup/env/__init__.py b/yowsup/env/__init__.py index a025c7df..e06a1c58 100644 --- a/yowsup/env/__init__.py +++ b/yowsup/env/__init__.py @@ -1,2 +1,3 @@ from .env import YowsupEnv -from .env_android import AndroidYowsupEnv +from .env_ios import iOsYowsupEnv +from .env_android import AndroidYowsupEnv \ No newline at end of file diff --git a/yowsup/env/env.py b/yowsup/env/env.py index ed2ff7d6..eedc5933 100644 --- a/yowsup/env/env.py +++ b/yowsup/env/env.py @@ -4,7 +4,7 @@ logger = logging.getLogger(__name__) -DEFAULT = "android" +DEFAULT = "ios" class YowsupEnvType(abc.ABCMeta): @@ -58,6 +58,16 @@ def getCurrent(cls): logger.debug("Env not set, setting it to %s" % env) cls.setEnv(env) return cls.__CURR + + @classmethod + def getAndroidEnv(cls): + env = "android" + envs = cls.getRegisteredEnvs() + if env not in envs: + env = envs[0] + logger.debug("Env not set, setting it to %s" % env) + cls.setEnv(env) + return cls.__CURR @abc.abstractmethod def getToken(self, phoneNumber): diff --git a/yowsup/env/env_android.py b/yowsup/env/env_android.py index 28af775d..0355b129 100644 --- a/yowsup/env/env_android.py +++ b/yowsup/env/env_android.py @@ -17,10 +17,10 @@ class AndroidYowsupEnv(YowsupEnv): "YHNtYoIvt5R3X6YZylbPftF/8ayWTALBgcqhkjOOAQDBQADLwAwLAIUAKYCp0d6z4QQdyN74JDfQ2WCyi8CFDUM4CaNB+ceVXd" \ "KtOrNTQcc0e+t" - _MD5_CLASSES = "WuFH18yXKRVezywQm+S24A==" + _MD5_CLASSES = "XJnX1aI5e1bGaWmv350l+g==" _KEY = "eQV5aq/Cg63Gsq1sshN9T3gh+UUp0wIw0xgHYT1bnCjEqOJQKCRrWxdAe2yvsDeCJL+Y4G3PRD2HUF7oUgiGo8vGlNJOaux26k+A2F3hj8A=" - _VERSION = "2.21.21.18" # 2.20.206.24 + _VERSION = "2.22.2.73" # 2.20.206.24 _OS_NAME = "Android" _OS_VERSION = "8.0.0" _DEVICE_NAME = "star2lte" diff --git a/yowsup/env/env_ios.py b/yowsup/env/env_ios.py new file mode 100644 index 00000000..a19f95ba --- /dev/null +++ b/yowsup/env/env_ios.py @@ -0,0 +1,39 @@ +from .env import YowsupEnv +import base64 +import hashlib + + +class iOsYowsupEnv(YowsupEnv): + _VERSION = "2.23.3.77" # 2.20.206.24 + _OS_NAME = "iOS" + _OS_VERSION = "15.3.1" + _DEVICE_NAME = "iPhone 7" + _MANUFACTURER = "Apple" + _BUILD_VERSION = "19D52" + _AXOLOTL = True + _TOKEN = "0a1mLfGUIBVrMKF1RdvLI5lkRBvof6vn0fD2QRSMd932504778ec0f7a957a42f728c086c8{phone}" + + def getVersion(self): + return self.__class__._VERSION + + def getOSName(self): + return self.__class__._OS_NAME + + def getOSVersion(self): + return self.__class__._OS_VERSION + + def getDeviceName(self): + return self.__class__._DEVICE_NAME + + def getBuildVersion(self): + return self.__class__._BUILD_VERSION + + def getManufacturer(self): + return self.__class__._MANUFACTURER + + def isAxolotlEnabled(self): + return self.__class__._AXOLOTL + + def getToken(self, phoneNumber): + result = hashlib.md5(self.__class__._TOKEN.format(phone = phoneNumber).encode()).hexdigest() + return result diff --git a/yowsup/layers/noise/layer.py b/yowsup/layers/noise/layer.py index 71f212c5..41ef8b6d 100644 --- a/yowsup/layers/noise/layer.py +++ b/yowsup/layers/noise/layer.py @@ -91,13 +91,20 @@ def on_auth(self, event): remote_static = config.server_static_public self._rs = remote_static - yowsupenv = YowsupEnv.getCurrent() + yowsupenv = YowsupEnv.getAndroidEnv() + + ##prepare os version + version_str = yowsupenv.getVersion() + version_list = version_str.split('.') + if len(version_list) > 3: + version_str = "%s.%s.%s" % (version_list[0], version_list[1], version_list[2]) + client_config = ClientConfig( username=username, passive=passive, useragent=UserAgentConfig( platform=0, - app_version=yowsupenv.getVersion(), + app_version=version_str, mcc=config.mcc or "000", mnc=config.mnc or "000", os_version=yowsupenv.getOSVersion(),