linux @ 15 Июль 2008, “2 Comments”
В одной из предыдущих статей мы рассматривали использование для получения необходимого текста запроса утилиту Wireshark.
Сегодня мы рассмотрим работу с утилитой tcpdump, которая позволит нам получить запрос такого же типа, как и в той статье. В итоге мы будем иметь готовый скрипт, в котором достаточно будет запустить торрент-клиент, указать сколько мегабайт рейтинга хотите получать после каждой отработки скрипта
Запускаем tcpdump, чтобы получить нужные пакеты:
Для Вашего трекера port и host могут отличаться.
Давайте подробно рассмотрим, что же это мы такое запустили:
-i eth0 - этот ключ указывает на прослушиваемый сетевой интерфейс.
-A - этот ключ отвечает за вывод содержимого пакета в ASCII.
-q - отвечает за сокращённый вывод заголовка пакета.
-s 1024 - указывает какой максимальный размер заголовка будет сохраняться.
В итоге в файле dump.txt мы получим всё текущее сообщение между программой и трекером, однако нам все тексты запросов совершенно не нужны, нам нужен один запрос на базе которого мы будем имитировать отправление данных трекеру. Поэтому нам необходимо отфильровать лишь один заголовок:
Добавляем в конец файла Connection: Keep-Alive, чтобы сервер оставался готовым к приему второго пакета:
Поскольку запрос не всегда получается единообразным, то будем делать подготовку двух запросов - стартового и конечного.
Стартовый запрос из полученного текста делаем так:
То есть, если встречается в полученном тексте stopped, то есть сигнал остановки работы - меняем на started.
Для конечного запроса делаем:
Где заменяем 20971520 на нужное вам число байт в рейтинг.
Всё это можно увязать один скрипт, тут я Вам пожалуй ничего советовать не буду каждый делает так, как ему удобнее. Можно например запускать tcpdump с ограничением на количество пакетов.
Полностью автоматизированный скрипт тоже можно сделать, читайте man bash
Сегодня мы рассмотрим работу с утилитой 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
