acc gen

mail@pastecode.io avatar
unknown
python
3 years ago
10 kB
6
Indexable
import random
import requests
import json
import time

import base64
from threading import Thread
import hmac
import base64
from hashlib import sha1
from uuid import uuid4
import names
from hashlib import sha1
from functools import reduce
from base64 import b85decode, b64decode
import platform,socket,re,uuid 
proxies_file = 'p.txt' #Proxy file name
write_file = 'd.txt' #File for recording accounts
rucaptcha_key = 'key' #Rukapchi API Key
nickname = 'dichhk' #Account nickname
password = 'tempmail' #Account password
threads = 70 #Number of threads

def dev():
    hw=(names.get_full_name()+str(random.randint(0,10000000))+platform.version()+platform.machine()+names.get_first_name()+socket.gethostbyname(socket.gethostname())+':'.join(re.findall('..', '%012x' % uuid.getnode()))+platform.processor())
    identifier=sha1(hw.encode('utf-8')).digest()
    key='02b258c63559d8804321c5d5065af320358d366f'
    mac = hmac.new(bytes.fromhex(key), b"\x42" + identifier, sha1)
    return (f"42{identifier.hex()}{mac.hexdigest()}").upper()

def generate_sig_func(data):
    key='f8e7a61ac3f725941e3ac7cae2d688be97f30b93'
    mac = hmac.new(bytes.fromhex(key), data.encode("utf-8"), sha1)
    digest = bytes.fromhex("42") + mac.digest()
    return base64.b64encode(digest).decode("utf-8")


class Register:
    def __init__(self):
        self.api = 'https://service.narvii.com/api/v1'
        self.proxies = None

    def set_device(self, deviceId):
        self.device_id = deviceId
        self.s_headers = {"NDCDEVICEID": f"{self.device_id}"}

    def set_proxy(self, proxy):
        proxy = proxy.replace('\n','')
        proxies = {'http':str('http://'+str(proxy)),'https':str('http://'+str(proxy))}
        self.proxies = proxies

    def register(self, nickname: str, email: str, password: str, verificationCode: str):

        data = json.dumps({
            "secret": f"0 {password}",
            "deviceID": self.device_id,
            "email": email,
            "clientType": 100,
            "nickname": nickname,
            "latitude": 0,
            "longitude": 0,
            "address": None,
            "clientCallbackURL": "narviiapp://relogin",
            "validationContext": {
                "data": {
                    "code": verificationCode
                },
                "type": 1,
                "identity": email
            },
            "type": 1,
            "identity": email,
            "timestamp": int(time.time() * 1000)
        })

        d_headers = {
            "NDCDEVICEID": f"{self.device_id}",
            "NDC-MSG-SIG": generate_sig_func(data),
            "Accept-Language": "en-US",
            "Content-Type": "text/javascript; charset=UTF-8",
            "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 7.1.2; SM-G965N Build/star2ltexx-user 7.1.; com.narvii.amino.master/3.4.33592)",
            "Host": "service.narvii.com",
            "Accept-Encoding": "gzip",
            "Connection": "Upgrade"
        }
        
        try:
            response = requests.post(f"{self.api}/g/s/auth/register", data=data, headers=d_headers, proxies=self.proxies, timeout=10).json()
            return response
        
        except:
            return False

    def request_verify_code(self, email: str, resetPassword: bool = False):

        data = {
            "identity": email,
            "type": 1,
            "deviceID": self.device_id
        }

        if resetPassword is True:
            data["level"] = 2
            data["purpose"] = "reset-password"

        data = json.dumps(data)

        d_headers = {
            "NDCDEVICEID": f"{self.device_id}",
            "NDC-MSG-SIG": generate_sig_func(data),
            "Accept-Language": "en-US",
            "Content-Type": "text/javascript; charset=UTF-8",
            "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 7.1.2; SM-G965N Build/star2ltexx-user 7.1.; com.narvii.amino.master/3.4.33592)",
            "Host": "service.narvii.com",
            "Accept-Encoding": "gzip",
            "Connection": "Upgrade"
        }

        try: 
            response = requests.post(f"{self.api}/g/s/auth/request-security-validation", data=data, headers=d_headers, timeout=10).json()
            return response
        except Exception as e:
            print(e)
            return False

