Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.33.178] |
|
Сообщ.
#1
,
|
|
|
Доброденько.
Есть ли рабочие примеры, управления TOR-ом ? |
Сообщ.
#2
,
|
|
|
А какого рода управление нужно?
|
Сообщ.
#3
,
|
|
|
Меня интересует смена нима для текущего подключения главным образом.
Ну а в идеале конечно было бы неплохо иметь возможность полноценно общаться с тором и получать от него всю инфу. В Но он не работает, тк после tcp.SendCmd('AUTHENTICATE',-1); результат приходит 515 Чё делать то? Тор завожу так: Цитата "C:\Users\Userok\Desktop\BTor Browser\Browser\TorBrowser\Tor\tor.exe" --defaults-torrc "C:\Users\Userok\Desktop\BTor Browser\Browser\TorBrowser\Data\Tor\torrc-defaults" -f "C:\Users\Userok\Desktop\BTor Browser\Browser\TorBrowser\Data\Tor\torrc" DataDirectory "C:\Users\Userok\Desktop\BTor Browser\Browser\TorBrowser\Data\Tor" GeoIPFile "C:\Users\Userok\Desktop\BTor Browser\Browser\TorBrowser\Data\Tor\geoip" GeoIPv6File "C:\Users\Userok\Desktop\BTor Browser\Browser\TorBrowser\Data\Tor\geoip6" Не рабочий пример из интернетов: procedure TorChangeIP(AHost: string; APort: integer); const ErrMsg = 'Tor ChangeIP Error: '; var tcp: TIdTCPClient; begin tcp:=TIdTCPClient.Create(nil); try tcp.Host:=AHost; tcp.Port:=APort; tcp.Connect; try tcp.SendCmd('AUTHENTICATE',-1); if tcp.LastCmdResult.TextCode<>'250' then raise Exception.Create(ErrMsg+tcp.LastCmdResult.TextCode); tcp.SendCmd('SIGNAL NEWNYM',-1); if tcp.LastCmdResult.TextCode <>'250' then raise Exception.Create(ErrMsg+tcp.LastCmdResult.TextCode); finally tcp.Disconnect; end; finally tcp.Free; end; end; |
Сообщ.
#4
,
|
|
|
Так может в настройках тора надо аутентиф-ся. Можно поснифать, как общается с ним Видалия
|
Сообщ.
#5
,
|
|
|
Хорошо бы, только вот инструмента хорошего для этого нету, был когда-то appsniff хорошая штуковина, но на x64 не работает, а аналогов я не знаю, пробовал некоторые сниферы, но без результата.
|
Сообщ.
#6
,
|
|
|
Я в основном SmSniff юзаю, но можно и монстра WireShark попробовать
|
Сообщ.
#7
,
|
|
|
SmSniff - это снифер трафика сетевой карты, а нужен снифер между двумя локальными приложениями, как раз appsniff это умел делать, внедряясь в чужой процесс.
WireShark - давно как-то использовал, чё-то он мне своим недружественным фейсом вобще не понравился. |
Сообщ.
#8
,
|
|
|
Так все равно через сокеты, если не ловит обмен через локалхост - укажи в настройках внешний адрес вместо 127.0.0.1 и будет ловить
|
Сообщ.
#9
,
|
|
|
Всё, со всем разобрался всё работает.
|
Сообщ.
#10
,
|
|
|
Цитата Jiro @ Всё, со всем разобрался всё работает. Извиняюсь за некропост, но тем не менее не могли бы вы подсказать как именно решился вопрос ? У меня выдает вот такой выхлоп. ============== 13:56:08 Ошибка авторизации на порте управления: Authentication failed: Password did not match HashedControlPassword value from configuration. Maybe you tried a plain text password? If so, the standard requires that you put it in double quotes. ============== Скрытый текст // Обработка статуса TOR if (Exec <> 0) and (ExePID <> 0) then begin LogFileAdd('TOR_EXEC:' + IntToStr(Exec) + ' PID:' + IntToStr(ExePID) + ' SocksPort:' + IntToStr(Port) + ' ControlPort:' + IntToStr(ControlPort)); LogFileAdd('Ожидание готовности TOR: 5000'); Delay(5000); // Защитное время ожидания запуска // Подключение к порту управления begin AClient:= TIdTCPClient.Create(nil); try AClient.Host := '127.0.0.1'; AClient.Port := ControlPort; AClient.ConnectTimeout := 10000; // 10.0 sec AClient.ReadTimeout := 10000; // 10.0 sec AClient.Connect; try AClient.SendCmd ('AUTHENTICATE','16:E60A178AF69054FB6039E7FA8B207A89E20B9AE648BA765540187A558A\r\n'); LogFileAdd('TOR Вернул код ошибки: ' + AClient.LastCmdResult.Code); if AClient.LastCmdResult.Code = '250' then begin LogFileAdd('Авторизация на порте управления прошла успешно 250'); Result := True; end; except on E: Exception do begin LogFileAdd('Ошибка авторизации на порте управления: ' + E.Message); exit end; end; finally AClient.Free; end; end; Запускаю так: (paramstr(0), '--socksport ' + IntToStr(Port) + ' --controlport ' + IntToStr(ControlPort) + ' --hashedcontrolpassword 16:E60A178AF69054FB6039E7FA8B207A89E20B9AE648BA765540187A558A', @ABuffer[0]); Пробовал и просто пароль и в кавычках и 16-ричный хоть ты тресни не проходит авторизация и все. Хотел посмотреть как авторизуется Vidalia, но так и не смог найти подходящего инструмента, через Microsoft LoopBack Adapter не получается, там нет нужнго трафика. Может кто натолкнет на правильные мысли ? |
Сообщ.
#11
,
|
|
|
MasterBoy
я уже не помню что да как там с этим хэшем и авторизацией, просто в итоге пришёл к выводу, что проще на эту авторизацию забить и работать без неё. То есть просто запускать тор без параметра HashedControlPassword и его значения. Добавлено ну а далее можешь слать вские там newnymb и тд. |
Сообщ.
#12
,
|
|
|
Я вас понял, но это не решение вопроса, у меня получилось, для поддержания форума я поделюсь ответом.
Случайно натолкнулся в недрах интернета что на контрольный порт тора можно цепляться телнетом, введя ту последовательность которая реализована в коде моей программы я быстро получил отлуп аналогичный выхлопу исключения, потом пробовал различные варианты пока не получил код 250, и о да страйк ! AClient.SendCmd ('AUTHENTICATE "mypassword"'); запрос должен выполняться без запятой ! и пароль обязательно в кавычках (о чем и написано в выхлопе исключения) тема решена, профит. ====================== 15:44:42 TOR_EXEC:356 PID:4176 SocksPort:32207 ControlPort:32208 15:44:42 Ожидание готовности TOR: 5000 15:44:47 TOR Вернул код ошибки: 250 15:44:47 Авторизация на порте управления прошла успешно 250 ====================== Есть еще вопросы, уважаемый Jiro не могли бы вы подсказать как мне определить (какими командами через порт контрола) готовность тора к отправке трафика ? |
Сообщ.
#13
,
|
|
|
Цитата MasterBoy @ какими командами через порт контрола) готовность тора к отправке трафика ? Если не ошибаюсь то IdTCPClient1.SendCmd('GETINFO status/bootstrap-phase', -1); но возможно перед этим нужно ещё пульнуть команду TAKEOWNERSHIP. Вообще лучше поснифить, там всё точно покажется, чем снифить вопрос хороший ... я чем-то снифил, увы не помню чем. вроде использовал SockSniff от Nirsoft. ps: кстати если запускать тор без HashedControlPassword то всё равно нужно слать AUTHENTICATE но уже с параметром -1: IdTCPClient1.SendCmd('AUTHENTICATE',-1); |
Сообщ.
#14
,
|
|
|
Цитата Jiro @ Если не ошибаюсь то IdTCPClient1.SendCmd('GETINFO status/bootstrap-phase', -1); но возможно перед этим нужно ещё пульнуть команду TAKEOWNERSHIP. Огромное спасибо, отправив GETINFO status/bootstrap-phase я получил 250-status/bootstrap-phase=NOTICE BOOTSTRAP PROGRESS=100 TAG=done SUMMARY="Done" - то что нужно ! В самое яблочко. TAKEOWNERSHIP отправлять не требуется. Еще раз и спасибо добрый человек. |