Доброго времени всем, дамы и господа.
Сегодня хочу представить вам небольшую статью, посвященную методам
выдачи запрещенных файлов на вредных хостингах. Вообще говоря, на написание
этой статьи меня сподвиг Ar3s, так как имеючи именно такого вредного хостера
был заинтересован в результате.
Есть еще один интересный момент в этом деле. Все мы настолько ударились в
американскую бизнес модель, что совсем перестали подходить к выбору
хостинга с нашей русской замысловатой изюминкой. Типа так: "Делаем биз на фрихосте. Фууу - реклама мешает
работать, дизайн портит, скрипты неверно срабатывают, тогда берем платный хостинг. Нууу обуза сыплется,
что делать? Конечно брать антиабузный хост!". И во сколько нам это вываливается? Во многие сотни
грина, которые мы с удовольствием бы потратили на более приятные вещи.
Так почему бы нам не применить смекалку и обойти кое какие фрихостовые запреты?
Приступим!
Ситуация такова: хостер не разрешает тем или иным образом загружать и хранить
вам файлы с расширением .exe. А я скажу так - не беда.
Во первых что мы можем сделать, так это воспользоваться таким распространенным модом апача
как rewrite engine.
Создаем файл .htaccess в каталоге, где будет храниться загружаемый файл.
Пишем в нем:
Пробуем что получится и видим, что файл file.dat отдается по запросу file.exe,
вроде то что нужно, но тут есть один момент. Если мы посмотим на HTTP заголовки,
отправляемые сервером, то увидим там вот что:
устроить, хотя если вы выкладываете файл не для прогруза через браузер, а,
например, для того чтобы его выкачал ваш бот для обновления, то такой подход
должен прокатить.
Не будем останавливаться на достигнутом. Попробуем решить проблему более
качественно, для этого нам конечно же потребуется PHP.
Как нам (я надеюсь таки нам а не мне) известно - PHP умеет менять HTTP заголовки
отдаваемые сервером в браузер. Это ключевой момент предложенного подхода.
Итак, клепаем скрипт в папке с отдаваемым файлом (пускай будет все тот же file.dat,
который хостер нам благополучно позволил прогрузить - он то не знает что это
наш злой троянец с измененным расширением .exe на .dat).
Вот текст скрипта:
А вот и модифицированный под наши нужды .htaccess:
Здесь следует отметить несколько моментов:
1. В строке $fp = fopen($file, "rb"); желательно использовать флаг b, который
указывает интерпретатору открывать файл именно в двоичном режиме (зачем нам
открывать бинарник в текстовом тежиме, который используется по умолчанию, мало
ли чего при открытии может случиться, например замена символа \n (это 0x10 - CR)
на \n\r (это 0x10 0x13 - CR LF) тут все зависит от настроек самого сервера).
2. В строке header("Content-Type: application/octet-stream"); мы напрямую указываем
на тип передваемых данных - это приложение и браузер истолкует его именно так, а не как
в прошлый раз вывалив содержимое в окно.
Наконец хочется добавить в положительные моменты этого метода возможность
в коде зафиксировать факт обращения к файлу (как делают многие админки ботов и связок).
На этом я думаю стоит закончить статью, предварительно выразив благодарность
Ar3s и DeusTirael, за помощь в поиске генетического материала для исследований.
На последок хочу пожелать начинающим не пускаться во все тяжкие по стопам
бывалых а искать свои не менее замечательные и продуктивные пути решения
возникающих проблем. Удачи!
//For admins/moders если посчитаете статью достойной, положите в статьи плз//
Сегодня хочу представить вам небольшую статью, посвященную методам
выдачи запрещенных файлов на вредных хостингах. Вообще говоря, на написание
этой статьи меня сподвиг Ar3s, так как имеючи именно такого вредного хостера
был заинтересован в результате.
Есть еще один интересный момент в этом деле. Все мы настолько ударились в
американскую бизнес модель, что совсем перестали подходить к выбору
хостинга с нашей русской замысловатой изюминкой. Типа так: "Делаем биз на фрихосте. Фууу - реклама мешает
работать, дизайн портит, скрипты неверно срабатывают, тогда берем платный хостинг. Нууу обуза сыплется,
что делать? Конечно брать антиабузный хост!". И во сколько нам это вываливается? Во многие сотни
грина, которые мы с удовольствием бы потратили на более приятные вещи.
Так почему бы нам не применить смекалку и обойти кое какие фрихостовые запреты?
Приступим!
Ситуация такова: хостер не разрешает тем или иным образом загружать и хранить
вам файлы с расширением .exe. А я скажу так - не беда.
Во первых что мы можем сделать, так это воспользоваться таким распространенным модом апача
как rewrite engine.
Создаем файл .htaccess в каталоге, где будет храниться загружаемый файл.
Пишем в нем:
Код:
RewriteEngine On
RewriteBase /
#Rewrite .exe to .dat
RewriteRule ^file\.exe$ /file.dat [L]
вроде то что нужно, но тут есть один момент. Если мы посмотим на HTTP заголовки,
отправляемые сервером, то увидим там вот что:
В частности строка Content-Type: text/html; charset=windows-1251 нас может и неHTTP/1.1 200 OK
Date: Sat, 08 Aug 2009 10:15:57 GMT
Server: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4
Last-Modified: Thu, 30 Jul 2009 20:41:30 GMT
ETag: "bbf2-1e000-5410d280"
Accept-Ranges: bytes
Content-Length: 122880
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=windows-1251
устроить, хотя если вы выкладываете файл не для прогруза через браузер, а,
например, для того чтобы его выкачал ваш бот для обновления, то такой подход
должен прокатить.
Не будем останавливаться на достигнутом. Попробуем решить проблему более
качественно, для этого нам конечно же потребуется PHP.
Как нам (я надеюсь таки нам а не мне) известно - PHP умеет менять HTTP заголовки
отдаваемые сервером в браузер. Это ключевой момент предложенного подхода.
Итак, клепаем скрипт в папке с отдаваемым файлом (пускай будет все тот же file.dat,
который хостер нам благополучно позволил прогрузить - он то не знает что это
наш злой троянец с измененным расширением .exe на .dat).
Вот текст скрипта:
Код:
<?
error_reporting(0);
$file = 'file.dat';
$size = filesize($file);
$fp = fopen($file, "rb");
$exe = fread($fp, $size);
fclose($fp);
header("Content-Type: application/octet-stream");
header("Cache-Control: private", false);
header("Content-Transfer-Encoding: binary");
header("Accept-Ranges: bytes\r\n");
header("Content-Length: " . $size . "\r\n");
header("Content-Disposition: inline; filename=file.exe");
die($exe);
?>
Код:
RewriteEngine On
RewriteBase /
#Rewrite .exe to .php
RewriteRule ^file\.exe$ /file.php [L]
1. В строке $fp = fopen($file, "rb"); желательно использовать флаг b, который
указывает интерпретатору открывать файл именно в двоичном режиме (зачем нам
открывать бинарник в текстовом тежиме, который используется по умолчанию, мало
ли чего при открытии может случиться, например замена символа \n (это 0x10 - CR)
на \n\r (это 0x10 0x13 - CR LF) тут все зависит от настроек самого сервера).
2. В строке header("Content-Type: application/octet-stream"); мы напрямую указываем
на тип передваемых данных - это приложение и браузер истолкует его именно так, а не как
в прошлый раз вывалив содержимое в окно.
Наконец хочется добавить в положительные моменты этого метода возможность
в коде зафиксировать факт обращения к файлу (как делают многие админки ботов и связок).
На этом я думаю стоит закончить статью, предварительно выразив благодарность
Ar3s и DeusTirael, за помощь в поиске генетического материала для исследований.
На последок хочу пожелать начинающим не пускаться во все тяжкие по стопам
бывалых а искать свои не менее замечательные и продуктивные пути решения
возникающих проблем. Удачи!
//For admins/moders если посчитаете статью достойной, положите в статьи плз//