Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #119, НОЯБРЬ 2008 г.

Хакерский спиннинг

Денис Колисниченко / dhsilabs@mail.ru /




Какая рыбка попадется — золотая или обычная, рыбак не знает. Вот и мы не знаем, что попадет в наши сети — может фильм какой, а может — последний дистрибутив Linux. В этой статье мы поговорим о спутниковой рыбалке.

Xорошая выделенная линия есть не у всех. Увы, до сих пор многие сидят на низкоскоростном модемном или GPRSсоединении. Из обычного модема в идеальных условиях можно выжать 33,6-56 Кбит/с, а из GPRS-соединения и того меньше — 18 Кбит/с. Хочется скачать новый фильм или последний дистрибутив Ubuntu? С таким интернетом об этом можно забыть! Спрашивается, что делать, если выделенная линия (или хотя бы ADSL) в ближайшем будущем не светит? Ответ прост — вкусить прелести спутниковых технологий. Для этого необходимо приобрести комплект спутникового оборудования (кстати, он стоит не так уж и дорого — в пределах $200-300, и это вместе с DVB-картой) и использовать его в режиме рыбалки или для полноценного подключения к интернету. Правда, в последнем случае тебе понадобится еще один канал, по которому данные будут отправляться, в том числе и твои запросы (например, запрос на скачивание файла в 4,5 Гб), но для этого подойдет и медленное соединение (как раз модемное или GPRS).

Прием же будет осуществляться через тарелку. В статье мы рассмотрим оба режима, но сначала поговорим о «рыбалке». Что это такое? Это — «воздушный» перехват чужого трафика. Например, кто-то начал качать фильм, а твоя спутниковая удочка перехватывает трафик и сохраняет на твой комп. В результате, фильм скачают, как минимум, два пользователя — доходяга, запросивший загрузку фильма, и ты. Причем, тебе фильм «свалится с неба» абсолютно бесплатно. Ни за «наземный» канал (так как он просто не потребуется), ни за принятый трафик платить не нужно. Единственный недостаток режима «рыбалки» заключается в том, что мы не можем скачать то, что нам хочется. Волей-неволей мы будем принимать все, что качают другие пользователи. Понятно, что на винт польется куча «мусора», которую придется разгребать и разгребать, хотя можно установить критерии захвата, например, только AVI- или только ISO-файлы. Но в любом случае «рыбалка» — это лучше, чем вообще ничего. Включаешь утром компьютер… и обнаруживаешь парочку новых фильмов или свежие версии программ. По крайней мере, в видео-прокат точно дорогу забудешь.

Готовим удочку

Первым делом нужна удочка — тарелка и DVB-карта (для подключения тарелки к компу). Как только удочка будет готова, подготовим наживку — это у нас софт. Как для Windows, так и для Linux, успешно используется программа Skynet. Вот только для Винды ее разработка приостановлена, временно или навсегда — точно не скажу. Для Linux доступны новые версии Skynet, а для Windows — нет. Чтобы найти Skynet, нужно постараться. Никогда не думал, что по запросу «skynet download» не получу прямой ссылки на закачку. Экономя твое драгоценное время, я разместил последнюю версию Skynet на своем сайте: dkws.org.ua/files/skynet089.rar, dkws.org.ua/files/a58_linux.rar (считается самой стабильной версией). В архиве ты найдешь откомпилированные версии программы для Ubuntu и Mandriva. Теоретически, эти программы можно запустить и в других дистрибутивах, но я не пробовал. С помощью менеджера пакетов инсталлируем прекомпилированный пакет dvb-utils (его можно взять с сайта packages.ubuntu.com). После установки пакета перейди в каталог /dev/dvb/adapter0. В нем должны быть следующие файлы: demux0, dvr0, frontend0, net0. Если их там нет, перезагрузи комп — они появятся после перезагрузки. Наличие этих файлов означает, что система увидела нашу DVB-карту. Кстати, чтобы DVB-карточка не «засыпала», выполни следующую команду и перезагрузись:

# echo "options dvb-core dvb_shutdown_ timeout=0" > /etc/modprobe.d/dvb-core

Проверяем наживку

На этом этапе «рыбалки» мы проверяем, есть ли сигнал с транспондера. Для этого создай файл /etc/channels. conf такого формата:

название:частота:поляризация:diseqc:символьная скорость:V-pid:A-pid:SID

Теперь введи код (самое главное — это частота, поляризация и символьная скорость, все эти параметры можно нагуглить или получить у провайдера):

$ sudo vim /etc/channels.conf
sputnik0:11481:h:0:41250:0:0:0

Осталось выполнить команду:

$ sudo szap -c /etc/channels.conf -n 1

Вывод будет примерно таким:

zapping to 1 'sputnik0':
sat 0, frequency = 11481 MHz H, symbolrate
41250000, vpid = 0x0000, apid = 0x0000
using '/dev/dvb/adapter0/frontend0' and '/
dev/dvb/adapter0/demux0'
…

Все отлично, сигнал есть!

Запуск Skynet

Распакуй архив со Skynet в домашний каталог. Затем открой файл skynet.ini и измени пути к служебным каталогам:

$ vim skynet.ini
/* Каталог для частично загруженных файлов */
incomplete=~/incomplete
/* Каталог для временных файлов */
temp=~/temp
/* Каталог для полностью загруженных файлов */
ok=~/ok

Создаем указанные каталоги:

$ mkdir ~/{incomplete,temp,ok}

Для запуска Skynet используется одна из команд:

