Таймкоды для вас: 00:00 - Интро 00:15 - Описание проекта 01:19 - Пишем код для генерации как простых так и сложных паролей 02:44 - Код для выбора длины пароля 03:36 - Код для выбора сложности пароля 05:46 - Пишем цикл подбора пароля 07:54 - Установка необходимой библиотеки 08:56 - Необходимые настройки для открытия Excel файла 12:48 - Запуск скрипта
Редко когда пишу комментарии к видео или ставлю лайк т.к. раздражают эти прелюдии. Но тут такой случай, когда автор имеет восхитительную дикцию, шикарно излагает мысль, приятного глазу оформляет канал без кричащих надписей как у инфо-цыган, укладывается 5 минут видео когда можно уложить в 5 минут и в 20, когда нужно в 20. Большое уважение автору! Браво!
Ого. Вот это контент. На канале и есть что посмотреть и чему научиться. Очень круто. Делайте дальше. Я сам пайтон не так давно начал учить и понял, что это того стоит
Python Today, вы лучшие в объяснение, давно хотел сделать подобную программку, но не знал как сделать данные подбор, в ютубе роликов не нашёл и тут наткнулся на вас, спасиьо огромное!
Интересный материал, прям захотелось повторить)) Из идей по поводу скорости: когда мы пытаемся разлочить файлик паролем мы обращаемся к external файлу, а значит это I/O bound -> если код будет асинхронный или мультипоточный (не мультипроцессорный), работать все будет гораздо быстрее. Тут имхо приоритет за async/await А из мелкого, вместо counter лучше использовать enumerate))
@@PythonToday Я бы еще обратил внимание на проверку слов указанной длины (например из словаря Windows. Если пароль будет состоять из 4-8 символов, а паролем окажется "Password" =) Потребуется намного меньше времени, чтобы перебрать слова длинной от 4 до 8) и введение символов, которые пользователь помнит, т.к. это тоже облегчит поиск (например знание того, что в слове хотя бы одна буква "a" даст значительный выигрыш) Надеюсь, что Вы заметите идею)
Здорово что есть готовые решения. Но чувство когда сделал сам значительно ценнее, его не сравнить ни с чем. Даже когда пишешь говн@код, радуешься как ребенок если он работает как ожидалось))) А тут, оказывается, можно вполне реальные задачи решать, даже на моем уровне.
Следующие возможные шаги улучшения: 1) распараллелить подбор 2) использовать jit например numba, половина скорости улетает в интерпретацию 3) и наверное не идти по порядку символов, а брать в разнобой, но при этом так, чтобы не повторяться
Редко оставляю лайки, а коментарии пишу на 1 из миллиона роликов, но чёрт возьми ты лучший этот скрипт на хак локальных забытых паролей просто великолепен и бесконечно полезен. Не думал написать что-нибудь по сложнее, например, как этот скрипт улучшить что бы он обходил банальную защиту в кол-во неверно введенных паролей и тп
Большое спасибо за фидбэк, но это лишь проба написать брутфорс средствами python самому. Для решения таким проблем есть специальные, гораздо более эффективные и скоростные инструменты)
Моё мнение по поводу всего Видео хорошее, я узнал про 2 новые библиотеки, узнал про работу с API Winsows через Python. Что я предлагаю 1. Убрать все printы, ибо они ну кпц как замедляют работу программы. Если надо знать, что происходит, лучше использовать логирование в .txt файл, оно будет куда быстрее (модуль logging) 2. Я всё ещё до конца не разобрался с асинхронными функциями, но, если я правильно понимаю, то конкретно ввод пароля можно запихнуть в асинхронную функцию, и оно может станет чуть быстрее 3. Ввод данных пользователем можно запихнуть в один try-exept-finally, но это так, просто предложение
Когда в вин открывает Эксель файлик - она создаёт процесс, который нужно в конце заканчивать. Выполните программу несколько раз и каждый раз смотрите диспетчер задач в процессах.
применение такого сомнительное, но для получения нового опыта самое то. я своим пользователям сделал просто удаление пароля (на сишарпе). пусть сами вводят новый.
Способы оптимизации, которые мне с ходу пришли в голову: 1. Сделать многопоточность - самое очевидное и пояснять ничего не надо 2. Вместо вывода в консоль каждой попытки перебора пароля сделать что-то другое. Например, графический интерфейс со статус баром. Вывод строк в консоль оооооочень много времени отжирает в вычислениях, проверено на чистом си
Поставил пароль 492 и с выводом в командную строку у меня ломает пароль за 1:45, без вывода за 1:37 так что да работает быстрее, но незначительно. Есть какие-либо еще идеи? Может кто поправил код с реализацией многопоточности? Если так то киньте пожалуйста Git
Коммент на 13:55 : вероятнее всего при повторном запуске после Успешного входа в файл - он просто остается висеть в системе в незакрытом процессе. и при повторном запуске скрипт считывает успешное открытие на первой итерации и вываливается с поздравлением.
Ну да, простой способ есть ) excel - это zip архив, переименовываем, открываем, редактируя 1 файл удаляем пароль, архивируем. Привет Майкрософт и псевдобезопасность )
Если хотите добавить многопроцессорность, то, я думаю, будет лучше не разбить множество всевозможных вариантов пароля на куски и дать по куску каждому процессу, а сделать так чтобы этот список вариантов был единым и хранился в главном родительском процессе, а все остальные процессы брали бы оттуда пароли. Это можно реализовать с помощью класса Queue модуля multiprocessing. Такой подход лучше потому, что все потоки распределят нагрузку равномерно и гарантированно закончат работать в одно и то же время. Об этих вещах хорошо рассказано в четвёртой лекции Тимофея Хирьянова из курса анализа данных на python
Спасибо большое, гляну обязательно, не силен в процессах. Но думал нужно копировать файл и отдавать каждому процессу, чтобы каждый процесс открывал и закрывал свой файл. Не пробовал пока, но думаю могут возникнуть проблемы если каждый процесс будет долбиться в один файл. И как быть с тем, если не разбивать лист паролей для каждого процесса, каждый из процессов будет работать по одному и тому же списку ведь и будет выполнять идентичную работу и это не приведет к ускорению перебора. Или я не так понял?
@@PythonToday так я же писал, что это делается с помощью Queue из модуля multiprocessing - это специальный канал связи между процессами, который выдаётся операционной системой - список, из которого можно брать и в который можно класть всё что угодно асинхронно из разных процессов, и не возникнет никаких проблем типа "race condition", так как эта Queue сделана специально для асинхронного обмена информацией между процессами.
Или программа упадет с OutOfMemoryError (посчитай количество возможных паролей длины 10 из цифр и латиницы) К тому же синхронизация коллекции тоже использует ресурсы, не говоря про невозможность кэширования thread safe коллекции В таком случае правильнее передать в поток номер начала и конца, внутри потока его один раз декодировать в нужные индексы циклов. Количество нужной памяти O(1), а не O(C^N), а также никакой конкуренции за ресурсы и накладных ресурсов на синхронизацию (разве что чекать одну атомарную переменную флаг раз в Х итераций)
Следующий шаг - import multiprocessing . Размножить файл до нужного уровня параллелизма. И затем скормить каждому процессу свой кусок комбинаций. Многопоточность (import threading) не подойдёт из-за особенностей интерпретатора питона (он не позволяет по умолчанию выполняться многопоточно). Если предполагается посадить бота на сервер, то выгодно заранее сгенерировать данные и потом "быстренько" плодить процессы и параллелить перебор.
Буду пробовать, но количество процессов напрямую ведь зависит от процессора ПК? Я к тому, что на бюджетном хостинге, будет беда. Или не прав? Если есть опыт поделись пожалуйста, либо примером кода.
@@PythonToday Да, если на сервере мало оперативки, то будет не очень. Можно руками подобрать оптимальное количество процессов. Количество ядер на самом кристалле пк влияет на то, сколько по-настоящему одновременных задач может исполняться. Если ядро одно, то, возможно, и пытаться смысла нет. Скорость только лишь уменьшится, из-за затрат на создание процессов и переключение между ними.
@@PythonToday будет продолжения на шаблоны и улучшения кода если будет то он будет скрыт тут или в телеграмме если не вопрос или вообще это единственное произведения?
На сайте после нескольких запросов тебя забанят! Поэтому либо нужна армия ботов, которая по очереди будет добиться в один и тот же аккаунт, так же не забываем про капчу которую ещё надо будет как то решать. Брутфорс сайтов гораздо сложнее.
Hashcat one love Способ рабочий, но очень медленный и не оптимизированный) Если уж и самому делать, то нужно хотя бы постараться максимально оптимизировать код, не вызывать каждый раз функции winapi и т. д.
@@PythonToday Я особо в этом не разбираюсь, просто из совсем небольшого опыта, говорю. Например когда проходишь в цикле по фотографии, и каждый пиксель обрабатываешь, а затем ещё выводишь информацию, то обработка фотографии занимает раз в 100 больше времени, если не в тысячу, чем без вывода информации. Также я часто встречал это когда писал другие большие циклы. Кстати, есть ещё одна идея.... это попробовать использовать мультипоточность. Но тут я совсем не разбираюсь, но думаю что это должно ускорить процесс перебора.
Да, вывод тормозит процесс перебора. Так как на каждый вывод затрачивается время, а вывод это массив который надо перебрать . По сути любой текст это массив который перебирается в цикле и выводит сумму всех символов
можно было сильно проще сделать Достаточно вытащить хэш пароля из эксель файла ( в интернете есть готовые решения как это сделать за несколько секунд) А дальше расшифровать хэш))) Софт под расшифровку хэша есть всякий разный, но лучше всего использовать тот, где есть поддержка видеокарты. Там скорость перебора в некоторых типах шифрования достигает до миллионов в секунду))
Мне таки любопытно - ты это сделал просто из интереса? На подбор паролей есть специализированные софтины. К примеру JohnTheRipper - многопоточен, написан на сях, дико быстр и понимает кучу форматов и вариантов перебора, от хитрых словарей-гибридов до параметризированного брутфорса. Но таки да - тут оч прикольно было бы разделить это всё на потоки. В основном треде генератор паролей, в дочерних потоках - их проверка, например (я б так сделал). Было б быстрее. =)
Есть несколько способов, но самый простой, чтоб не сильно париться с кодом (и если бешеная скорость не нужна) - используя selenium найти видео по хештегу, вытащить все нужные данные регулярками, запихнуть в базу.... работать будет.. но со скромной скоростью... если запариться немножко и убрать selenium, то будет быстрее
Привет. Может я что то упускаю , но мне кажется что для длины пароля достаточна начальная длина и если длина пароля во вермя брута увеличивается, то влюбом случаи , при совпадении , брут сработает . Не значю как повлияет на скорость , но мы в коде сокращаем человеческий фактор на 50 процентов , вдруг человек забывший пароль точно не помнит какая конечная длина пароля, и если он ограничит этот параметр придется перебирать занового с увеличиным порогом , а так в любом случаи брут будет брутить пока не нарвется на совпадениее! Поправте если не прав.
Вывод чего-либо в консоль замедляет перебор. Не стоит выводить информацию на каждом шаге. Инициализация объекта Excel.Application в теле цикла замедляет работу. Возможно, эту инициализацию можно провести один раз перед всеми циклами. Получение информации о неверном пароле через исключение замедляет работу. Стоит поискать возможность иначе узнавать что пароль неверен. Стоит поискать возможность открывать документ не из файловой системы, а из памяти. На крайний случай использовать ramdisk. Возможно, попытка открытия документа блокирует файл. Тогда стоит создавать нужное количество копий документа для параллельной обработки или для уменьшения паузы. Стоит поискать альтернативную библиотеку для работы с файлами Excel. Судя по всему, эта использует приложение Excel, возможно даже создаёт его экземпляр. Это медленно и мы натыкаемся на механизмы безопасности Ecxel.
Привет, не знаю увидишь ты или нет, но тем не менее. Посмотрел некоторые из твоих роликов и обратил внимание на то что ты очень любишь много консольного вывода. Это может быть проблемой с производительностью для твоих скриптов. Чтобы наглядно увидеть как это влияет, просто сделай цикл, от нуля до например ста тысяч. И в одной версии сделай вывод в каждой итерации, а в другой версии - вывод только последнего числа. И замерь время. Увидишь что оно различается на порядки. Так же обрати внимание что скорость вывода - не постоянна. В различных эмуляторах терминала она может быть разной.
Только начал изучать python, но с профессиональным софтом по бруту паролей к документам неоднократно сталкивался. В какой-то программе реализован перебор на GPU, что сильно ускоряет процесс. В идеале, наверное, распараллелить задачу именно на графический процессор (ядер сильно больше, память шустрее, соответственно и операций за такт намного больше, почему они и стали такими эффективными в майнинге), но я, к сожалению, понятия не имею, как это сделать :)
> threading будет быстрее Не будет. threading в Python использует псевдопотоки (вместо нативных на процессоре). Соответственно для числомолотилок (перебор пароля подходит под такую классификацию) не подойдет threading из Python.
Я тебе больше скажу - можно написать макрос прямо в экселе, который подберет пароль примерно за полсекунды (там очень кривой хэш). Лично мне кажется уморительным, что можно взломать пароль используя только эксель) А пароль напрямую кстати достать не получиться, там его хэш записан, а не сам пароль... но можно просто удалить строчку с sheet protection и все будет работать
У нас тут мануал по написанию брутфорса на питоне. Да есть варианты выполнить именно эту задачу быстрее. А что вы будете делать к примеру с забытым паролем от файла данных оутлука? Ваши варианты тут не сработают. А этот более чем.
я как тот, кто изучает ещё основы и прохожу в данный момент соглашения, а точнее защищённые и приватные аттрибуты - просто выпал от того, что творит этот джедай кода..
Интересно. Не совсем понял, что в Kali нет своего инструмента для установления пароля? По-моему, он даже в файловых менеджерах, типа Total Commander есть (открыть пароль под звездочками)... Или я чего не понимаю? Обязательно свой скрипт писать?
@@evalinor Это вы не несите хуйню. Давайте сравним перфоманс на примере бинарных деревьев C++ и питона. Написать подобный код на C++ довольно таки мало времени занимает. Async это не решение проблемы. Тем более где он написал что-то про C++
ещё лучше писать на шарпе с помощью класса Parallel, он автоматически распределяет нагрузку по потокам, так что даже если один поток будет делать легкую задачу и будет недогружен, шарп ему добавит работёнки
Привет,вопрос не по теме. Интересует информация по курсам Python для не граждан России,очень много гомнокурсов на просторах интернета и хотелось бы их обойти стороной,может кто подскажет стоющий внимания курс?спасибо. П.с онлайн курс конечно же..
Привет, только пришел с твоего видео о фрилансе)))Научился парсить сайты по твоим видео) Спасибо тебе огромное:) И ещё хотел спросить,могу ли я уже выполнять хоть маленькие заказы только со знанием парсинга сайтов?
в password_lenght вы используете list comprehension, но можно ведь использовать generator expressions для ускорения программы чтобы не читать всю все значения в строке а только нужные на данный момент. Если нельзя использовать generator expressions можете объяснить почему?
у меня вопрос вот к примеру есть у меня слово привет и есть алфавит где к каждой букве приставлен спец символ как мне заменять буквы на определёные символы?
Если опустить все более адекватные способы извлечения пароля и попробовать довести до ума этот, то таки имею что сказать. 1) проверке пароля передаётся пусть, а значит файл читается заново с носителя => чем больше размер файла, тем всё будет печальнее. Решение - попробовать поместить файл в оперативку и работать с ним там, будет это объект внутри приложения или какой-то RAM-диск - по идее не принципиально. 2) Как уже было верно предложено, можно использовать многопоточность, но только внутри функции, так же можно попробовать посмотреть в сторону кластерности - Torch/Celery, тут уже комбайн может получиться знатный.
Парсить данные последовательно через try/except не очень технологично, лучше через argparse. или сделать код в виде нормального модуля, чтобы пользователь сам импортировал этот код через питон и запускал main. и лучше не выводить попытки через print, а сделать шкалу загрузки с помощью tdqm и обновлять ее, скажем, раз в 500 попыток, чтобы терминал не засорять, но пользователь видел, сколько осталось времени (это оч просто, tqdm сам все вычисляет, исходя из заданного кол-ва итераций).
Ролик полезный, но писать брут на питоне - это шутка дьявола, если, конечно, это не несколько забытых символов, что вполне, целесообразно, т.к. на питоне код будет написан за 10-15 минут, и начнет работать)
Код выводит ошибку Подскажите чего не хватает Traceback (most recent call last): File "C:/Users/Vetal/PycharmProjects/pythonProject1/zdfg.py", line 73, in main() File "C:/Users/Vetal/PycharmProjects/pythonProject1/zdfg.py", line 69, in main print(brute_excel_doc()) File "C:/Users/Vetal/PycharmProjects/pythonProject1/zdfg.py", line 41, in brute_excel_doc for pass_length in range(password_length[0], password_length[1] + 1): IndexError: list index out of range
Доброго времени суток Насчет подбора - не понял, зачем так. Мой вариант генерации: import random, re, time from string import digits, punctuation, ascii_letters symbols = [f'{digits}', f'{ascii_letters}', f'{digits}{ascii_letters}', f'{digits}{ascii_letters}{punctuation}']; pot_symbols = '' chosen = input('...'); rand = 0 pass_lenth = input('...') pass_lenth = [ int(item) for item in pass_lenth.split("-")] if re.match('^[1-4]$', chosen): pot_symbols = symbols[int(chosen)-1] st = time.time() for i in range(20000): print(f'{rand} - ', end=''); print(''.join(random.choice(pot_symbols) for _ in range(random.randint(pass_lenth[0], pass_lenth[1])))); rand += 1 fin = time.time(); print(f"Created {rand} in {fin-st}.") Как-то так.
Строка остается на тех же 023 поэтому при повторном запуске у тебя и вылетает сразу результат! P.s. необходимо в наборе символов после первого перебора что бы возвращал строку на начало!
@@PythonToday Ну если пере-открыть файл то соответственно курсор будет с начала строки, или же его можно перевести в начало строки. P.s это мои догадки )) я только учусь ))
Здравствуйте. На счет ускорения брутфорса. А как на счет того чтобы создать несколько копий данного ексель файла. И пробовать одновременно часть паролей для одного файла, другую для второго файла и тд. А потом в конце удалить копии ексель файла.
Таймкоды для вас:
00:00 - Интро
00:15 - Описание проекта
01:19 - Пишем код для генерации как простых так и сложных паролей
02:44 - Код для выбора длины пароля
03:36 - Код для выбора сложности пароля
05:46 - Пишем цикл подбора пароля
07:54 - Установка необходимой библиотеки
08:56 - Необходимые настройки для открытия Excel файла
12:48 - Запуск скрипта
А как возможно автоматизировать выбор длины пароля?
Возможно ли вообще?
Редко когда пишу комментарии к видео или ставлю лайк т.к. раздражают эти прелюдии. Но тут такой случай, когда автор имеет восхитительную дикцию, шикарно излагает мысль, приятного глазу оформляет канал без кричащих надписей как у инфо-цыган, укладывается 5 минут видео когда можно уложить в 5 минут и в 20, когда нужно в 20. Большое уважение автору! Браво!
Большое спасибо за фидбэк и поддержку!
Ого. Вот это контент. На канале и есть что посмотреть и чему научиться. Очень круто. Делайте дальше. Я сам пайтон не так давно начал учить и понял, что это того стоит
Благодарю 💪 Успехов в изучении!
Python Today, вы лучшие в объяснение, давно хотел сделать подобную программку, но не знал как сделать данные подбор, в ютубе роликов не нашёл и тут наткнулся на вас, спасиьо огромное!
Очень полезно видеть всё от начала работы и до конца с объяснениями! Лике и субскрибе :}
Спасибо за фидбэк!
Супер!
Жду с нетерпением Tensorflow и все что связано с ИИ
Интересный материал, прям захотелось повторить))
Из идей по поводу скорости: когда мы пытаемся разлочить файлик паролем мы обращаемся к external файлу, а значит это I/O bound -> если код будет асинхронный или мультипоточный (не мультипроцессорный), работать все будет гораздо быстрее. Тут имхо приоритет за async/await
А из мелкого, вместо counter лучше использовать enumerate))
Спасибо за фидбэк. Я пока только вникаю в async и процессы.
@@PythonToday Я бы еще обратил внимание на проверку слов указанной длины (например из словаря Windows. Если пароль будет состоять из 4-8 символов, а паролем окажется "Password" =) Потребуется намного меньше времени, чтобы перебрать слова длинной от 4 до 8) и введение символов, которые пользователь помнит, т.к. это тоже облегчит поиск (например знание того, что в слове хотя бы одна буква "a" даст значительный выигрыш)
Надеюсь, что Вы заметите идею)
Здорово, Python очень полезный инструмент. Реально заинтересовал. Раньше часто пароли в ексель файлах забывал.
Для этих задач есть гораздо более быстрые программы) Было интересно опробовать самому. Но скорость очень медленная.
Здорово что есть готовые решения. Но чувство когда сделал сам значительно ценнее, его не сравнить ни с чем.
Даже когда пишешь говн@код, радуешься как ребенок если он работает как ожидалось)))
А тут, оказывается, можно вполне реальные задачи решать, даже на моем уровне.
Полностью согласен, главное практика) Хоть и много говн0кода)
Спасибо,в конце ролика наглядно осознаешь про то что очень важно создавать сложные пароли)
Это точно, спасибо за фидбэк!
Следующие возможные шаги улучшения:
1) распараллелить подбор
2) использовать jit например numba, половина скорости улетает в интерпретацию
3) и наверное не идти по порядку символов, а брать в разнобой, но при этом так, чтобы не повторяться
Как сделать 3 пункт?
@@spamcolector можно попробовать перемешать список possible_symbols перед тем, как генерировать пароль
@@spamcolector возможно - бинарный поиск?
а нельзя допустим скомпилировать какую то часть и не высчитывать её а как то использовать?
сюжеты не привязанные к конкретной операционной системе гораздо интереснее :-)
Редко оставляю лайки, а коментарии пишу на 1 из миллиона роликов, но чёрт возьми ты лучший этот скрипт на хак локальных забытых паролей просто великолепен и бесконечно полезен. Не думал написать что-нибудь по сложнее, например, как этот скрипт улучшить что бы он обходил банальную защиту в кол-во неверно введенных паролей и тп
Большое спасибо за фидбэк, но это лишь проба написать брутфорс средствами python самому. Для решения таким проблем есть специальные, гораздо более эффективные и скоростные инструменты)
Спасибо за видео! Интересные проекты делаешь.
Благодарю за фидбэк 👍
Моё мнение по поводу всего
Видео хорошее, я узнал про 2 новые библиотеки, узнал про работу с API Winsows через Python.
Что я предлагаю
1. Убрать все printы, ибо они ну кпц как замедляют работу программы. Если надо знать, что происходит, лучше использовать логирование в .txt файл, оно будет куда быстрее (модуль logging)
2. Я всё ещё до конца не разобрался с асинхронными функциями, но, если я правильно понимаю, то конкретно ввод пароля можно запихнуть в асинхронную функцию, и оно может станет чуть быстрее
3. Ввод данных пользователем можно запихнуть в один try-exept-finally, но это так, просто предложение
Интересный канал, интересные темы, интересная подача
Большое спасибо!
За тобой уже выехали!
Когда в вин открывает Эксель файлик - она создаёт процесс, который нужно в конце заканчивать.
Выполните программу несколько раз и каждый раз смотрите диспетчер задач в процессах.
Да, уже понял. Благодарю за пояснение 💪
Можно фрагмент кода которий убивает процес?
Очень крутая подача и последовательность.
Благодарю за фидбэк!
Смотрю Ваши ролики по питону как сериал😄
Благодарю)
Отличный контент. Больше бы видео по взломам.
применение такого сомнительное, но для получения нового опыта самое то.
я своим пользователям сделал просто удаление пароля (на сишарпе). пусть сами вводят новый.
Способы оптимизации, которые мне с ходу пришли в голову:
1. Сделать многопоточность - самое очевидное и пояснять ничего не надо
2. Вместо вывода в консоль каждой попытки перебора пароля сделать что-то другое. Например, графический интерфейс со статус баром. Вывод строк в консоль оооооочень много времени отжирает в вычислениях, проверено на чистом си
второе актуально в олимпиадах по информатике, один раз задача не зашла из-за endl вместо '
'
@@quadroninja2708 почему только олимпиады, если это практическое наблюдение? Скорость работы очень хорошо бустится без лишних выводов в консоль
@@fromtheshadow8280 не, просто наблюдение. Иногда вывести тоже нужно правильно
Поставил пароль 492 и с выводом в командную строку у меня ломает пароль за 1:45, без вывода за 1:37 так что да работает быстрее, но незначительно. Есть какие-либо еще идеи? Может кто поправил код с реализацией многопоточности? Если так то киньте пожалуйста Git
@@oreh350 рост времени от увеличения длины пароля будет расти по экспоненте, так что если попробовать на 7 знаках в пароле, то получится интереснее
Чувак! Ты просто какой-то безумец! Спасибо тебе огромное за проделанную работу! Ответь пожалуйста в ТГ, по поводу уроков.
Спасибо) Ответил
проблемму с кешированием, можно решить просто удалением файлов *.pyc
а про многопоточность можно попробовать:
def batch_iterator(items_iter, batch_size=5000):
items_list = filter(bool, items_iter)
count = len(items_list)
for i in range(int(math.ceil(float(count) / batch_size)) + 1):
offset = i * batch_size
batch = items_list[offset:batch_size + offset]
if batch:
yield batch
opened_doc = client.Dispatch("Excel.Application")
flag_stop = False
def try_passwords(passwords):
global flag_stop
if flag_stop:
return
try:
for password in passwords:
opened_doc.Workbooks.Open(
r"C:\Users\User\PycharmProjects\brute_excel\fsociety.xlsx",
False,
True,
None,
password
)
flag_stop = True
return password
except:
pass
pool = ThreadPool(processes=50)
password = None
for pass_length in range(password_length[0], password_length[1] + 1):
if flag_stop:
break
iters = itertools.product(possible_symbols, repeat=pass_length)
for batch in batch_iterator(iters):
password = next(filter(bool, pool.map(try_passwords, batch)), None)
pool.close()
pool.join()
print (password)
Если есть возможность, можешь ссылку на github код дать, с удовольствием гляну.
Коммент на 13:55 : вероятнее всего при повторном запуске после Успешного входа в файл - он просто остается висеть в системе в незакрытом процессе. и при повторном запуске скрипт считывает успешное открытие на первой итерации и вываливается с поздравлением.
Ну да, простой способ есть ) excel - это zip архив, переименовываем, открываем, редактируя 1 файл удаляем пароль, архивируем. Привет Майкрософт и псевдобезопасность )
На свежем 2021 у тебя это сработало?
Если хотите добавить многопроцессорность, то, я думаю, будет лучше не разбить множество всевозможных вариантов пароля на куски и дать по куску каждому процессу, а сделать так чтобы этот список вариантов был единым и хранился в главном родительском процессе, а все остальные процессы брали бы оттуда пароли. Это можно реализовать с помощью класса Queue модуля multiprocessing. Такой подход лучше потому, что все потоки распределят нагрузку равномерно и гарантированно закончат работать в одно и то же время. Об этих вещах хорошо рассказано в четвёртой лекции Тимофея Хирьянова из курса анализа данных на python
Спасибо большое, гляну обязательно, не силен в процессах. Но думал нужно копировать файл и отдавать каждому процессу, чтобы каждый процесс открывал и закрывал свой файл. Не пробовал пока, но думаю могут возникнуть проблемы если каждый процесс будет долбиться в один файл.
И как быть с тем, если не разбивать лист паролей для каждого процесса, каждый из процессов будет работать по одному и тому же списку ведь и будет выполнять идентичную работу и это не приведет к ускорению перебора. Или я не так понял?
@@PythonToday так я же писал, что это делается с помощью Queue из модуля multiprocessing - это специальный канал связи между процессами, который выдаётся операционной системой - список, из которого можно брать и в который можно класть всё что угодно асинхронно из разных процессов, и не возникнет никаких проблем типа "race condition", так как эта Queue сделана специально для асинхронного обмена информацией между процессами.
Еще раз спасибо, посмотрю сначала лекцию, пока не понимаю как работает.
Или программа упадет с OutOfMemoryError (посчитай количество возможных паролей длины 10 из цифр и латиницы)
К тому же синхронизация коллекции тоже использует ресурсы, не говоря про невозможность кэширования thread safe коллекции
В таком случае правильнее передать в поток номер начала и конца, внутри потока его один раз декодировать в нужные индексы циклов. Количество нужной памяти O(1), а не O(C^N), а также никакой конкуренции за ресурсы и накладных ресурсов на синхронизацию (разве что чекать одну атомарную переменную флаг раз в Х итераций)
Отличное видео! Спасибо.
Красавчик
Я ничего не хочу сказать, видео классное! Но это самый бессмысленно сложный способ подбора пароля для Excel)
Следующий шаг - import multiprocessing . Размножить файл до нужного уровня параллелизма. И затем скормить каждому процессу свой кусок комбинаций. Многопоточность (import threading) не подойдёт из-за особенностей интерпретатора питона (он не позволяет по умолчанию выполняться многопоточно). Если предполагается посадить бота на сервер, то выгодно заранее сгенерировать данные и потом "быстренько" плодить процессы и параллелить перебор.
Буду пробовать, но количество процессов напрямую ведь зависит от процессора ПК? Я к тому, что на бюджетном хостинге, будет беда. Или не прав? Если есть опыт поделись пожалуйста, либо примером кода.
@@PythonToday Да, если на сервере мало оперативки, то будет не очень. Можно руками подобрать оптимальное количество процессов. Количество ядер на самом кристалле пк влияет на то, сколько по-настоящему одновременных задач может исполняться. Если ядро одно, то, возможно, и пытаться смысла нет. Скорость только лишь уменьшится, из-за затрат на создание процессов и переключение между ними.
@@PythonToday будет продолжения на шаблоны и улучшения кода если будет то он будет скрыт тут или в телеграмме если не вопрос или вообще это единственное произведения?
Очень нравится ваш канал, хотелось бы еще увидеть посмотреть как работать так же и с сайтами) Ждем продолжение на эту тему. Спасибо за ваш труд!
На сайте после нескольких запросов тебя забанят! Поэтому либо нужна армия ботов, которая по очереди будет добиться в один и тот же аккаунт, так же не забываем про капчу которую ещё надо будет как то решать. Брутфорс сайтов гораздо сложнее.
Благодарю за фидбэк. Но это не та платформа, на которой можно обсуждать, делать и выкладывать подобные темы.
@@PythonToday снимай и залей на тг группу пж :)
@@sergeikrasnovskii9767 для примера можно взять стандартную WP админку, где по умолчанию нет никакой защиты от брутфорса.
Hashcat one love
Способ рабочий, но очень медленный и не оптимизированный) Если уж и самому делать, то нужно хотя бы постараться максимально оптимизировать код, не вызывать каждый раз функции winapi и т. д.
Спасибо! Сделал brute force паролей md5. И компилировал в C код, чтобы быстрее было. (с помощью nuitka компилировал)
Благодарю за фидбэк. Можешь ссылку на код дать? С удовольствием бы глянул.
@@PythonToday Вот ссылка pastebin.com/2WH2uRUH
Благодарю, думал может добавил процессы или потоки.
@@PythonToday я в потоках не шарю(
@@konfuze_top Объясни дураку, куда в твоем коде ты указываешь путь к файлу и непосредственно файл? Совсем не понял но очень интересно
Хороший броутфоос получился можно для зим файла использиввть
День добрый подскажите есть урок по подбору паролей к веб приложениям.
Продолжай в том же духе
Спасибо за фидбэк 👍
Есть топ видео а есть 🔥🔥🔥🔥🔥как это, супер спасибо
Благодарю
Просто взрыв мозга ) класс
Благодарю за фидбэк!
Во время перебора не выводи ничего в консоль. Так скорость в несколько раз быстрее)
А разве это связано в данном случае? Как понял к файлу можно делать запрос не чаще чем 0.1с, что вполне отрабатывает и с принтами. Возможно я не прав.
@@PythonToday Я особо в этом не разбираюсь, просто из совсем небольшого опыта, говорю. Например когда проходишь в цикле по фотографии, и каждый пиксель обрабатываешь, а затем ещё выводишь информацию, то обработка фотографии занимает раз в 100 больше времени, если не в тысячу, чем без вывода информации. Также я часто встречал это когда писал другие большие циклы. Кстати, есть ещё одна идея.... это попробовать использовать мультипоточность. Но тут я совсем не разбираюсь, но думаю что это должно ускорить процесс перебора.
Да, вывод тормозит процесс перебора. Так как на каждый вывод затрачивается время, а вывод это массив который надо перебрать . По сути любой текст это массив который перебирается в цикле и выводит сумму всех символов
Очень классно делаете!
Благодарю
Очень крутой контент!
Спасибо)
можно было сильно проще сделать
Достаточно вытащить хэш пароля из эксель файла ( в интернете есть готовые решения как это сделать за несколько секунд)
А дальше расшифровать хэш))) Софт под расшифровку хэша есть всякий разный, но лучше всего использовать тот, где есть поддержка видеокарты. Там скорость перебора в некоторых типах шифрования достигает до миллионов в секунду))
Благодарю за фидбэк! Пароль можно было подобрать за пару минут тем же hashcat, интерес был попробовать сделать переборщик самому.
Мне таки любопытно - ты это сделал просто из интереса? На подбор паролей есть специализированные софтины. К примеру JohnTheRipper - многопоточен, написан на сях, дико быстр и понимает кучу форматов и вариантов перебора, от хитрых словарей-гибридов до параметризированного брутфорса.
Но таки да - тут оч прикольно было бы разделить это всё на потоки. В основном треде генератор паролей, в дочерних потоках - их проверка, например (я б так сделал). Было б быстрее. =)
Конечно потому, что было интересно разобраться самому.
За имя xlsx файла отдельный лайк)
Спасибо)
Жду продолжения парсинга тик-тока. Нигде не могу найти, как парсить тик-токи по хештегам. Особенно хотелось бы их сортировать по дате публикации
Есть несколько способов, но самый простой, чтоб не сильно париться с кодом (и если бешеная скорость не нужна) - используя selenium найти видео по хештегу, вытащить все нужные данные регулярками, запихнуть в базу.... работать будет.. но со скромной скоростью... если запариться немножко и убрать selenium, то будет быстрее
Посмотрите не публичный апи на питоне для тиктока
Привет. Может я что то упускаю , но мне кажется что для длины пароля достаточна начальная длина и если длина пароля во вермя брута увеличивается, то влюбом случаи , при совпадении , брут сработает . Не значю как повлияет на скорость , но мы в коде сокращаем человеческий фактор на 50 процентов , вдруг человек забывший пароль точно не помнит какая конечная длина пароля, и если он ограничит этот параметр придется перебирать занового с увеличиным порогом , а так в любом случаи брут будет брутить пока не нарвется на совпадениее! Поправте если не прав.
а нельзя допустим скомпилировать какую то часть и не высчитывать её а как то использовать?
а в MS точно надо подбирать пароль? Вроде Office Password Recovery умеет просто его подсмотреть
Вывод чего-либо в консоль замедляет перебор. Не стоит выводить информацию на каждом шаге.
Инициализация объекта Excel.Application в теле цикла замедляет работу. Возможно, эту инициализацию можно провести один раз перед всеми циклами.
Получение информации о неверном пароле через исключение замедляет работу. Стоит поискать возможность иначе узнавать что пароль неверен.
Стоит поискать возможность открывать документ не из файловой системы, а из памяти. На крайний случай использовать ramdisk.
Возможно, попытка открытия документа блокирует файл. Тогда стоит создавать нужное количество копий документа для параллельной обработки или для уменьшения паузы.
Стоит поискать альтернативную библиотеку для работы с файлами Excel. Судя по всему, эта использует приложение Excel, возможно даже создаёт его экземпляр. Это медленно и мы натыкаемся на механизмы безопасности Ecxel.
Если мои расчеты верны, я подберу пароль из 7 цифр и латинских букв в большом и маленьком регистре за 11000 лет
небыстро. Не мог бы привести расчеты для тех, кто не знает как считать, но кому интересно? Например мне
Просто разархивируй документ мс офиса.... зачем програмировать там где можно сделать быстрее руками?
@@SCSFom я разархивировал и что дальше? где пароль лежит?
Привет, не знаю увидишь ты или нет, но тем не менее. Посмотрел некоторые из твоих роликов и обратил внимание на то что ты очень любишь много консольного вывода. Это может быть проблемой с производительностью для твоих скриптов. Чтобы наглядно увидеть как это влияет, просто сделай цикл, от нуля до например ста тысяч. И в одной версии сделай вывод в каждой итерации, а в другой версии - вывод только последнего числа. И замерь время. Увидишь что оно различается на порядки. Так же обрати внимание что скорость вывода - не постоянна. В различных эмуляторах терминала она может быть разной.
Приветствую, благодарю за фидбэк! Принты добавляю для визуализации на ютубе, чтоб люди понимали, что происходит. Единственное, зря не проговорил это)
Только начал изучать python, но с профессиональным софтом по бруту паролей к документам неоднократно сталкивался. В какой-то программе реализован перебор на GPU, что сильно ускоряет процесс.
В идеале, наверное, распараллелить задачу именно на графический процессор (ядер сильно больше, память шустрее, соответственно и операций за такт намного больше, почему они и стали такими эффективными в майнинге), но я, к сожалению, понятия не имею, как это сделать :)
Сударь если вы когда либо сделаете такое, скиньте пожалуйста код
13:02 а в чем смысл сравнивать скорость если ты таймслип добавил?
Супер 🙌🏻 было бы не плохо развить тему об проведении трансляции в соц сетях рабочего стола или другого окна через питон 🐍
Как всегда интересно и полезно!!!!!!! можно использовать многопоточность с модулем threading будет быстрее
> threading будет быстрее
Не будет. threading в Python использует псевдопотоки (вместо нативных на процессоре). Соответственно для числомолотилок (перебор пароля подходит под такую классификацию) не подойдет threading из Python.
Хм, а для libre в mint есть подобная библиотека?
А как можно сделать так чтобы он вводил в программу? как взять управление в виндоус, чтобы он вводил в окошку программу?
переименовать файл в расширения в .zip и достать пароль, не благодарите )
Можно даже не переименовывать.
Открыть любым архиватором
Я тебе больше скажу - можно написать макрос прямо в экселе, который подберет пароль примерно за полсекунды (там очень кривой хэш). Лично мне кажется уморительным, что можно взломать пароль используя только эксель)
А пароль напрямую кстати достать не получиться, там его хэш записан, а не сам пароль... но можно просто удалить строчку с sheet protection и все будет работать
У нас тут мануал по написанию брутфорса на питоне. Да есть варианты выполнить именно эту задачу быстрее. А что вы будете делать к примеру с забытым паролем от файла данных оутлука? Ваши варианты тут не сработают. А этот более чем.
@@faktorial6218 я вижу вы и файл Сноудена расшифровали ) куда мне )
Интересный видос👍🏻
Один вопрос, почему везде принт, есть же логгер.
есть идеальная идея. импортнуть нумбу и использовать prange вместо range
я как тот, кто изучает ещё основы и прохожу в данный момент соглашения, а точнее защищённые и приватные аттрибуты - просто выпал от того, что творит этот джедай кода..
Да прям, я новичок и только учусь. Но спасибо)
По поводу потоков, в питоне быстрей не сделают, может даже медленей - один instance of interpreter
Интересно. Не совсем понял, что в Kali нет своего инструмента для установления пароля? По-моему, он даже в файловых менеджерах, типа Total Commander есть (открыть пароль под звездочками)... Или я чего не понимаю? Обязательно свой скрипт писать?
Есть множество инструментов, был интерес попробовать написать самому.
молодец, что прогрессируешь, но я думаю брутфорс - не лучшая задача для питона, так как довоольнооо медленноооо
Спасибо за фидбэк. Это опыт, для меня самый важный именно он.
Да не неси хуйню, нахуй в данном случае твой СИ не нужен, если заказ на 500 рублей.. Async в руки и вперёд.
@@evalinor Это вы не несите хуйню. Давайте сравним перфоманс на примере бинарных деревьев C++ и питона. Написать подобный код на C++ довольно таки мало времени занимает. Async это не решение проблемы. Тем более где он написал что-то про C++
ещё лучше писать на шарпе с помощью класса Parallel, он автоматически распределяет нагрузку по потокам, так что даже если один поток будет делать легкую задачу и будет недогружен, шарп ему добавит работёнки
@@Kitulous Это не лучше но проще.
Клас!)
Привет,вопрос не по теме.
Интересует информация по курсам Python для не граждан России,очень много гомнокурсов на просторах интернета и хотелось бы их обойти стороной,может кто подскажет стоющий внимания курс?спасибо.
П.с онлайн курс конечно же..
Привет, только пришел с твоего видео о фрилансе)))Научился парсить сайты по твоим видео) Спасибо тебе огромное:)
И ещё хотел спросить,могу ли я уже выполнять хоть маленькие заказы только со знанием парсинга сайтов?
Привет, конечно можешь. Это одна из самых больших и активных ниш.
@@PythonToday понял, спасибо огромное)
@@gaidjiin9977 как успехи?
в password_lenght вы используете list comprehension, но можно ведь использовать generator expressions для ускорения программы чтобы не читать всю все значения в строке а только нужные на данный момент. Если нельзя использовать generator expressions можете объяснить почему?
у меня вопрос вот к примеру есть у меня слово привет и есть алфавит где к каждой букве приставлен спец символ как мне заменять буквы на определёные символы?
У меня почему-то при вводе неправильного пароля ошибки не вызывается и try/except не срабатывает
Если опустить все более адекватные способы извлечения пароля и попробовать довести до ума этот, то таки имею что сказать. 1) проверке пароля передаётся пусть, а значит файл читается заново с носителя => чем больше размер файла, тем всё будет печальнее. Решение - попробовать поместить файл в оперативку и работать с ним там, будет это объект внутри приложения или какой-то RAM-диск - по идее не принципиально. 2) Как уже было верно предложено, можно использовать многопоточность, но только внутри функции, так же можно попробовать посмотреть в сторону кластерности - Torch/Celery, тут уже комбайн может получиться знатный.
Спасибо за видос.
💪
Что делать если пишет can only concateate str (not "int") to str.
Дядь, какой ручной перебор, используй hashcat
А как подобрать пароль к листу или книге, который установлен на защиту от изменений (редактирований), а не при открытии файла?
Загуглить и узнать, что существуют буквально макросы, которые подбирают пароли и к листу, и к книге.
@@ВладимирЛюдмирский Благодарю!
Как для попрактиковаться интересно. Но вообще в екселе пароль любой сложности убирается блокнотом за 3 минуты
Нет если вы про хекс редактор он просто не разархивирует файл с паролем! Только если пароль на листе или в ВБА
у меня вопрос низнаю насколько глупый, сколько времени уйдет на перебор всех от6 до8 символов??? хоть приблизительно.
Парсить данные последовательно через try/except не очень технологично, лучше через argparse. или сделать код в виде нормального модуля, чтобы пользователь сам импортировал этот код через питон и запускал main. и лучше не выводить попытки через print, а сделать шкалу загрузки с помощью tdqm и обновлять ее, скажем, раз в 500 попыток, чтобы терминал не засорять, но пользователь видел, сколько осталось времени (это оч просто, tqdm сам все вычисляет, исходя из заданного кол-ва итераций).
Спасибо за фидбэк!
Спасибо дружище, очень полезно и очень интересно, по одноклассникам не намечается парсир?
что там парсить, если не секрет?
Благодарю! А что там парсить? Последний раз заходил туда году в 2008 😀
Как преобразовать еденичку в строке 36 там где ...[1] +1)...
а как подключить этот код к , например, вк или другим соцсетям?типо что бы это не только в консоли работало)
пахпахпа, я тож поэтому зашел
чтобы было быстрее надо убрать все принты из цикла
@pythonToday не работает если ставить только буквенный выдает стандартный aaaa при любом раскладе как пофиксить знаешь?
Ролик полезный, но писать брут на питоне - это шутка дьявола, если, конечно, это не несколько забытых символов, что вполне, целесообразно, т.к. на питоне код будет написан за 10-15 минут, и начнет работать)
Спасибо за фидбэк! Конечно есть множество специальных утилит в тысячи раз быстрее, просто было интересно попробовать самому.
Код выводит ошибку
Подскажите чего не хватает
Traceback (most recent call last):
File "C:/Users/Vetal/PycharmProjects/pythonProject1/zdfg.py", line 73, in
main()
File "C:/Users/Vetal/PycharmProjects/pythonProject1/zdfg.py", line 69, in main
print(brute_excel_doc())
File "C:/Users/Vetal/PycharmProjects/pythonProject1/zdfg.py", line 41, in brute_excel_doc
for pass_length in range(password_length[0], password_length[1] + 1):
IndexError: list index out of range
Второй раз пароль находит моментально так как питон его запомнил можно вызвать id() и посмотреть так же dir() покаже что сохраненно
Там ничего взламывать не надо) меняешь расширение на zip, и в нем открываешь любым редактором листы и для параметра protection меняешь с 1 на 0)
На последнем офисе пробовал?
можете добавить графический интерфейс
круто
Спасибо!
Доброго времени суток
Насчет подбора - не понял, зачем так.
Мой вариант генерации:
import random, re, time
from string import digits, punctuation, ascii_letters
symbols = [f'{digits}', f'{ascii_letters}', f'{digits}{ascii_letters}', f'{digits}{ascii_letters}{punctuation}']; pot_symbols = ''
chosen = input('...'); rand = 0
pass_lenth = input('...')
pass_lenth = [ int(item) for item in pass_lenth.split("-")]
if re.match('^[1-4]$', chosen):
pot_symbols = symbols[int(chosen)-1]
st = time.time()
for i in range(20000):
print(f'{rand} - ', end=''); print(''.join(random.choice(pot_symbols) for _ in range(random.randint(pass_lenth[0], pass_lenth[1])))); rand += 1
fin = time.time(); print(f"Created {rand} in {fin-st}.")
Как-то так.
Привет, так у каждого свой код, если твой вариант работает - отлично
Строка остается на тех же 023 поэтому при повторном запуске у тебя и вылетает сразу результат! P.s.
необходимо в наборе символов после первого перебора что бы возвращал строку на начало!
А разве не потому, что файл открыть но не закрыт?
@@PythonToday Ну если пере-открыть файл то соответственно курсор будет с начала строки, или же его можно перевести в начало строки. P.s это мои догадки )) я только учусь ))
@@PythonToday ну все верно, если пере открыть файл то строка вернется в начало, а можно ее вернуть в начало командой
Если есть желание могу сказать алгоритм взлома по проще. Если конечно файл не зашифрован при этом
5:10 почему использовалась функция "if", а не "case"?
В пайтоне такого нет
@@lollopin3362
Есть же альтернативные варианты замены if-else, а так же новая "match-case".
_Я только изучаю Python, но знаю другие языки._
Попались питонисты, я с вами)
В наших рядах прибыло 😀
Это еще что за "***Hello friend!***"? Традиции чтить нужно! Все программирование на "Hello world" держится.
Hello world!
Hack the planet!
А если попробовать cuda, будет еще быстрее, так вычисления будет производить видео-карта.
Мне был интересен сам процесс) Есть множество программ предназначенных специально для таких целей.
Что за программа в которой он писал код, подскажите пожалуйста кто может.
pycharm
@@PythonToday Спасибо
Было бы неплохо задействовать многопоточность
в пайтене потоки не потоки
@@Славский-ш4п Лучше асинхронность
Здравствуйте.
На счет ускорения брутфорса.
А как на счет того чтобы создать несколько копий данного ексель файла. И пробовать одновременно часть паролей для одного файла, другую для второго файла и тд. А потом в конце удалить копии ексель файла.
Приветствую, да, как один из вариантов. Но есть и другие способы и программы быстро расколоть. Было интересно попробовать самому)