Tor newnym - автоматична зміна ip в tor

Tor newnym - автоматична зміна ip в tor

Зміна Німа / IP в TOR за допомогою telnet

## The port on which Tor will listen for local connections from Tor
## controller applications, as documented in control-spec.txt.
ControlPort 9051

## If you enable the controlport, be sure to enable one of these
## authentication methods, to prevent attackers from accessing it.
HashedControlPassword 16: B55A3F6B52F34E55609F6676DDBCEF4FD2BA7E318D9AF45AF878DB8A30
#CookieAuthentication 1
## Включення CookieAuthentication змусить tor створювати службовий файл,
## а підключатися на керуючий порт зможуть тільки процеси, які знають вміст цього файлу.

Хеш-сума пароля отримують у такий спосіб: необхідно виконати команду tor --hash-password 'new_tor_password' - у відповідь отримаємо згенерований хеш-код пароля

ibm: $ telnet 127.0.0.1 9051
Trying 127.0.0.1.
Connected to 127.0.0.1.
Escape character is '^]'.
AUTHENTICATE "new_tor_password"
250 OK
signal NEWNYM
250 OK
quit

А в разі використання Tor старше, ніж 0.2.3.1-alpha, із застосуванням SETEVENTS SIGNAL. зміна ланцюжка серверів може виглядати так:

ibm: $ telnet 127.0.0.1 9051
Trying 127.0.0.1.
Connected to 127.0.0.1.
Escape character is '^]'.
AUTHENTICATE "new_tor_password"
250 OK
SETEVENTS SIGNAL
250 OK
SIGNAL NEWNYM
250 OK
650 SIGNAL NEWNYM
quit

Рядок 650 SIGNAL NEWNYM якраз і повідомляє про успішне завершення зміни сервера.

Shell скрипт для автоматичної зміни IP в TOR

Звичайно, постійно руками лазити і міняти «ним» - не дуже цікаво. Спростити і автоматизувати цей процес можна за допомогою скрипта, виконання якого в подальшому повісити наприклад на alias для bash або кнопку-ярлик в Gnome. Скрипт використовує утиліту для автоматизації інтерактивних додатків expect (я скористався empty-expect щоб не ставити ще й tcl ж):

#! / Bin / sh
# Автоматична зміна Німа в TOR
empty -f -i torin -o torout telnet 127.0.0.1 9051
empty -s -o torin "AUTHENTICATE" new_tor_password "\ n"
empty -s -o torin "signal NEWNYM \ n"
empty -s -o torin "quit \ n"

Perl скрипти для автоматичної зміни IP в TOR

Такий же скрипт можна реалізувати на Perl з використанням модуля Expect (оскільки особисто у мене ні цей модуль, ні утиліта empty в системі встановлені не були - особливої ​​різниці, що поставити, немає):

# Запуск команди в процесі-нащадку
my $ exp = Expect -> spawn # 40; "Telnet 127.0.0.1 9051" # 41; ;

# Таймаут на ВІДСУТНІСТЬ дій = 3 сек.
$ Exp -> expect # 40; 3.
# 91; qr / Escape \ s char. * \ n / x => sub # 123;
$ Exp -> send # 40; 'AUTHENTICATE "new_tor_password"'. "\ N" # 41; ;
exp_continue;
# 125 ;.
# 93 ;.

# 91; qr / 250 \ s OK / x => sub # 123;
$ Exp -> send # 40; "Signal NEWNYM \ n" # 41; ;
$ Exp -> send # 40; "Quit \ n" # 41; ;
exp_continue;
# 125 ;.
# 93 ;.
# 41; ;

Аналогічним чином можна скористатися наприклад модулем Net :: Telnet. який знову ж таки не є core-модулем Perl, - він не тягне за собою ніяких залежностей, в відрізняє від Expect:

my $ tnet = Net. Telnet -> new # 40;
# Host вказувати не обов'язково
# За умовчанням ісп. localhost
Host => '127.0.0.1'.
Port => '9051'.
Timeout => 3.

# Варіант перший - використовувати методи print
# (Для відправки команд) і waitfor (для отримання
# Відповідей).
$ Tnet -> print # 40; q / AUTHENTICATE "new_tor_password" / # 41; ;
$ Tnet -> waitfor # 40; '/ ^ 250 \ s OK $ / x' # 41; ;
$ Tnet -> print # 40; q / signal NEWNYM / # 41; ;
$ Tnet -> waitfor # 40; '/ 250 \ s OK $ / x' # 41; ;
$ Tnet -> print # 40; q / quit / # 41; ;
$ Tnet -> waitfor # 40; '/ 250 \ s closing \ s connection $ / x' # 41; ;

# Варіант другий - передавати команди кожного разу,
# Як отримано запрошення на введення (prompt).
# Prompt можна визначити при створенні $ tnet
$ Tnet -> prompt # 40; '//' # 41; ;
$ Tnet -> cmd # 40; q / AUTHENTICATE "new_tor_password" / # 41; ;
$ Tnet -> cmd # 40; q / signal NEWNYM / # 41; ;
$ Tnet -> cmd # 40; q / quit / # 41; ;

Схожі статті