Tag: bash

linux @ 15 Июль 2008, “2 Comments”
В одной из предыдущих статей по накрутке рейтинга на торрент трекерах мы рассматривали использование для получения необходимого текста запроса утилиту Wireshark.
Сегодня мы рассмотрим работу с утилитой tcpdump, которая позволит нам получить запрос такого же типа, как и в той статье. В итоге мы будем иметь готовый скрипт, в котором достаточно будет запустить торрент-клиент, указать сколько мегабайт рейтинга хотите получать после каждой отработки скрипта
Запускаем tcpdump, чтобы получить нужные пакеты:
sudo tcpdump -i eth0 -A -q -s 1024 'port 80 and host bt.torrents.ru' > dump.txt
Для Вашего трекера port и host могут отличаться.
Давайте подробно рассмотрим, что же это мы такое запустили:
-i eth0 - этот ключ указывает на прослушиваемый сетевой интерфейс.
-A - этот ключ отвечает за вывод содержимого пакета в ASCII.
-q - отвечает за сокращённый вывод заголовка пакета.
-s 1024 - указывает какой максимальный размер заголовка будет сохраняться.

В итоге в файле dump.txt мы получим всё текущее сообщение между программой и трекером, однако нам все тексты запросов совершенно не нужны, нам нужен один запрос на базе которого мы будем имитировать отправление данных трекеру. Поэтому нам необходимо отфильровать лишь один заголовок:
grep GET -A 5 ./dump.txt|head -n 6|sed 's/^.*GET/GET/g' > dump2.txt
Добавляем в конец файла Connection: Keep-Alive, чтобы сервер оставался готовым к приему второго пакета:
echo Connection: Keep-Alive >> dump2.txt
Поскольку запрос не всегда получается единообразным, то будем делать подготовку двух запросов - стартового и конечного.
Стартовый запрос из полученного текста делаем так:
cat dump2.txt | sed s/stopped/started/g > start.txt
То есть, если встречается в полученном тексте stopped, то есть сигнал остановки работы - меняем на started.
Для конечного запроса делаем:
cat dump2.txt | sed s/started/stopped/g | sed s/downloaded=0/downloaded=20971520/g > stop.txt
Где заменяем 20971520 на нужное вам число байт в рейтинг.
Всё это можно увязать один скрипт, тут я Вам пожалуй ничего советовать не буду каждый делает так, как ему удобнее. Можно например запускать tcpdump с ограничением на количество пакетов.
Полностью автоматизированный скрипт тоже можно сделать, читайте man bash
linux @ 20 Июнь 2008, Обсудить
Озадачился тут вопросом, а можно ли как то убрать надоедающие иногда: user@host:~$, оказывается можно:
Открываем ~/.bashrc и ищем следующие строки:
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

Всем заменяем строки PS1='...' на PS1='${debian_chroot:+($debian_chroot)}:\W\$ '
Это даст следующий вывод инициализации строки:
:~$ cd torrents/
:torrents$ cd House\ M.D.\ Season\ III/
:House M.D. Season III$

То есть будет показываться только текущая директория.
Есть и другие варианты форматирования, которые могут Вам пригодится:

\d Дата в формате "День недели Месяц Число"
\h Имя машины, вплоть до первой точки, если точки нет, то аналогично \H
\H Имя машины
\n Новая строка
\t Текущее время в 24-часовом формате HH:MM:SS
\T Текущее время в 12-часовом формате HH:MM:SS
\@ Текущее время в 12-часовом формате am/pm
\A Текущее время в 24-часовом формате HH:MM
\u Имя текущего пользователя
\v Версия bash (например, 2.00)
\V Версия bash с патчами (например, 2.00.0)
\w Текущая полная рабочая директория, например: ~/some/directory/path
\W Текущая рабочая директория, например: path
\! Номер команды в bash_history
\# Номер команды в текущем сеансе

Просто добавьте то, что нужно между PS1='${debian_chroot:+($debian_chroot)} и \$ '
← + Ctrl + →