acc
unknown
python
2 years ago
10 kB
5
Indexable
Never
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 =10 #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("yy") 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: #print("start") response = client.register(nickname = nickname, email = email, password = password, verificationCode=captcha) print(response) if response is False: break 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}"}},' print(acc) 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 Exception as g: print(g) pass if __name__ == "__main__": for i in range(threads): Thread(target = main).start()