Полноценное использование служебного Инета

Xakep, номер #039, стр. 039-056-3


Как я уже говорил, этот способ является самым простым, но имеет существенные недостатки. Так, во-первых, в рассматриваемой организации ftp-доступа извне может не быть вообще. Во-вторых, нужный файл может не лежать ни на одном ftp-сервере, и в третьих, многие ftp-сервера могут работать только в пассивном режиме (либо могут не позволить перевести себя в активный режим с адресом, отличным от адреса клиента).

Есть способ лучше

В самом начале статьи я говорил о том, что, изменив имя, расширение и содержимое файла, его можно выдать за другой файл и пройти все фильтры. Это означает, что где-нибудь в Инете на каком-нибудь серваке нужно получить определенным образом измененную копию файла, причем такую, которая не вызовет подозрения у фильтрующей системы, когда ты будешь ее качать. Предлагаю делать это так: купить 2-3 метра у хостинг-провайдера (единственное требование: perl + исходящие сокеты), зарегистрировать любое доменное имя (его тоже нужно выбирать с умом) и разместить там скрипт, который скачает нужный файл и сохранит в измененном виде. Далее будет скачиваться этот файл, что и решит проблему.

Разумеется, покупать место вовсе необязательно, достаточно чтобы были удовлетворены эти условия. Так что если решишь использовать какой-либо халявный хостинг, уточни возможность размещения собственных pelr-скриптов, создающих исходящие сокеты. Однако в крайнем случае все это можно и купить (насколько мне известно, сейчас можно за 3$ в месяц купить 2 метра, к которым будет прилагаться бесплатное доменное имя в зоне spb.ru или msk.ru + perl + сокеты).

Имя хоста, как я уже говорил, надо выбирать с умом. Никакие "31337.spb.ru" или "www.admin_pridurok.narod.ru" не годятся, ибо будут вызывать подозрение, а значит велика вероятность того, что в один прекрасный момент это имя будет внесено в черный список и большая часть трудов пойдет коту под хвост. Самый лучший вариант - это выдавать скачиваемый файл за что-либо, относящееся к учебе/работе, поэтому имя сервака тоже должно иметь к этому какое-либо отношение. Здесь, надеюсь, проблем возникнуть не должно, так что перейдем к самому ответственному - написанию скрипта, который скачает нужный файл, переворошит его содержимое и сохранит под другим именем.

HTTP => HTTP

Итак, самое важное - perl-скрипт. Чтобы понять написанное ниже, тебе потребуется как минимум знать основы Perl. Этот язык довольно распространен, поэтому найти соответствующую информацию труда не составит.

Однако ближе к телу. Все скрипты, использующие сокеты, должны содержать в начале следующую строку:

use Socket;

которая указывает на то, что для работы скрипта необходимо подключение соответствующего модуля. Кроме этой команды, никаких других специальных директив для работы не потребуется.

Первое, что нужно научится делать, - это коннектиться к произвольному серваку на произвольный порт. Делается это таким образом:

$sin=sockaddr_in($xport, inet_aton($xhost));

socket(HTTPCMD, PF_INET, SOCK_STREAM, getprotobyname('tcp'));

Назад на стр. 039-056-2  Содержание  Вперед на стр. 039-056-4