Files
tg_code/改2fa.py

98 lines
2.9 KiB
Python
Raw Normal View History

2025-11-12 12:50:39 +08:00
import asyncio
import threading
import time
from loguru import logger
from opentele.api import API
from telethon.errors import SessionPasswordNeededError, PhoneCodeInvalidError, RPCError, PhoneNumberBannedError, \
PasswordHashInvalidError
from telethon import TelegramClient
from models.tg_phone_devices import TgPhoneDevices
async def create_telegram_client(server_type):
"""
创建并配置 Telegram 客户端
"""
# gw.dataimpulse.com:824:14fa7e7aa8280a914611__cr.gb:f1c1501b6b535c19
# 定义代理
PROXY_CONFIG = {
'proxy_type': 'http', # 或 'socks4',具体看你的代理类型
'addr': '192.168.50.220', # 代理服务器地址
'port': 10809, # 代理服务器端口
'username': '', # 如果有用户名,填写
'password': '' # 如果有密码,填写
}
client = TelegramClient(
fr"C:\sessions\{server_type.phone}",
api_id=server_type.api_id,
api_hash=server_type.api_hash,
device_model=server_type.device_model,
system_version=server_type.system_version,
app_version=server_type.app_version,
system_lang_code=server_type.system_lang_code,
lang_code=server_type.lang_code,
proxy=PROXY_CONFIG
)
return client
async def main(tg_info):
# 创建 Telegram 客户端
logger.info(f"账号 {tg_info.phone},开始修改》》》")
client = await create_telegram_client(tg_info)
try:
await client.connect()
if await client.is_user_authorized():
current_password = tg_info.code
new_password = "Qasdasd123.0"
try:
# time.sleep(5)
await client.edit_2fa(current_password=current_password, new_password=new_password)
logger.info(f"账号 {tg_info.phone},修改成功!!!")
tg_info.to_code = new_password
tg_info.save(only=[TgPhoneDevices.to_code])
except PasswordHashInvalidError:
logger.error(f"账号 {tg_info.phone}操作失败原始2FA不对")
else:
logger.error(f"账号 {tg_info.phone},当前号码已死!!!")
except PhoneNumberBannedError:
logger.error(f"账号 {tg_info.phone},账号以死!!!")
tg_info.is_valid_session = -1
tg_info.save(only=[TgPhoneDevices.is_valid_session])
finally:
await client.disconnect()
def main1(tg_info):
asyncio.run(main(tg_info))
if __name__ == '__main__':
for tg_info in TgPhoneDevices().select().where(
TgPhoneDevices.to_code.is_null(),
TgPhoneDevices.is_valid_session == 1,
# TgPhoneDevices.server_ip.is_null(),
TgPhoneDevices.create_time > '2025-06-06 12:04:19',
# TgPhoneDevices.create_time < '2025-02-28 23:00:00',
):
# asyncio.run(main(tg_info))
threading.Thread(target=main1, args=(tg_info,)).start()
time.sleep(1)