![]() |
Написание многопоточного брута веб-форм на перле, на примере vip-file, с GUI
## Написание многопоточного брута веб-форм на перле, на примере vip-file, с GUI ##
Сразу хочу сказать, что это моя первая статья на ачате и мой первый скрипт на перле, так что сильно не пинайте) Статья расчитана на тех, кто не знаком / мало знаком с перлом .. Итак, начинаем. Все любят качать с большой скоростью и платить за это бабло какому-то вип-файлу желания мало .. исправим :) !1 - Подготовка Для начала понадобится перл, -- Для винды - качаем ActivePerl -- Для тукса: sudo apt-get install perl sudo apt-get install perl-tk либо rpm -ivh perl-Tk-номер_версии-сборка.архитектура.rpm !1.1 FAQ Q: Где мона взять большое faq по перлу?) A: [rus] http://faqs.org.ru/progr/web_lang/perl_faq.htm Q: А учебник?) A: http://www.spravkaweb.ru/perl/ Q: Откуда слить документацию по LWP? A: [rus, pdf] http://pascal.sources.ru/incoming/lwp-spec.zip Q: Откуда слить документацию на русском по Tk? A: Действительно, откуда?)) Я юзал Pod Brouser (слить мона с репозитория убунты, Pod Brouser на английском), сплоиты от RST/GHC, респект им, и вот эту небольшую статью: http://gazette.linux.ru.net/rus/articles/perl_tk.html !2 - Начинаем Код:
#!/usr/local/bin/perl#!/usr/local/bin/perl - данная строка должна быть первой в любой Perl-программе. Она указывает системному интерпретатору что данный файл - это Perl-программа. print "# Vip-File brute #\n"; - вывод на экран, в данном случае мини-about Едем дальше, подключаем нужные модули Код:
use Tk;use - подключает нужный модуль и нам становятся доступны все его подпрограммы. Файл модуля с расширением ".pm" должен храниться в одной из библиотечных директорий Perl. Они перечислены в массиве @INC, одна из них обычно "/usr/local/lib/perl/". Теперь создаем окно, Код:
$window = new MainWindow(title => "VFB - Vip File brute");$window->geometry('420x175'); - задаем размеры окна. Добавим немного переменных, доступных из любого потока Код:
my $url : shared;$range - диапозон для брута. $btype - тип брута. $threads_count - кол-во потоков. $good - кол-во сбрученных паролей. $checked - кол-во проверенных паролей. $cp - текуший пароль. Окно создали, заполняем его контроллами .. Код:
# FramesМетод pack предназначен для задания свойств расположения элемента на форме. -side => 'left' означает, что рамка будет "прилипать" к левой границе формы. $left->Label - На левом фрейме создаем текстовую метку aka label, -text думаю и ежу понятно, что отвечает за текст в метке. $right->Entry - На правом фрейме создаем текстовое поле, -relief отвечает за вид этого поля, -width за ширину, -textvariable за текст в нем. $type = $right->BrowseEntry - Создаем выпадаюший список. $type->insert('end', 'By range'); - добавляем в конец этого списка его элементы, первый аттрибут ('end') отвечает за расположение вставляемого элемента, в данном случае - в конец, второй - собственно текст. Про метод pack я уже писал выше .. $right->Button - Добавляем на правый фрейм кнопку, -text - текст на кнопке, -activeforeground - цвет текста, когда над кнопкой находится мышь, -command - имя подпрограммы - обработчика, когда на кнопку нажимают. И запускаем наш интерфейс Код:
MainLoop();# Подпрограммы - Для применения подпрограммы ее необходимо определить либо в текущем модуле (файле), либо во внешнем модуле (файле). Подпрограммы определяются и декларируются следующим образом: sub имя; - Только декларация. Определение ниже. sub имя (прототипы); - То же но с декларацией параметров. sub имя блок; - Декларация и определение. sub имя (прототипы) блок; - То же, но с параметрами. # Private переменные. - Для применения переменных доступных только внутри блока или подпрограммы необходимо определить их с помощью функции my(список). Если переменная одна, то скобки можно опустить. my() декларирует private переменные в пределах текущей подпрограммы, блока, функции eval() или do/require/use файлов. Private переменные аналогичны auto переменным в С. Приступаем к написанию .. Функция about, ну а как без нее) Код:
sub about()$window->messageBox - Выводим сообшение. -title - заголовок окна, -message - само сообшение, -type - тип сообшения, в данном случае окно с кнопкой Ok, -font - шрифт, у мну указан только размер. Итак, 2 кнопки уже работают, About и Quit, теперь напишем доп-ные функции. Вначале нам надо получить hidden поля с вип файла - uid и fid, /* небольшое отступление, дальше будут простые GET запросы, если вам понадобятся POST запросы, прокси или базовая авторизация - качайте http://pascal.sources.ru/incoming/lwp-spec.zip */ Функция получения содержимого страницы: Код:
sub get_content()$request = HTTP::Request->new(GET => $_[0]); создаем новый запрос, в данном случае - GET. $request->header(Accept => 'text/html'); - в заголовке передаем, что принимаем text/html. $result = $ua->request($request); - отправляем запрос. if ($result->is_success) - если удачно, возращяем, что получили, иначе 0. Вызвать функцию можно будет вот так: $text = &get_content($url); Функция вывода ошибки: Код:
sub error()Функция добавления в лог сбрученных паролей: Код:
sub add2log()if (!print LogFile $_[0], "\n") - Записываем в файл сбрученный пароль, если не вышло - выходим сами)) close(LogFile); - Закрываем дескриптор файла. Функция выдирания uid, name и fid из рипнутого кода, который лежит в $text. Код:
sub content2hv()Функция substr (синтаксис: substr СТРОКА, СМЕЩЕНИЕ [, ДЛИНА[, ЗАМЕЩЕНИЕ]]) извлекает из строки, заданной параметром СТРОКА, подстроку длиной равной значению параметра ДЛИНА, начиная с символа, заданного параметром СМЕЩЕНИЕ. Если СМЕЩЕНИЕ отрицательно, то извлечение начинается с последнего символа строки. Если значение параметра ДЛИНА отрицательно, то от конца строки отсекается количество символов, равное абсолютному значению этого параметра. Если задана строка ЗАМЕЩЕНИЕ, то выделенная подстрока замещается ею в параметре СТРОКА, которы в этом случае должен быть lvalue. Теперь напишем функцию проверки пароля - для этого надо отправить GET запрос на випфайл: Код:
http://vip-file.com/sms/check.php?pass=<pass_here>&uid=<uid_here>&name=<name_here>&fid=<fid_here>&submit=%D1%EA%E0%F7%E0%F2%FCКод:
sub check_pass()Функция брута: Код:
sub brute()if ($btype eq 'By range') - $btype - комбо-бокс для выбора типа брута. $cp++; - Увеличиваем на 1 текуший пароль. if (&check_pass($cp) == -1) - Чекаем пароль, если -1 - значит он подошел. &add2log($cp); - Описывал выше, добавляет пароль в лог. $good++; - Увеличиваем счетчик сбрученных паролей. int - Округляет число до целого, rand - генерит случайное число. Функция вывода инфы на экран: Код:
sub info_thread()$a = $lgood->configure(-text => $good); - Обновляем текст в текстовом поле. sleep(5); - Пауза на 5 секунд. Обработчик нажантия кнопки Start )) Код:
sub start_brute()$range_end = substr($range, 10, 9); - Получаем конечный пароль. srand(); - Для функции rand. $text = &get_content($url); - Получаем содержымое страницы с випфайла, дабы выдернуть 3 переменных (uid, fid, name). &content2hv(); - Выдираем .. ) threads->new(\&info_thread); - Создаем поток для вывода инфы на экран. for (0..$threads_count) - И в цыкле создаем все потоки - threads->new(\&brute); !2 The end(); [- Готовый скрипт --- http://secretsdrive.net/get/01/b187d62737/vfb.pl.tar.gz ---] Теги: Perl, Tk, LWP, Brute, брут, Vip-file, статья, качать бесплатно --------------------- (c) BlackSun [S.T.A.R.S. Team] Special for AntiChat. |
Отпишытесь, кто потестил .. толи у мну руки с .. толи випфайл седня не в духе (
|
Что-то я очень-очень плохо понял нафиг оно вообще нужно? Нужно выписывать теорию? Сомневаюсь.
Цитата:
Зачем переписывать теорию и мануалы? не проще дать ли на них ссылки в соответствующем разделе? Стало даже смешно, когда ты с усердием описываешь приватные переменные и в твоих подключаемых модулях нет use strict... Впринципе, можно было ограничить всё, что запостено начальными ссылками и ссылкой на какой-нить брут. Считаю, что данное нужно переместить как максимум в кодинг, т.к. люди, только что-то научившиеся кодить, не напишут ничего дельного по этому поводу... [+] 70% что здесь есть уже давно лежит в учебниках по пёрлу. |
doc по tk намного лудше - ты серавно далеко не все элементы описал
описывать каждую команду скрипта и назвать это статьей тоже лажово что касается многопоточности с гуем - прикольно конечно но ты, хоть бы как то завершал потоки а то они создадутся будут работать и останутся висеть в оперативе пока не закроешь софт - а если много потоков то много оперативы будут есть - нажмешь пару раз на старт и вся оператива зафукана(1 поток прим 2 метра) кста консольная полюбому будет быстрее работать в общем есть еще много над чем поработать - но для первого скрипта на perl сойдет |
Код:
my $url : shared;Код:
my $url : shared = 'http://vip-file.com/download/ae25b2336179/asdwqerfawdq3d.htm.html';Код:
sub get_content()..... sub имя (прототипы) блок; - То же, но с параметрами. Круто а где же эти прототипы ? :eek: Код:
sub get_content( $ )Код:
&error("Cant open good.txt\r\n$_[0]");if(open(LogFile, ">>good.txt")) - Открываем файл good.txt для записи сбрученных паролей, если открыть не вышло (ужос), то выводим мессагу и выходим, LogFile - дескриптор файла. if (!print LogFile $_[0], "\n") - Записываем в файл сбрученный пароль, если не вышло - выходим сами)) close(LogFile); - Закрываем дескриптор файла. >> - режим дописывание к существующему файлу существуют логические операторы которые в этом контексте уместны ( ||,or ) + есть оператор unless Функция выдирания uid, name и fid из рипнутого кода, который лежит в $text. Код:
sub content2hv()целиком согласен с Chuck . Статья является кашей из манов , автор имеет скудное представление о языке . |
перезалейте пожалуйста скрипт у кого остался
|
| Время: 02:01 |