Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
coding<br />
Игорь «Spider_NET» Антонов<br />
Тру-хакерский FTP<br />
Куем коммерческий FTP-клиент без использования компонентов<br />
FTP-клиент — одна из самых часто используемых утилит в повседневной жизни продвинутого<br />
пользователя. Закачать html-странички, слить warez с сервака, качнуть фильмов<br />
в локалке — работа FTP-клиента. Стоимость таких программ на рынке колеблется от 10<br />
до 100 баксов. Скажи, тебе не хочется срубить столько же, да еще и не особо напрягаясь<br />
Если ты решительно ответил «Да», то усаживайся поудобнее и читай статью, познавая секреты<br />
программирования FTP-клиентов. Никаких компонентов, никаких чужих библиотек<br />
— все свое, родное!<br />
Теория FTP-протокола<br />
File transfer protocol (протокол передачи файлов) берет свое начало в 70‐х.<br />
Именно в то время возникла необходимость в создании протокола, который<br />
смог бы решить проблему передачи файлов с одного компьютера на другой.<br />
На протяжении 30 лет протокол неоднократно менялся и совершенствовался.<br />
Последняя спецификация приведена в RFC 959 (http://athena.vvsu.<br />
ru/docs/tcpip/rfc/rfc959.txt). Я очень рекомендую тебе скачать этот документ<br />
и хорошенько с ним ознакомиться, поскольку только в нем ты найдешь<br />
ответы на вопросы, которые могут возникнуть у тебя при написании полноценного<br />
FTP-клиента. Как и большинство сетевых протоколов (HTTP, POP3,<br />
SMTP и др.), FTP работает поверх TCP. В отличие от всех перечисленных<br />
протоколов, FTP обладает одной интересной особенностью. Для полноценной<br />
работы ему нужно не одно, а целых два соединения:<br />
1. Управляющее — используется на протяжении всего сеанса связи. По<br />
этому соединению отправляются все команды для FTP-сервера и возвращаются<br />
результаты их выполнения.<br />
2. Соединение для передачи данных — создается в момент, когда нужно<br />
получить/отправить данные. После передачи данных соединение должно<br />
завершиться.<br />
Установка соединения<br />
Давай подробно рассмотрим процесс установки связи с FTP-сервером.<br />
Чтобы выполнить какую-либо команду, клиенту нужно установить<br />
/ 110<br />
управляющее соединение. Сделать это можно, подключившись на 21‐й<br />
порт (порт по умолчанию у большинства FTP-серверов) удаленного компьютера.<br />
Как только соединение будет установлено, FTP-сервер отправит<br />
приветствие. Обычно в нем содержится название используемого сервера<br />
и другие данные. Для продолжения работы клиенту необходимо пройти<br />
авторизацию — отправить серверу свой логин и пароль. Логин передается<br />
командой USER [имя пользователя], а пароль — командой PASS [твой<br />
пароль]. Если введенные данные окажутся верными, то сервер радостно<br />
отправит сообщение с кодом «230 OK». Текст этого сообщения означает,<br />
что авторизация успешно пройдена и можно отправлять команды.<br />
Наглядный пример установки управляющего соединения ты можешь<br />
увидеть на рисунке, где изображено, как с помощью telnet я подсоединился<br />
к ftp-серверу.<br />
После установки управляющего соединения можно посылать команды для<br />
получения списка файлов или же для копирования самих файлов, но перед<br />
этим необходимо установить второе соединение — для передачи данных.<br />
Я уже много раз говорил о соединении для передачи данных, но до сих пор<br />
ничего не сказал о принципах его создания. Первым делом программеклиенту<br />
нужно открыть любой свободный порт. Затем удаленному серверу<br />
необходимо послать данные в специальном формате, которые будут<br />
включать IP-адрес (твой реальный IP) и порт (тот, который ты и открывал для<br />
подключения). Все эти данные отправляются с помощью команды PORT.<br />
Если ты читал внимательно, то, наверное, обратил внимание на упоминание<br />
xàêåð 06 /102/ 07