class Mail:
    def __init__(self, mail):
        self.mail = mail
        self.api = "https://www.1secmail.com/api/v1/"
        self.login, self.domain = self.mail.split("@")

    def get_email_messages(self):
        msg_id = requests.get(f"{self.api}?action=getMessages&login={self.login}&domain={self.domain}").json()[0]['id']
        return msg_id
    
    def get_email_link(self, msg_id: str):
        body = requests.get(f"{self.api}?action=readMessage&login={self.login}&domain={self.domain}&id={msg_id}").json()['body']
        msg = body.split()
        link = msg[49].split('"')
        return link[1]

class RuCaptcha:
    def __init__(self, api_key):
        self.key = api_key
    
    def decrypting_captchas(self,url: str):
       return requests.post("https://captcha-do-mega.herokuapp.com/", data={"text": url}).json()['captcha']

    def send_failed_captcha(self, taskId: str):
        requests.post(url = f'http://rucaptcha.com/res.php?key={self.key}&action=reportbad&id={taskId}')


def generate_mail():
    chars = 'abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
    email = ''
    for _ in range(16): email += random.choice(chars)
    return f'{email}@wwjmp.com'

def main():
    
    proxy_list = []
    proxies = open(proxies_file, 'r', encoding='utf-8')
    for proxy in proxies.readlines():
        proxy_list.append(proxy)
    client = Register()
    client.set_proxy(random.choice(proxy_list))
    rucaptcha_client = RuCaptcha(rucaptcha_key)
    while True:
        deviceId = dev()
        client.set_device(deviceId)
        try:
          for i in range(3):
              email = generate_mail()
              
              mail_client = Mail(email)
              response = client.request_verify_code(email = email)
              if response['api:message'] == 'OK':
                  while True:
                      try:
                          msg_id = mail_client.get_email_messages()
                          break
                      except:
                          pass
                  code = mail_client.get_email_link(msg_id)
                  print(code)
                  captcha = rucaptcha_client.decrypting_captchas(code)
                  print(captcha)
                  while True:
                      try:
                          if captcha:
                              response = client.register(nickname = nickname, email = email, password = password, verificationCode=captcha)
                              if response:
                                  if 'account' in response:
                                      with open(write_file, "a") as file:
                                          acc = f'\n{{"email": "{email}","password":"{password}","secret":f"{response["secret"]}","device": "{client.device_id}"}},'
                                          file.write(acc) 
                                      print(f"{email} {password}")
                                      break
                                  else:
                                      code = response["api:statuscode"]
                                      if code == 110:
                                          try:
                                              proxy_list.remove(client.proxies)
                                          except:
                                              pass
                                          client.set_proxy(random.choice(proxy_list))
                                          print('Change proxy.')
                                          continue
                                      elif code == 219:
                                          client.set_device(random.choice(deviceId))
                                          print('Change device ID.')
                                          continue
                                      elif code == 270:
                                          try:
                                              proxy_list.remove(client.proxies)
                                          except:
                                              pass
                                          client.set_proxy(random.choice(proxy_list))
                                          print('Change proxy.')
                                      elif code == 3102:
                                          print('Incorrect code. I am sending a message to the site')
                                          break
                                      else: 
                                          print(response)
                              else:
                                  try:
                                      proxy_list.remove(client.proxies)
                                  except:
                                      pass
                                  client.set_proxy(random.choice(proxy_list))
                          else:
                              print('No money rucaptcha...')
                              exit()
                      except requests.exceptions.ProxyError:
                          print('Change proxy.')
                          try:
                              proxy_list.remove(client.proxies)
                          except:
                              pass
                          client.set_proxy(random.choice(proxy_list))
              else:
                  print(response)
                  try:
                      proxy_list.remove(client.proxies)
                  except:
                      pass
                  client.set_proxy(random.choice(proxy_list))
                  print('Change proxy.')
        except:
          pass
if __name__ == "__main__":
    for i in range(threads):
        Thread(target = main).start()