def generateAuthBlob(self, nonce): keys = KeyStream.generateKeys(self.credentials[1], nonce) currentEnv = YowsupEnv.getCurrent() inputKey = KeyStream(keys[2], keys[3]) outputKey = KeyStream(keys[0], keys[1]) #YowCryptLayer.setProp("inputKey", inputKey) nums = bytearray(4) #nums = [0] * 4 username_bytes = list(map(ord, self.credentials[0])) nums.extend(username_bytes) nums.extend(nonce) utcNow = str(int(TimeTools.utcTimestamp())) time_bytes = list(map(ord, utcNow)) nums.extend(time_bytes) strCat = "\x00\x00\x00\x00\x00\x00\x00\x00" strCat += currentEnv.getOSVersion() + "\x00" strCat += currentEnv.getManufacturer() + "\x00" strCat += currentEnv.getDeviceName() + "\x00" strCat += currentEnv.getBuildVersion() nums.extend(list(map(ord, strCat))) encoded = outputKey.encodeMessage(nums, 0, 4, len(nums) - 4) authBlob = "".join(map(chr, encoded)) return (inputKey, outputKey, authBlob)
def __init__(self, cc, p_in, idx): super(WAExistsRequest, self).__init__() self.addParam("cc", cc) self.addParam("in", p_in) self.addParam("id", idx) self.addParam("lg", "en") self.addParam("lc", "GB") self.addParam("token", YowsupEnv.getCurrent().getToken(p_in)) self.addParam("mistyped", '6') self.addParam('network_radio_type', '1') self.addParam('simnum', '1') self.addParam('s', '') self.addParam('copiedrc', '1') self.addParam('hasinrc', '1') self.addParam('rcmatch', '1') self.addParam('pid', os.getpid()) self.addParam('extexist', '1') self.addParam('extstate', '1') self.url = "v.whatsapp.net/v2/exist" self.pvars = [ "status", "reason", "sms_length", "voice_length", "result", "param", "pw", "login", "type", "expiration", "kind", "price", "cost", "currency", "price_expiration" ] self.setParser(JSONResponseParser())
def generateAuthBlob(self, nonce): keys = KeyStream.generateKeys(self.credentials[1], nonce) currentEnv = YowsupEnv.getCurrent() inputKey = KeyStream(keys[2], keys[3]) outputKey = KeyStream(keys[0], keys[1]) # YowCryptLayer.setProp("inputKey", inputKey) nums = bytearray(4) # nums = [0] * 4 username_bytes = list(map(ord, self.credentials[0])) nums.extend(username_bytes) nums.extend(nonce) utcNow = str(int(TimeTools.utcTimestamp())) time_bytes = list(map(ord, utcNow)) nums.extend(time_bytes) strCat = "\x00\x00\x00\x00\x00\x00\x00\x00" strCat += currentEnv.getOSVersion() + "\x00" strCat += currentEnv.getManufacturer() + "\x00" strCat += currentEnv.getDeviceName() + "\x00" strCat += currentEnv.getBuildVersion() nums.extend(list(map(ord, strCat))) encoded = outputKey.encodeMessage(nums, 0, 4, len(nums) - 4) authBlob = "".join(map(chr, encoded)) return (inputKey, outputKey, authBlob)
def recv_message(): layers = ( EchoLayer, YowParallelLayer([ YowAuthenticationProtocolLayer, YowMessagesProtocolLayer, YowReceiptProtocolLayer, YowAckProtocolLayer ]), AxolotlControlLayer, YowParallelLayer((AxolotlSendLayer, AxolotlReceivelayer)), ) + YOWSUP_CORE_LAYERS stack = YowStack(layers) # Setting credentials stack.setProp(YowAuthenticationProtocolLayer.PROP_CREDENTIALS, CREDENTIALS) # WhatsApp server address stack.setProp(YowNetworkLayer.PROP_ENDPOINT, YowConstants.ENDPOINTS[0]) stack.setProp(YowCoderLayer.PROP_DOMAIN, YowConstants.DOMAIN) stack.setProp(YowCoderLayer.PROP_RESOURCE, YowsupEnv.getCurrent().getResource()) # Sending connecting signal stack.broadcastEvent(YowLayerEvent(YowNetworkLayer.EVENT_STATE_CONNECT)) try: # Program main loop stack.loop() except AuthError as e: print('Authentication error %s' % e.message) sys.exit(1)
def __init__(self,cc, p_in, idx): super(WAExistsRequest,self).__init__() self.addParam("cc", cc) self.addParam("in", p_in) self.addParam("id", idx) self.addParam("lg", "en") self.addParam("lc", "GB") self.addParam("token", YowsupEnv.getCurrent().getToken(p_in)) self.addParam("mistyped", '6') self.addParam('network_radio_type', '1') self.addParam('simnum', '1') self.addParam('s', '') self.addParam('copiedrc', '1') self.addParam('hasinrc', '1') self.addParam('rcmatch', '1') self.addParam('pid', os.getpid()) self.addParam('extexist', '1') self.addParam('extstate', '1') self.url = "v.whatsapp.net/v2/exist" self.pvars = ["status", "reason", "sms_length", "voice_length", "result","param", "pw", "login", "type", "expiration", "kind", "price", "cost", "currency", "price_expiration" ] self.setParser(JSONResponseParser())
def workerwhatsapp(): stackBuilder = YowStackBuilder() stack = stackBuilder.pushDefaultLayers(True).push(laye).build() stack.setCredentials(CREDENTIALS) stack.broadcastEvent(YowLayerEvent(YowNetworkLayer.EVENT_STATE_CONNECT)) stack.setProp(YowNetworkLayer.PROP_ENDPOINT, YowConstants.ENDPOINTS[0]) stack.setProp(YowCoderLayer.PROP_DOMAIN, YowConstants.DOMAIN) stack.setProp(YowCoderLayer.PROP_RESOURCE, YowsupEnv.getCurrent().getResource()) stack.loop(timeout=0.5, discrete=0.5)
def __init__(self, stackClassesArr = None, reversed = True, props = None): stackClassesArr = stackClassesArr or () self.__stack = stackClassesArr[::-1] if reversed else stackClassesArr self.__stackInstances = [] self._props = props or {} self.setProp(YowNetworkLayer.PROP_ENDPOINT, YowConstants.ENDPOINTS[random.randint(0,len(YowConstants.ENDPOINTS)-1)]) self.setProp(YowCoderLayer.PROP_DOMAIN, YowConstants.DOMAIN) self.setProp(YowCoderLayer.PROP_RESOURCE, YowsupEnv.getCurrent().getResource()) self._construct()
def __init__(self, stackClassesArr=None, reversed=True, props=None): stackClassesArr = stackClassesArr or () self.__stack = stackClassesArr[::-1] if reversed else stackClassesArr self.__stackInstances = [] self._props = props or {} self.setProp( YowNetworkLayer.PROP_ENDPOINT, YowConstants.ENDPOINTS[random.randint( 0, len(YowConstants.ENDPOINTS) - 1)]) self.setProp(YowCoderLayer.PROP_DOMAIN, YowConstants.DOMAIN) self.setProp(YowCoderLayer.PROP_RESOURCE, YowsupEnv.getCurrent().getResource()) self._construct()
def start_server(): layers = ( EchoLayer, YowParallelLayer([YowAuthenticationProtocolLayer, YowMessagesProtocolLayer, YowReceiptProtocolLayer, YowAckProtocolLayer]),YowAxolotlLayer ) + YOWSUP_CORE_LAYERS stack = YowStack(layers) stack.setProp(YowAuthenticationProtocolLayer.PROP_CREDENTIALS, CREDENTIALS) #setting credentials stack.setProp(YowNetworkLayer.PROP_ENDPOINT, YowConstants.ENDPOINTS[0]) #whatsapp server address stack.setProp(YowCoderLayer.PROP_DOMAIN, YowConstants.DOMAIN) stack.setProp(YowCoderLayer.PROP_RESOURCE, YowsupEnv.getCurrent().getResource()) #info about us as WhatsApp client stack.broadcastEvent(YowLayerEvent(YowNetworkLayer.EVENT_STATE_CONNECT)) #sending the connect signal stack.loop()
def __init__(self, credentials, encryptionEnabled=True): stackBuilder = YowStackBuilder() self.stack = stackBuilder\ .pushDefaultLayers(encryptionEnabled)\ .push(CadastroLayer)\ .build() self.stack.setCredentials(credentials) self.stack.setProp(YowNetworkLayer.PROP_ENDPOINT, YowConstants.ENDPOINTS[0]) #whatsapp server address self.stack.setProp(YowCoderLayer.PROP_DOMAIN, YowConstants.DOMAIN) self.stack.setProp(YowCoderLayer.PROP_RESOURCE, YowsupEnv.getCurrent().getResource() ) #info about us as WhatsApp client self.stack.setProp(PROP_IDENTITY_AUTOTRUST, True)
def main(): botLayer = BotLayer() stack = YowStackBuilder.getDefaultStack(botLayer, axolotl=True, groups=True, media=True, privacy=True, profiles=True) stack.setProp(YowNetworkLayer.PROP_ENDPOINT, YowConstants.ENDPOINTS[0]) stack.setProp(YowCoderLayer.PROP_DOMAIN, YowConstants.DOMAIN) stack.setProp(YowCoderLayer.PROP_RESOURCE, YowsupEnv.getCurrent().getResource()) stack.setCredentials(getCredentials()) stack.setProp(PROP_IDENTITY_AUTOTRUST, True) stack.broadcastEvent(YowLayerEvent(YowNetworkLayer.EVENT_STATE_CONNECT)) stack.loop()
def __init__(self, cc, p_in, mcc="000", mnc="000", sim_mcc="000", sim_mnc="000", method="sms"): super(WACodeRequest, self).__init__() idx = StorageTools.getIdentity(cc + p_in) self.p_in = p_in self.__id = idx self.cc = cc self.addParam("cc", cc) self.addParam("in", p_in) self.addParam("lc", "GB") self.addParam("lg", "en") self.addParam("sim_mcc", sim_mcc.zfill(3)) self.addParam("sim_mnc", sim_mnc.zfill(3)) self.addParam("mcc", sim_mcc.zfill(3)) self.addParam("mnc", sim_mnc.zfill(3)) self.addParam("method", method) self.addParam("mistyped", "6") self.addParam("network_radio_type", "1") self.addParam("simnum", "1") self.addParam("s", "") self.addParam("copiedrc", "1") self.addParam("hasinrc", "1") self.addParam("rcmatch", "1") self.addParam("pid", int(random.uniform(100, 9999))) self.addParam("rchash", hashlib.sha256(os.urandom(20)).hexdigest()) self.addParam("anhash", os.urandom(20)) self.addParam("extexist", "1") self.addParam("extstate", "1") self.addParam("token", YowsupEnv.getCurrent().getToken(p_in)) self.url = "v.whatsapp.net/v2/code" self.pvars = ["status","reason","length", "method", "retry_after", "code", "param"] +\ ["login", "pw", "type", "expiration", "kind", "price", "cost", "currency", "price_expiration"] self.setParser(JSONResponseParser())
def __init__(self,cc, p_in, idx): super(WAExistsRequest,self).__init__() self.addParam("cc", cc) self.addParam("in", p_in) self.addParam("id", idx) self.addParam("lg", "en") self.addParam("lc", "GB") self.addParam("token", YowsupEnv.getCurrent().getToken(p_in)) self.url = "v.whatsapp.net/v2/exist" self.pvars = ["status", "reason", "sms_length", "voice_length", "result","param", "pw", "login", "type", "expiration", "kind", "price", "cost", "currency", "price_expiration" ] self.setParser(JSONResponseParser())
def __init__(self, config): """ :param config: :type config: yowsup.config.v1.config.Config """ super(WAExistsRequest,self).__init__(config) if config.id is None: raise ValueError("Config does not contain id") self.url = "v.whatsapp.net/v2/exist" self.pvars = ["status", "reason", "sms_length", "voice_length", "result","param", "login", "type", "chat_dns_domain", "edge_routing_info" ] self.setParser(JSONResponseParser()) self.addParam("token", YowsupEnv.getCurrent().getToken(self._p_in))
def __init__(self, config): """ :param config: :type config: yowsup.config.v1.config.Config """ super(WAExistsRequest, self).__init__(config) if config.id is None: raise ValueError("Config does not contain id") self.url = "v.whatsapp.net/v2/exist" self.pvars = [ "status", "reason", "sms_length", "voice_length", "result", "param", "login", "type", "chat_dns_domain", "edge_routing_info" ] self.setParser(JSONResponseParser()) self.addParam("token", YowsupEnv.getCurrent().getToken(self._p_in))
def __init__(self, method, config): """ :type method: str :param config: :type config: yowsup.config.v1.config.Config """ super(WACodeRequest,self).__init__(config) self.addParam("mcc", config.mcc.zfill(3)) self.addParam("mnc", config.mnc.zfill(3)) self.addParam("sim_mcc", config.sim_mcc.zfill(3)) self.addParam("sim_mnc", config.sim_mnc.zfill(3)) self.addParam("method", method) self.addParam("reason", "") self.addParam("token", YowsupEnv.getCurrent().getToken(self._p_in)) self.addParam("hasav", "1") self.url = "v.whatsapp.net/v2/code" self.pvars = ["status","reason","length", "method", "retry_after", "code", "param"] +\ ["login", "type", "sms_wait", "voice_wait"] self.setParser(JSONResponseParser())
def __init__(self,cc, p_in, mcc= "000", mnc = "000", sim_mcc = "000", sim_mnc = "000", method="sms"): super(WACodeRequest,self).__init__() idx = StorageTools.getIdentity(cc + p_in) self.p_in = p_in self.__id = idx self.cc = cc self.addParam("cc", cc) self.addParam("in", p_in) self.addParam("lc", "GB") self.addParam("lg", "en") self.addParam("sim_mcc", sim_mcc.zfill(3)) self.addParam("sim_mnc", sim_mnc.zfill(3)) self.addParam("mcc", sim_mcc.zfill(3)) self.addParam("mnc", sim_mnc.zfill(3)) self.addParam("method", method) self.addParam("mistyped", "6") self.addParam("network_radio_type", "1") self.addParam("simnum", "1") self.addParam("s", "") self.addParam("copiedrc", "1") self.addParam("hasinrc", "1") self.addParam("rcmatch", "1") self.addParam("pid", int(random.uniform(100,9999))) self.addParam("rchash", hashlib.sha256(os.urandom(20)).hexdigest()) self.addParam("anhash", os.urandom(20)) self.addParam("extexist", "1") self.addParam("extstate", "1") self.addParam("token", YowsupEnv.getCurrent().getToken(p_in)) self.url = "v.whatsapp.net/v2/code" self.pvars = ["status","reason","length", "method", "retry_after", "code", "param"] +\ ["login", "pw", "type", "expiration", "kind", "price", "cost", "currency", "price_expiration"] self.setParser(JSONResponseParser())
def __init__(self, credentials, messages): layers = (SendMedia, ) + ( YOWSUP_PROTOCOL_LAYERS_FULL, ) + YOWSUP_CORE_LAYERS stackBuilder = YowStackBuilder() self.stack = stackBuilder\ .pushDefaultLayers(True)\ .push(SendMedia)\ .build() #envi = YowsupEnv() ##self.stack = YowStack(layers) self.stack.setProp(SendMedia.PROP_MESSAGES, messages) self.stack.setProp(YowAuthenticationProtocolLayer.PROP_PASSIVE, True) self.stack.setProp(YowAuthenticationProtocolLayer.PROP_CREDENTIALS, credentials) self.stack.setProp(YowNetworkLayer.PROP_ENDPOINT, YowConstants.ENDPOINTS[0]) self.stack.setProp(YowCoderLayer.PROP_DOMAIN, YowConstants.DOMAIN) #self.stack.setProp(YowCoderLayer.PROP_RESOURCE, env.CURRENT_ENV.getResource()) self.stack.setProp(YowCoderLayer.PROP_RESOURCE, YowsupEnv.getCurrent().getResource())
def send_message(destination, message): ''' destination is <phone number> without '+' and with country code of type string, message is string e.g send_message('11133434343','hello') ''' messages = [(destination, message)] layers = ( EchoLayer, YowParallelLayer([ YowAuthenticationProtocolLayer, YowMessagesProtocolLayer, YowReceiptProtocolLayer, YowAckProtocolLayer ]), AxolotlControlLayer, YowParallelLayer((AxolotlSendLayer, AxolotlReceivelayer)), ) + YOWSUP_CORE_LAYERS stack = YowStack(layers) stack.setProp(EchoLayer.PROP_MESSAGES, messages) stack.setProp(YowAuthenticationProtocolLayer.PROP_PASSIVE, True) # Setting credentials stack.setProp(YowAuthenticationProtocolLayer.PROP_CREDENTIALS, CREDENTIALS) # WhatsApp server address stack.setProp(YowNetworkLayer.PROP_ENDPOINT, YowConstants.ENDPOINTS[0]) stack.setProp(YowCoderLayer.PROP_DOMAIN, YowConstants.DOMAIN) stack.setProp(YowCoderLayer.PROP_RESOURCE, YowsupEnv.getCurrent().getResource()) # Sending connecting signal stack.broadcastEvent(YowLayerEvent(YowNetworkLayer.EVENT_STATE_CONNECT)) try: # Program main loop stack.loop() except AuthError as e: print('Authentication error %s' % e.message) sys.exit(1)
def getUserAgent(self): return YowsupEnv.getCurrent().getUserAgent()
def getUserAgent(self): return YowsupEnv.getCurrent().getUserAgent()
from yowsup.layers.protocol_receipts import YowReceiptProtocolLayer from yowsup.layers.protocol_acks import YowAckProtocolLayer from yowsup.layers.network import YowNetworkLayer from yowsup.layers.coder import YowCoderLayer from yowsup.layers.protocol_iq import YowIqProtocolLayer from yowsup.stacks import YowStack from yowsup.common import YowConstants from yowsup.layers import YowLayerEvent from yowsup.stacks import YowStack, YOWSUP_CORE_LAYERS from yowsup.layers.axolotl import YowAxolotlLayer from yowsup.env import YowsupEnv CREDENTIALS = ("CC9999999999", "password-here") # replace with your phone and password if __name__== "__main__": layers = ( EchoLayer, YowParallelLayer([YowAuthenticationProtocolLayer, YowIqProtocolLayer, YowMessagesProtocolLayer, YowReceiptProtocolLayer, YowAckProtocolLayer]),YowAxolotlLayer ) + YOWSUP_CORE_LAYERS stack = YowStack(layers) stack.setProp(YowAuthenticationProtocolLayer.PROP_CREDENTIALS, CREDENTIALS) #setting credentials stack.setProp(YowNetworkLayer.PROP_ENDPOINT, YowConstants.ENDPOINTS[0]) #whatsapp server address stack.setProp(YowCoderLayer.PROP_DOMAIN, YowConstants.DOMAIN) stack.setProp(YowCoderLayer.PROP_RESOURCE, YowsupEnv.getCurrent().getResource()) #info about us as WhatsApp client stack.broadcastEvent(YowLayerEvent(YowNetworkLayer.EVENT_STATE_CONNECT)) #sending the connect signal stack.loop() #this is the program mainloop
if __name__== "__main__": #if credentials are unavailable, launch auth window. if len(CREDENTIALS[0]) < 2: #print(CREDENTIALS[0]) auth_w = auth_window() #initialize yowsup stack, with the layers we need. StackBuilder = YowStackBuilder() stack = StackBuilder.getDefaultStack(layer=YowsupCliLayer, axolotl=True) stack.setProp(YowAuthenticationProtocolLayer.PROP_CREDENTIALS, CREDENTIALS) #setting credentials stack.setProp(YowNetworkLayer.PROP_ENDPOINT, YowConstants.ENDPOINTS[0]) #whatsapp server address stack.setProp(YowCoderLayer.PROP_DOMAIN, YowConstants.DOMAIN) stack.setProp(YowCoderLayer.PROP_RESOURCE, YowsupEnv.getCurrent().getResource()) #info about us as WhatsApp client stack.broadcastEvent(YowLayerEvent(YowNetworkLayer.EVENT_STATE_CONNECT)) #sending the connect signal for i in range(9): #print(str(i)+" = "+str(stack.getLayer(i))) if str(stack.getLayer(i)) == "CLI Interface Layer": InterfaceLayer = stack.getLayer(i) break #print(X) #setting bot and cli layer to know each other. BOT = InterfaceLayer.getBot() BOT.getCliLayer(InterfaceLayer)
if __name__ == "__main__": setup() stackBuilder = YowStackBuilder() send_layer = SendLayer() stack = stackBuilder.pushDefaultLayers(True).push(send_layer).build() stack.setProp(YowAuthenticationProtocolLayer.PROP_CREDENTIALS, CREDENTIALS) stack.setProp(YowNetworkLayer.PROP_ENDPOINT, YowConstants.ENDPOINTS[0]) stack.setProp(YowCoderLayer.PROP_DOMAIN, YowConstants.DOMAIN) stack.setProp(YowCoderLayer.PROP_RESOURCE, YowsupEnv.getCurrent().getResource()) stack.broadcastEvent(YowLayerEvent(YowNetworkLayer.EVENT_STATE_CONNECT)) try: print("Starting thread") t = Thread(target=check_for_reminder_messages, args=(send_layer, )) t.start() print("Starting the loop") stack.loop(timeout=0.5, discrete=0.5) print("Done") except AuthError as e: print("Authentication Error: %s" % e.message)
AxolotlSendLayer, YowLoggerLayer, YowCoderLayer, YowCryptLayer, YowStanzaRegulator, YowNetworkLayer ) + YOWSUP_CORE_LAYERS stack = YowStack(layers) # Setting credentials stack.setProp(YowAuthenticationProtocolLayer.PROP_CREDENTIALS, CREDENTIALS) # WhatsApp server address stack.setProp(YowNetworkLayer.PROP_ENDPOINT, YowConstants.ENDPOINTS[0]) stack.setProp(YowCoderLayer.PROP_DOMAIN, YowConstants.DOMAIN) stack.setProp(YowCoderLayer.PROP_RESOURCE, YowsupEnv.getCurrent().getResource()) # Sending connecting signal stack.broadcastEvent(YowLayerEvent(YowNetworkLayer.EVENT_STATE_CONNECT)) print('Iniciado.') try: # Program main loop stack.loop() except KeyboardInterrupt as e: print('Saindo...') else: print('Syntax: {} <config_file>'.format(sys.argv[0]))