dunno where its at
This commit is contained in:
parent
1779b47daf
commit
c02054ad1b
|
@ -1,9 +1,10 @@
|
|||
from .character import Character, Traits
|
||||
from .client import Client
|
||||
from .client_base import ClientBase, JUNK
|
||||
from .client_base import ClientBase
|
||||
from .packet import Packet, iPacket, oPacket
|
||||
from .packet_helper import Helpers
|
||||
from .client import NAMES
|
||||
# from .client import NAMES
|
||||
from .proxies import private, public
|
||||
|
||||
__all__ = (
|
||||
"Character",
|
||||
|
@ -13,7 +14,10 @@ __all__ = (
|
|||
"Packet",
|
||||
"iPacket",
|
||||
"oPacket",
|
||||
"NAMES",
|
||||
# "NAMES",
|
||||
"Traits",
|
||||
"JUNK"
|
||||
# "JUNK",
|
||||
# "proxies",
|
||||
"public",
|
||||
"private"
|
||||
)
|
||||
|
|
|
@ -11,14 +11,14 @@ from .packet_helper import Helpers
|
|||
from .tools import big_fuckin_mac
|
||||
|
||||
|
||||
NAMES = []
|
||||
# NAMES = []
|
||||
|
||||
|
||||
class Client(ClientBase):
|
||||
def __init__(
|
||||
self,
|
||||
loop=None,
|
||||
# names=None,
|
||||
names=None,
|
||||
username=None,
|
||||
password=None,
|
||||
proxy=None,
|
||||
|
@ -36,13 +36,12 @@ class Client(ClientBase):
|
|||
self._characters = []
|
||||
self._character_id = 0
|
||||
self._char_selected = None
|
||||
self._NAMES = NAMES
|
||||
self._NAMES = names
|
||||
|
||||
self._char_name = ""
|
||||
|
||||
async def process_events(self):
|
||||
while self._loop.is_running():
|
||||
|
||||
action = await self._action_queue.get()
|
||||
match action:
|
||||
case SendOps.LOGIN_PASSWORD:
|
||||
|
|
|
@ -2,9 +2,12 @@ from asyncio import (Event, Lock, Queue, Task, TimeoutError, create_task,
|
|||
get_event_loop, sleep)
|
||||
from datetime import datetime
|
||||
from socket import AF_INET, IPPROTO_TCP, SOCK_STREAM, TCP_NODELAY, socket
|
||||
from logging import log, basicConfig
|
||||
basicConfig(filename="clb.log", filemode="a", level=10)
|
||||
|
||||
# from socks import socksocket, SOCKS5, create_connection
|
||||
from socks import socksocket, SOCKS5, create_connection
|
||||
|
||||
from random import choice
|
||||
try:
|
||||
from python_socks import ProxyConnectionError
|
||||
from python_socks.async_.asyncio._connect import connect_tcp
|
||||
|
@ -22,6 +25,7 @@ from re import compile
|
|||
from .crypto import MapleAes, MapleIV, decrypt_transform, encrypt_transform
|
||||
from .opcodes import RecvOps, SendOps
|
||||
from .packet import PacketHandler, iPacket
|
||||
from .proxies import public, private
|
||||
|
||||
PROXY_RE = compile(r"(?=^(?:([^:]+):([^@]+)@)?([^:]+):([^$]+)$)")
|
||||
JUNK = set()
|
||||
|
@ -35,22 +39,23 @@ class ClientBase:
|
|||
self._proxy_url = proxy or ""
|
||||
match = PROXY_RE.match(self._proxy_url)
|
||||
|
||||
if match:
|
||||
if len(match.groups()) > 2:
|
||||
self._prox_user, self._prox_pass, self._prox_ip, self._prox_port = match.groups()
|
||||
self._prox_port = int(self._prox_port)
|
||||
else:
|
||||
self._proxy_ip, self._proxy_port = match.groups()
|
||||
self._proxy_port = int(self._proxy_port)
|
||||
self._proxy_user = None
|
||||
self._proxy_pass = None
|
||||
# if match:
|
||||
if len(match.groups()) > 2:
|
||||
self._prox_user, self._prox_pass, self._prox_ip, self._prox_port = match.groups()
|
||||
self._prox_port = int(self._prox_port)
|
||||
else:
|
||||
...
|
||||
self._prox_ip, self._prox_port = match.groups()
|
||||
self._prox_port = int(self._prox_port)
|
||||
self._prox_user = None
|
||||
self._prox_pass = None
|
||||
|
||||
print(f"User: {self._prox_user} | Password: {self._prox_pass} | IP: {self._prox_ip} | Port: {self._prox_port}")
|
||||
|
||||
self._tasks = []
|
||||
self._packet_handlers = []
|
||||
self._can_login: Event = Event()
|
||||
self._migrating: Event = Event()
|
||||
self._change_channel: Event = Event()
|
||||
self._migrated: Event = Event()
|
||||
self._wait_sock_connect = Event()
|
||||
self._lock: Lock = Lock()
|
||||
|
@ -73,38 +78,61 @@ class ClientBase:
|
|||
self.add_packet_handlers()
|
||||
|
||||
async def _connect_sock(self):
|
||||
# self._sock = socket(family=AF_INET, type=SOCK_STREAM, proto=IPPROTO_TCP)
|
||||
# self._sock = socksocket(family=AF_INET, type=SOCK_STREAM, proto=IPPROTO_TCP)
|
||||
# self._sock.setblocking(False)
|
||||
# self._sock.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1)
|
||||
# self._sock.setproxy(proxy_type=SOCKS5, addr=self._prox_ip, port=self._prox_port, username=self._prox_user, password=self._prox_pass)
|
||||
# await self._loop.sock_connect(self._sock, (self._host, self._conn_port))
|
||||
|
||||
self._conn = Socks5Proxy(proxy_host=self._prox_ip, proxy_port=self._prox_port, username=self._prox_user, password=self._prox_pass)
|
||||
# if hasattr(self, "_sock"):
|
||||
# self._sock.close()
|
||||
# del self._sock
|
||||
|
||||
# while not hasattr(self, "_sock"):
|
||||
if hasattr(self, "_prox_user"):
|
||||
self._conn = Socks5Proxy(proxy_host=self._prox_ip, proxy_port=self._prox_port, username=self._prox_user, password=self._prox_pass, loop=self._loop)
|
||||
# print(self._conn_port)
|
||||
else:
|
||||
self._conn = Socks5Proxy(proxy_host=self._prox_ip, proxy_port=self._prox_port, loop=self._loop)
|
||||
|
||||
try:
|
||||
self._sock = await self._conn.connect(self._host, self._conn_port)
|
||||
except ProxyConnectionError:
|
||||
print(f"{ProxyConnectionError.__name__} | Unable connect to proxy socket")
|
||||
JUNK.add(self._proxy_url)
|
||||
del self._events_task
|
||||
return
|
||||
except TimeoutError:
|
||||
print(f"{TimeoutError.__name__} | Unable to connect to proxy")
|
||||
JUNK.add(self._proxy_url)
|
||||
del self._events_task
|
||||
return
|
||||
self._sock = await self._conn.connect(self._host, self._conn_port, timeout=10.0)
|
||||
except Exception as e:
|
||||
print(f"Unhandled Exception | {e.__class__.__name__}")
|
||||
del self._events_task
|
||||
print(f"{e} eaaaaaaaaaaaaaa")
|
||||
# try:
|
||||
# self._sock = await self._conn.connect(self._host, self._conn_port)
|
||||
# except ProxyConnectionError:
|
||||
# print(f"{ProxyConnectionError.__name__} | Unable connect to proxy socket")
|
||||
# JUNK.add(self._proxy_url)
|
||||
# # del self._events_task
|
||||
# # return False
|
||||
# except TimeoutError:
|
||||
# print(f"{TimeoutError.__name__} | Unable to connect to proxy")
|
||||
# JUNK.add(self._proxy_url)
|
||||
# # del self._events_task
|
||||
# # return False
|
||||
# except Exception as e:
|
||||
# print(f"Unhandled Exception | {e.__class__.__name__}")
|
||||
# # continue
|
||||
# # del self._events_task
|
||||
|
||||
# if not self._migrating.is_set():
|
||||
# if not hasattr(self, "_sock"):
|
||||
# prox = choice(public).split(":")
|
||||
# self._prox_ip = prox[0]
|
||||
# self._prox_port = prox[1]
|
||||
# continue
|
||||
|
||||
|
||||
self._wait_sock_connect.set()
|
||||
|
||||
async def start(self):
|
||||
self._events_task = create_task(self.process_events())
|
||||
self._loop.create_task(self.process_events())
|
||||
|
||||
self._host = "51.222.56.169"
|
||||
self._conn_port = LOGIN_PORT
|
||||
|
||||
await self._sock_recv()
|
||||
self._loop.create_task(self._sock_recv())
|
||||
|
||||
async def send_packet(self, opacket, raw=False):
|
||||
async with self._lock:
|
||||
|
@ -117,10 +145,12 @@ class ClientBase:
|
|||
MapleAes.transform(opkt, self._send_iv)
|
||||
buf[4 : length + 4] = opkt
|
||||
|
||||
print(f"[{datetime.now().strftime('%d %H:%M:%S.%f')}] [SEND] : {SendOps(opacket.op_code).name} | {opacket.to_string()}")
|
||||
# print(f"[{datetime.now().strftime('%d %H:%M:%S.%f')}] [SEND] : {SendOps(opacket.op_code).name} | {opacket.to_string()}")
|
||||
|
||||
if not self._sock:
|
||||
return
|
||||
await self._wait_sock_connect.wait()
|
||||
|
||||
# if not self._sock:
|
||||
# return
|
||||
|
||||
await self._loop.sock_sendall(self._sock, buf)
|
||||
|
||||
|
@ -131,88 +161,103 @@ class ClientBase:
|
|||
|
||||
await self._action_queue.put(op_code)
|
||||
|
||||
self._tasks.append(create_task(schd()))
|
||||
self._loop.create_task(schd())
|
||||
|
||||
async def _sock_recv(self):
|
||||
await self._connect_sock()
|
||||
|
||||
while self._loop.is_running():
|
||||
await self._wait_sock_connect.wait()
|
||||
try:
|
||||
await self._wait_sock_connect.wait()
|
||||
|
||||
while self._sock:
|
||||
while hasattr(self, "_sock"):
|
||||
await sleep(1)
|
||||
self._buff.extend(bytearray((await self._loop.sock_recv(self._sock, 8192))))
|
||||
|
||||
try:
|
||||
self._buff.extend(bytearray((await self._loop.sock_recv(self._sock, 8192))))
|
||||
if self._buff == bytearray(b"\x00\x00\x00\x00\x00\x00") and len(self._buff) == 6:
|
||||
break
|
||||
|
||||
if self._buff == bytearray(b"\x00\x00\x00\x00\x00\x00"):
|
||||
self._wait_sock_connect.clear()
|
||||
self._recv_iv.reset()
|
||||
self._send_iv.reset()
|
||||
self._buff = bytearray()
|
||||
self._prev_buff = bytearray()
|
||||
break
|
||||
if not self._send_iv and self._buff:
|
||||
begin_packet = iPacket(self._buff)
|
||||
op_code = 0x0E
|
||||
# print(f"[{datetime.now().strftime('%d %H:%M:%S.%f')}] [Client Hello]")
|
||||
|
||||
if not self._send_iv and self._buff:
|
||||
begin_packet = iPacket(self._buff)
|
||||
op_code = 0x0E
|
||||
print(f"[{datetime.now().strftime('%d %H:%M:%S.%f')}] [Client Hello]")
|
||||
self._version = begin_packet.decode_short()
|
||||
self._sub_version = int(begin_packet.decode_string())
|
||||
self._send_iv(begin_packet.decode_int())
|
||||
self._recv_iv(begin_packet.decode_int())
|
||||
self._locale = begin_packet.decode_byte()
|
||||
|
||||
self._version = begin_packet.decode_short()
|
||||
self._sub_version = int(begin_packet.decode_string())
|
||||
self._send_iv(begin_packet.decode_int())
|
||||
self._recv_iv(begin_packet.decode_int())
|
||||
self._locale = begin_packet.decode_byte()
|
||||
|
||||
self._buff = bytearray()
|
||||
|
||||
if self._conn_port != LOGIN_PORT and self._migrating.is_set():
|
||||
self.schedule_action(SendOps.PLAYER_LOGGEDIN, 2.0)
|
||||
self._migrated.set()
|
||||
self._migrating.clear()
|
||||
else:
|
||||
self.schedule_action(SendOps.LOGIN_PASSWORD, 2.0)
|
||||
|
||||
else:
|
||||
while len(self._buff) > 0:
|
||||
try:
|
||||
length = MapleAes.get_length(self._buff[0:4])
|
||||
|
||||
buf = bytearray(bytearray(self._buff)[4 : length + 4])
|
||||
|
||||
buf = bytearray(MapleAes.transform(buf, self._recv_iv))
|
||||
buf = decrypt_transform(buf)
|
||||
packet = iPacket(buf)
|
||||
|
||||
await self.handle_packet(packet)
|
||||
|
||||
if len(self._buff) - (length + 4) > 0:
|
||||
self._buff = self._buff[length + 4 :]
|
||||
|
||||
else:
|
||||
self._buff = bytearray()
|
||||
|
||||
self._prev_buff = self._buff
|
||||
except:
|
||||
...
|
||||
|
||||
except ConnectionResetError as e:
|
||||
self._recv_iv.reset()
|
||||
self._send_iv.reset()
|
||||
self._buff = bytearray()
|
||||
self._prev_buff = bytearray()
|
||||
self._wait_sock_connect.clear()
|
||||
await self._connect_sock()
|
||||
|
||||
except Exception as e:
|
||||
print(f"[{datetime.now().strftime('%d %H:%M:%S.%f')}] error in sock_recv: {e}")
|
||||
if self._conn_port != LOGIN_PORT and self._migrating.is_set():
|
||||
print(f"[{datetime.now().strftime('%d %H:%M:%S.%f')}] [Client Hello] [Player Logged In]")
|
||||
log(20, msg=f"IP - {self._prox_ip} Port - {self._prox_port} LoginPort - {self._conn_port}")
|
||||
# await sleep(2.0)
|
||||
# self._loop.create_task(self.migrate_in())
|
||||
self.schedule_action(SendOps.PLAYER_LOGGEDIN, 2.0)
|
||||
self._migrated.set()
|
||||
self._migrating.clear()
|
||||
else:
|
||||
print(f"[{datetime.now().strftime('%d %H:%M:%S.%f')}] [Client Hello] [Client Begin]")
|
||||
# await sleep(2.0)
|
||||
# self._loop.create_task(self.do_login())
|
||||
self.schedule_action(SendOps.LOGIN_PASSWORD, 2.0)
|
||||
|
||||
else:
|
||||
migrate = False
|
||||
while len(self._buff) > 0:
|
||||
try:
|
||||
length = MapleAes.get_length(self._buff[0:4])
|
||||
|
||||
buf = bytearray(bytearray(self._buff)[4 : length + 4])
|
||||
|
||||
buf = bytearray(MapleAes.transform(buf, self._recv_iv))
|
||||
buf = decrypt_transform(buf)
|
||||
packet = iPacket(buf)
|
||||
|
||||
migrate = await self.handle_packet(packet)
|
||||
if migrate:
|
||||
break
|
||||
|
||||
if len(self._buff) - (length + 4) > 0:
|
||||
self._buff = self._buff[length + 4 :]
|
||||
|
||||
else:
|
||||
self._buff = bytearray()
|
||||
|
||||
self._prev_buff = self._buff
|
||||
except Exception as e:
|
||||
print(f"buffer error: {e}")
|
||||
break
|
||||
|
||||
if migrate:
|
||||
break
|
||||
|
||||
else:
|
||||
print(f"Sock got terminated")
|
||||
break
|
||||
|
||||
except Exception as e:
|
||||
print(f"Unhandled Exception line 215: {e}")
|
||||
print(f"Exception within sock_recv | {e}")
|
||||
|
||||
finally:
|
||||
# self._sock.close()
|
||||
print(f"[{datetime.now().strftime('%d %H:%M:%S.%f')}] closing socket")
|
||||
|
||||
print(self._conn_port)
|
||||
if self._conn_port != LOGIN_PORT:
|
||||
if not self._migrating.is_set() and self._change_channel.is_set():
|
||||
self._migrating.set()
|
||||
self._change_channel.clear()
|
||||
elif self._migrated.is_set() and not self._change_channel.is_set() and self._migrating.is_set():
|
||||
self._migrating.clear()
|
||||
self._migrated.clear()
|
||||
|
||||
self._recv_iv.reset()
|
||||
self._send_iv.reset()
|
||||
self._buff = bytearray()
|
||||
self._prev_buff = bytearray()
|
||||
self._wait_sock_connect.clear()
|
||||
await self._connect_sock()
|
||||
|
||||
async def handle_packet(self, packet):
|
||||
coro = None
|
||||
|
@ -222,17 +267,16 @@ class ClientBase:
|
|||
coro = pkt_hndl.callback
|
||||
break
|
||||
else:
|
||||
print(
|
||||
f"[{datetime.now().strftime('%d %H:%M:%S.%f')}] [RECV] [UNHANDLED] : {RecvOps(packet.op_code).name} | {packet.to_string()}"
|
||||
)
|
||||
return
|
||||
# print(
|
||||
# f"[{datetime.now().strftime('%d %H:%M:%S.%f')}] [RECV] [UNHANDLED] : {RecvOps(packet.op_code).name} | {packet.to_string()}"
|
||||
# )
|
||||
return False
|
||||
|
||||
if not coro:
|
||||
return
|
||||
# raise AttributeError
|
||||
return False
|
||||
|
||||
|
||||
print(f"[{datetime.now().strftime('%d %H:%M:%S.%f')}] [RECV] : {RecvOps(packet.op_code).name} | {packet.to_string()}")
|
||||
# print(f"[{datetime.now().strftime('%d %H:%M:%S.%f')}] [RECV] : {RecvOps(packet.op_code).name}")# | {packet.to_string()}")
|
||||
|
||||
if packet.op_code == RecvOps.SERVER_IP:
|
||||
self._migrating.set()
|
||||
|
@ -240,18 +284,11 @@ class ClientBase:
|
|||
packet.decode_int()
|
||||
self._conn_port = packet.decode_short()
|
||||
self._client_id = packet.decode_int()
|
||||
self._sock.close()
|
||||
del self._sock
|
||||
self._send_iv.reset()
|
||||
self._recv_iv.reset()
|
||||
self._buff = bytearray()
|
||||
self._prev_buff = bytearray()
|
||||
self._wait_sock_connect.clear()
|
||||
await self._connect_sock()
|
||||
return False
|
||||
# await self._connect_sock()
|
||||
return True
|
||||
|
||||
else:
|
||||
create_task(coro(self, packet))
|
||||
return False
|
||||
|
||||
|
||||
def add_packet_handlers(self):
|
||||
|
@ -268,3 +305,9 @@ class ClientBase:
|
|||
|
||||
async def process_events(self):
|
||||
raise NotImplementedError
|
||||
|
||||
async def migrate_in(self):
|
||||
raise NotImplementedError
|
||||
|
||||
async def do_login(self):
|
||||
raise NotImplementedError
|
File diff suppressed because it is too large
Load Diff
|
@ -3,9 +3,7 @@ from random import randint, choice
|
|||
|
||||
def big_fuckin_mac() -> str:
|
||||
hexchars = "ABCDEF0123456789"
|
||||
return f'''{', '.join([
|
||||
choice(["FF-AA-66-66-00-77", "NN-II-GG-GG-EE-RR"]) for _ in range(40)
|
||||
])}, {'-'.join([f"{choice(hexchars)}{choice(hexchars)}" for _ in range(6)])}'''
|
||||
return f'''{'-'.join([f"{choice(hexchars)}{choice(hexchars)}" for _ in range(6)])}'''
|
||||
|
||||
|
||||
class TagPoint:
|
||||
|
|
|
@ -0,0 +1,100 @@
|
|||
tinydowser:b57d4879@89.39.255.5:61336
|
||||
tinydowser:b57d4879@89.39.255.8:61336
|
||||
tinydowser:b57d4879@89.39.255.10:61336
|
||||
tinydowser:b57d4879@89.39.255.11:61336
|
||||
tinydowser:b57d4879@89.39.255.14:61336
|
||||
tinydowser:b57d4879@89.39.255.16:61336
|
||||
tinydowser:b57d4879@89.39.255.18:61336
|
||||
tinydowser:b57d4879@89.39.255.23:61336
|
||||
tinydowser:b57d4879@89.39.255.24:61336
|
||||
tinydowser:b57d4879@89.39.255.25:61336
|
||||
tinydowser:b57d4879@89.39.255.26:61336
|
||||
tinydowser:b57d4879@89.39.255.28:61336
|
||||
tinydowser:b57d4879@89.39.255.30:61336
|
||||
tinydowser:b57d4879@89.39.255.31:61336
|
||||
tinydowser:b57d4879@89.39.255.32:61336
|
||||
tinydowser:b57d4879@89.39.255.33:61336
|
||||
tinydowser:b57d4879@89.39.255.35:61336
|
||||
tinydowser:b57d4879@89.39.255.37:61336
|
||||
tinydowser:b57d4879@89.39.255.39:61336
|
||||
tinydowser:b57d4879@89.39.255.40:61336
|
||||
tinydowser:b57d4879@89.39.255.41:61336
|
||||
tinydowser:b57d4879@89.39.255.44:61336
|
||||
tinydowser:b57d4879@89.39.255.46:61336
|
||||
tinydowser:b57d4879@89.39.255.48:61336
|
||||
tinydowser:b57d4879@89.39.255.50:61336
|
||||
tinydowser:b57d4879@89.39.255.51:61336
|
||||
tinydowser:b57d4879@89.39.255.55:61336
|
||||
tinydowser:b57d4879@89.39.255.60:61336
|
||||
tinydowser:b57d4879@89.39.255.61:61336
|
||||
tinydowser:b57d4879@89.39.255.62:61336
|
||||
tinydowser:b57d4879@89.39.255.69:61336
|
||||
tinydowser:b57d4879@89.39.255.73:61336
|
||||
tinydowser:b57d4879@89.39.255.74:61336
|
||||
tinydowser:b57d4879@89.39.255.76:61336
|
||||
tinydowser:b57d4879@89.39.255.85:61336
|
||||
tinydowser:b57d4879@89.39.255.87:61336
|
||||
tinydowser:b57d4879@89.39.255.88:61336
|
||||
tinydowser:b57d4879@89.39.255.89:61336
|
||||
tinydowser:b57d4879@89.39.255.92:61336
|
||||
tinydowser:b57d4879@89.39.255.93:61336
|
||||
tinydowser:b57d4879@89.39.255.94:61336
|
||||
tinydowser:b57d4879@89.39.255.97:61336
|
||||
tinydowser:b57d4879@89.39.255.99:61336
|
||||
tinydowser:b57d4879@89.39.255.100:61336
|
||||
tinydowser:b57d4879@89.39.255.102:61336
|
||||
tinydowser:b57d4879@89.39.255.104:61336
|
||||
tinydowser:b57d4879@89.39.255.105:61336
|
||||
tinydowser:b57d4879@89.39.255.108:61336
|
||||
tinydowser:b57d4879@89.39.255.111:61336
|
||||
tinydowser:b57d4879@89.39.255.114:61336
|
||||
tinydowser:b57d4879@89.39.255.115:61336
|
||||
tinydowser:b57d4879@89.39.255.116:61336
|
||||
tinydowser:b57d4879@89.39.255.118:61336
|
||||
tinydowser:b57d4879@89.39.255.119:61336
|
||||
tinydowser:b57d4879@89.39.255.123:61336
|
||||
tinydowser:b57d4879@89.39.255.125:61336
|
||||
tinydowser:b57d4879@89.39.255.128:61336
|
||||
tinydowser:b57d4879@89.39.255.132:61336
|
||||
tinydowser:b57d4879@89.39.255.135:61336
|
||||
tinydowser:b57d4879@89.39.255.141:61336
|
||||
tinydowser:b57d4879@89.39.255.143:61336
|
||||
tinydowser:b57d4879@89.39.255.146:61336
|
||||
tinydowser:b57d4879@89.39.255.147:61336
|
||||
tinydowser:b57d4879@89.39.255.149:61336
|
||||
tinydowser:b57d4879@89.39.255.153:61336
|
||||
tinydowser:b57d4879@89.39.255.157:61336
|
||||
tinydowser:b57d4879@89.39.255.159:61336
|
||||
tinydowser:b57d4879@89.39.255.161:61336
|
||||
tinydowser:b57d4879@89.39.255.166:61336
|
||||
tinydowser:b57d4879@89.39.255.168:61336
|
||||
tinydowser:b57d4879@89.39.255.171:61336
|
||||
tinydowser:b57d4879@89.39.255.172:61336
|
||||
tinydowser:b57d4879@89.39.255.174:61336
|
||||
tinydowser:b57d4879@89.39.255.179:61336
|
||||
tinydowser:b57d4879@89.39.255.180:61336
|
||||
tinydowser:b57d4879@89.39.255.183:61336
|
||||
tinydowser:b57d4879@89.39.255.184:61336
|
||||
tinydowser:b57d4879@89.39.255.185:61336
|
||||
tinydowser:b57d4879@89.39.255.186:61336
|
||||
tinydowser:b57d4879@89.39.255.189:61336
|
||||
tinydowser:b57d4879@89.39.255.190:61336
|
||||
tinydowser:b57d4879@89.39.255.196:61336
|
||||
tinydowser:b57d4879@89.39.255.197:61336
|
||||
tinydowser:b57d4879@89.39.255.200:61336
|
||||
tinydowser:b57d4879@89.39.255.203:61336
|
||||
tinydowser:b57d4879@89.39.255.207:61336
|
||||
tinydowser:b57d4879@89.39.255.210:61336
|
||||
tinydowser:b57d4879@89.39.255.215:61336
|
||||
tinydowser:b57d4879@89.39.255.216:61336
|
||||
tinydowser:b57d4879@89.39.255.220:61336
|
||||
tinydowser:b57d4879@89.39.255.231:61336
|
||||
tinydowser:b57d4879@89.39.255.237:61336
|
||||
tinydowser:b57d4879@89.39.255.240:61336
|
||||
tinydowser:b57d4879@89.39.255.241:61336
|
||||
tinydowser:b57d4879@89.39.255.243:61336
|
||||
tinydowser:b57d4879@89.39.255.246:61336
|
||||
tinydowser:b57d4879@89.39.255.247:61336
|
||||
tinydowser:b57d4879@89.39.255.248:61336
|
||||
tinydowser:b57d4879@89.39.255.249:61336
|
||||
tinydowser:b57d4879@89.39.255.252:61336
|
|
@ -0,0 +1,38 @@
|
|||
[build-system]
|
||||
requires = ["setuptools>=60.5", "wheel"]
|
||||
|
||||
[tool.black]
|
||||
exclude = 'generated'
|
||||
target-version = ["py39", "py310"]
|
||||
|
||||
[tool.yapf]
|
||||
|
||||
[tool.isort]
|
||||
# https://github.com/PyCQA/isort/wiki/isort-Settings
|
||||
profile = "black"
|
||||
# will group `import x` and `from x import` of the same module.
|
||||
combine_as_imports = true
|
||||
force_sort_within_sections = true
|
||||
|
||||
[project.optional-dependencies]
|
||||
linux = [
|
||||
"uvloop",
|
||||
]
|
||||
|
||||
[tool.yapf]
|
||||
coalesce_brackets = true
|
||||
decent_closing_brackets = true
|
||||
each_dict_entry_on_separate_line = false
|
||||
split_before_dot = true
|
||||
split_before_first_argument = true
|
||||
split_before_logical_operator = true
|
||||
# based_on_style = "google"
|
||||
based_on_style = "yapf"
|
||||
column_limit = 83
|
||||
indent_width = 4
|
||||
spaces_before_comment = 2
|
||||
|
||||
[tool.flake8]
|
||||
ignore = "E203,E402,E501,E722,W503,MD041,F811"
|
||||
max-line-length = 80
|
||||
select = "C,E,F,W,B,B950,B9,ISC"
|
|
@ -1,5 +1,9 @@
|
|||
pycryptodome==3.14.1
|
||||
attrs==21.4.0
|
||||
uvloop>=0.16.0
|
||||
async_timeout>=4.0.2
|
||||
python_socks>=2.0.3
|
||||
pycryptodome >= 3.14.1
|
||||
attrs == 21.4.0
|
||||
uvloop [uvloop] >= 0.16.0; python_version >= "3.10"
|
||||
async-timeout >= 4.0.2
|
||||
python-socks >= 2.0.3
|
||||
|
||||
color
|
||||
Pygments [color]
|
||||
rich [color]
|
||||
|
|
40
run.py
40
run.py
|
@ -2,7 +2,7 @@ from asyncio import create_task, get_event_loop, new_event_loop, run, sleep
|
|||
from json import loads
|
||||
from random import choice
|
||||
|
||||
import clb
|
||||
from clb import public, private, Client
|
||||
|
||||
try:
|
||||
import uvloop
|
||||
|
@ -14,35 +14,43 @@ from os.path import dirname
|
|||
|
||||
dir_path = dirname(__file__)
|
||||
|
||||
NAMES = []
|
||||
ACCOUNTS = []
|
||||
TASKS = []
|
||||
PROXIES = []
|
||||
|
||||
|
||||
with open(f"{dir_path}/.names", "r") as f:
|
||||
clb.NAMES.extend([l.rstrip("\n") for l in f.readlines()])
|
||||
with open(f".names", "r") as f:
|
||||
NAMES.extend([l.rstrip("\n") for l in f.readlines()])
|
||||
|
||||
with open(f"{dir_path}/.words", "r") as f:
|
||||
clb.NAMES.extend([l.rstrip("\n") for l in f.readlines()])
|
||||
with open(f".words", "r") as f:
|
||||
NAMES.extend([l.rstrip("\n") for l in f.readlines()])
|
||||
|
||||
with open(f"{dir_path}/.proxies", "r") as f:
|
||||
with open(f"proxies.txt", "r") as f:
|
||||
for line in f.readlines():
|
||||
PROXIES.append(line.rstrip("\n"))
|
||||
|
||||
with open(f"{dir_path}/.accounts_2", "r") as f:
|
||||
# with open(f"{dir_path}/.proxies", "r") as f:
|
||||
# for line in f.readlines():
|
||||
# PROXIES.append(line.rstrip("\n"))
|
||||
|
||||
with open(f".accounts2", "r") as f:
|
||||
ACCOUNTS = loads(f.read())
|
||||
|
||||
print(len(clb.NAMES), len(PROXIES), len(ACCOUNTS))
|
||||
print(f"{dir_path}/.accounts_2")
|
||||
|
||||
print(len(NAMES), len(public), len(ACCOUNTS))
|
||||
|
||||
loop = new_event_loop()
|
||||
|
||||
async def create_clients():
|
||||
loop = get_event_loop()
|
||||
loop.set_debug(True)
|
||||
|
||||
for account in ACCOUNTS[65:67]:
|
||||
client = clb.Client(
|
||||
for account in ACCOUNTS[200:300]:
|
||||
client = Client(
|
||||
loop=loop,
|
||||
# names=NAMES,
|
||||
names=NAMES,
|
||||
username=account["username"],
|
||||
password=account["password"],
|
||||
proxy=choice(PROXIES)
|
||||
|
@ -53,10 +61,10 @@ async def create_clients():
|
|||
await sleep(60.0)
|
||||
|
||||
|
||||
|
||||
# run(create_clients())
|
||||
loop.run_until_complete(create_clients())
|
||||
# loop.run_forever()
|
||||
loop.run_forever()
|
||||
|
||||
with open("{dir_path}/.junk", "w+") as f:
|
||||
for l in clb.JUNK:
|
||||
f.write(f"{l}""\n")
|
||||
# with open("{dir_path}/.junk", "w+") as f:
|
||||
# for l in clb.JUNK:
|
||||
# f.write(f"{l}""\n")
|
Loading…
Reference in New Issue