$ ~/skynet/xskynet_ub
$ ~/skynet/xskynet (для версии a58)

Где skynet — это подкаталог, в который нужно распаковать содержимое архива. Если программа не запускается, введи команду:

$ sudo ln -s /usr/lib/libpcre.so.3 /usr/lib/
libpcre.so.0

Программа может не запускаться еще по одной причине, — отсутствует необходимый шрифт. Открой файл конфигурации skynet.ini, найди строчку «xfont=-*-*-*-*-*-*-**-*-*-*-*-*-cp1251» и замени ее на «xfont=fixed». Программа запускается, но нет сигнала? Попробуй установить значение 0 для параметра use_udp в файле конфигурации:

use_udp=0

Спутниковый интернет

Переходим ко второй части статьи. Тут нужно отметить, что интернет у нас будет асинхронным. Данные получаем через тарелку, а отправляем — по «наземному» каналу. Сейчас мы настроим подключение через Globax (о том, что это такое, почитай на сайте globax.biz или в боковом выносе). Linux-клиент для Globax можно скачать по адресу globax.biz/files/gx-linux-4.2.3.tar.bz2. Распаковываем архив и копируем бинарик в /usr/local/sbin:

$ tar -xvjf gx-linux-4.2.3.tar.bz2
$ cd gx-linux-4.2.3
$ sudo cp globax /usr/local/sbin

Но прежде, чем его запускать, отредактируем файл конфигурации /etc/globax.conf:

$ sudo vim /etc/globax.conf
[server]
port = 6768
log = /var/log/globax.log
datatimeout = 60
[remote]
name = globax
server = сервер:порт
login = globax_логин
passwd = globax_пароль
speed_in = 320000:384000
speed_out = 3000
mtu = 576
mru = 1500
flush_time = 500
[local]
# http/https proxy
remote = globax
port = 127.0.0.1:3128
service_int = 0
[local]
# socks 4/4a/5 proxy
remote = globax
port = 127.0.0.1:1080
service_int = 2
…

Тебе нужно изменить параметры server, login и passwd. Их значения можно уточнить у спутникового провайдера. После редактирования конфига следует настроить ротацию журналов Globax. Журналы довольно объемные и их нужно периодически чистить, иначе они сожрут все оставшееся место на диске. Создай файл /etc/logrotate.d/globax.logrotate следующего содержания:

$ sudo vim /etc/logr otate.d/globax.logr otate
/var/log/globax.log {
rotate 7
missingok
compress
delaycompress
notifempty
copytruncate
}

Далее настраиваем файл /etc/channels.conf (в моем случае он выглядит так: «sputnik0:11595: v:0:29270:0:0:0») и выполняем команду:

$ sudo szap -c /etc/channels.conf -n 1 — x
reading channels from file '/etc/channels.
conf'
zapping to 1 'sputnik0':
sat 0, frequency = 11595 MHz V, symbolrate
29270000, vpid = 0x1040, apid = 0x1040
using '/dev/dvb/adapter0/frontend0' and '/
dev/dvb/adapter0/demux0'
…

Отсюда видно следующее: частота — 11595, поляризация — V, символьная скорость — 29270 (значение symbolrate нужно разделить на 1000). Нам осталось создать сценарий, настраивающий DVB-карту и запускающий Globax:

$ sudo vim /etc/init .d/dvbd
#!/bin/sh
# Параметры нужно уточнить у провайдера
IP="XXX.XXX.XXX.XXX"
MAC="XX:XX:XX:XX:XX:XX"
PID="0000"
# Указываем абсолютные пути к бинарику и кон-
фигам
GLOBAX="/usr/local/sbin/globax"
GLOBAX_CONF="/etc/globax.conf"
CHANNELS="/etc/channels.conf"
# Даем команды на старт
case "$1" in
start)
echo "starting 'basename $0'..."
szap -c $CHANNELS -n 1 -x
dvbnet -p $PID
ifconfig dvb0_0 $IP
ifconfig dvb0_0 hw ether $MAC
echo 0 > /proc/sys/net/ipv4/conf/dvb0_0/rp_filter
$GLOBAX $GLOBAX_CONF
sleep 2
kill 'ps ax|grep ${GLOBAX}|head -n +1|awk '{print
$1}' '
;;
…

Делаем скрипт исполняемым, устанавливаем его в автозагрузку и запускаем:

$ sudo chmod +x /etc/init.d/dvbd
$ sudo update-rc.d dvbd start 99 S .
$ sudo invoke-rc.d dvbd start

Осталось сконфигурировать сетевые программы на использование http/socks прокси (а не имеющие таких настроек — соксифицировать с помощью tsocks) и настроить «наземный» канал (если ты этого еще не сделал) с помощью утилиты pppconfig.

Вместо заключения

«Рыбалка» позволяет загружать приличные объемы данных. Конечно, придется лить все подряд, а не то, что хочется, но это лучше, чем вообще ничего. Что же касается асинхронного спутникового интернета, то учти, что у приведенного решения есть одна неприятная особенность. Некоторые программы будут требовать локального разрешения доменных имен, а для этого нужно по «наземному» каналу отправить запрос DNS-серверу. При GPRS-соединении этот канал очень дорогой, поэтому, чем реже мы его используем, тем лучше. Чтобы минимизировать его использование, желательно установить и настроить кэширующий DNS-сервер. Также рекомендую установить прокси-сервер Squid для кэширования Web-трафика. Желаю хорошего улова!

Содержание