Добро пожаловать на страницу SpeakFreely для Windows!

SpeakFreely через Tor - теперь это возможно!      Скачать: spfr72_tcp

Описание:

SpeakFreely для Windows - бесплатная утилита для Интернет-телефонии, которая обеспечивает высокое качество звука, шифрование военного класса (SDES и др.), а также совместимость с SpeakFreely для Unix и с другими RTP-совместимыми приложенями. Это пионер «старых» технологий, которые незаслуженно забыты. По многочисленным просьбам пользователей я изучил исходный код SpeakFreely и сделал патч, позволяющий выполнять звонок через Tor, как это делает TORFone.

Проблемы:

Несмотря на успешный результат, начну с вопросов, оставшихся открытыми:

  1. Для патча я использовал более старую версию 7.2 а не последнюю 7.6 Это получилось случайно: у меня в наличии сначала была более ранняя версия. Кроме того, исходные коды версии 7.2 представлены в виде проекта для Visual C++ 6.0, которая уже была установлена на моем компьютере для предыдущей работы с PGPFone, в то время как исходные коды версии 7.6 требовали Visual Studio 7.0. Это не является проблемой и легко можно внести изменения в 7.6. Я сделаю это позже, если у пользователей будет интерес к этому. Но пока что имеем только лишь пропатченную версию 7.2, которая не поддерживает AES - шифрование, голосовой кодек CELP, адаптивный голосовой буфер и работу с PGP. В остальном данная версия полностью совместима с оригинальной версией 7.6 в обычном (не TCP) режиме.
  2. Процедура установки TCP-соединения c клиентом и с Тor, инициализация Tor и установка соединения через Tor выполняются синхронно в основном потоке, вызывая зависание программы на время установки соединения. Особенно неприятна ситуация, когда указанный в настройках SOCKS5 адрес:порт существуют, но не являются SOCKS5. В этом случае требуется снятие задачи из диспетчера. Также попытка соединения с несуществующим скрытым сервисом самостоятельно завершается только через через минуту, на протяжении которой SpeakFreely не отвечает. Конечно, это не украшает патч, но я не планировал делать окончательный релиз, имея целью только эксперимент, и я хотел сделать это как можно быстрее, получить и оценить результат. Если у пользователей будет интерес, я реализую асинхронные процедуры, нет проблем.
  3. Только одно соединение в одно и то же время можно установить в TCP режиме (входящее или исходящее). Ни чат, ни мультикаст, ни, конечно, бродкаст не поддерживаются. Теоретически можно реализовать множественные соединения в режиме ТСП, но на это потребуется определенное количество времени (С++ - это не Java !). Сейчас я не могу позволить себе это, так как имею другую работу и посвящаю этому проекту только немного свободного времени без никакой надежды на дотации и т.п.

Новые функции:

SpeakFreely хорошо работает через Tor, соединяясь со скрытым сервисом абонента. Можно использовать как встроенную поддержку socks5, так и перехват с помощью соксификаторов или Advor. Мне показалось, что cтабильность звука в режиме дуплекса чуть хуже по сравнению с TORFone (наверное, за счет другого алгоритма работы буфера), но в режиме PTT SpeakFreely работает через Tor чудесно!

Исходный код:

Исходный код SpeakFreely 7.2 с поддержкой TCP компилируются с помощью Visual C++ 6.0. Наиболее значимые изменения:

  1. Блокировано создание и использование UDP-сокетов в TCP-режиме. Используется один слушающий и один рабочий TCP-сокеты с отключенным алгоритмом Нагла. Адрес и порт слушающего сокета можно задавать вручную. Соединение выполняется через один порт (включая RTP через TCP: данные и контроль объединены в один поток).
  2. В начало каждого пакета добавлен заголовок 2 байта длины. Старший бит определяет тип пакета (0-дата, 1-контроль).
  3. Добавлена поддержка SOCKS5 для исходящего TCP-соединения. Добавлены звуковые уведомления об ошибке и завершении соединения.
  4. Блокированы все вызовы gethostbyname и gethostbyaddr в анонимном режиме.
  5. Добавлена возможность выбора пути к инициализационному файлу для обеспечения портабельности.
  6. Внесены авторские изменения в заголовок окна и информацию о версии программы.

Активация режима TCP:

SpeakFreely может работать через единственное TCP-соединение не зависимо от выбранного голосового протола. Для активации режима TCP установите флажок в меню Options -> Workarounds -> Network -> Use TCP-Transport. После этого необходимо перезапустить SpeakFreely. Также автоматически будет установлен флажок Use send () not sendto (). Для возврата в режим UDP необходимо по очереди снять оба флажка и снова перезапустить SpeakFreely.

Настройка socks5 и слушающего интерфейсов:

Перед использованием SpeakFreely в режиме TCP можно задать IP-адресс и порт слушающего TCP-интерфейса и IP-адрес и порт SOCKS5 прокси (Tor). Для этого нужно вручную отредактировать конфигурационный файл ‘speakfre.ini’, изменив параметры по умолчанию в разделе:
[Workarounds]
TCPListenAdr = 0.0.0.0:17447
SocksAdr = 127.0.0.1:9050

Внимание: последняя версия TBB теперь использует порт 9150. Уточните порт вашей версии Tor в файле ...\Tor Browser\Data\Tor\torrc. Откройте его с помощью WordPad и проверьте параметр SocksPort. Он должен совпадать с номером порта в параметре SocksAdr в файле ‘speakfre.ini’ ).

Уcтановка пути к ini файлу:

Теперь файл ‘speakfre.ini’ может находится в текущей папке SpeakFreely, в любой указанной папке или в папке Widnows (как в подлинной версии программы). По умолчанию этот файл находится в текущей папке (портабельный вариант). Если вы собираетесь запускать SpeakFreely с защищенного от записи носителя (например, с CD), то отредактируйте файл ‘spfloc.ini’ (он находится в текущей папке SpeakFreely). Значение параметра
Path = #
сохраняет файл ‘speakfre.ini’ в текущей папке. Можно отредактировать этот параметр вручную и указать полный путь, по которому будет сохраняться файл ‘speakfre.ini’. Пустой параметр, а также отсутствие файла ‘spfloc.ini’ в текущей папке определит местоположение файла ‘speakfre.ini’ в папке Windows.

Исходящие и входящие звонки:

Для установки исходящего соединения необходимо выполнить Connection -> New ... , и в открывшемся окне указать IP-адрес или доменное имя абонента. Если в начале адреса (имени) добавить символ $, то будет выполнено соединение через Tor, иначе домен будет разрешен обычным способом и будет выполнено прямое р2р соединение. Для соединения со скрытым сервисом абонента необходимо ввести его onion-адрес без http://, но с символом $ в начале. Как уже указано выше, процесс соединения выполняется синхронно и временно блокирует интерфейс пользователя. В случае отсутствия абонента или Tor прокси будет выдан трехтональный сигнал, а при разрыве связи абонентом или если абонент имеет другое соединение - стандартный сигнал "занято".

При входящем соединении появится окно с информацией об IP клиента. Я использовал фейковый IP 1.2.3.4 вместо localhost, чтобы SpeakFreely не активировала loopback-режим.

Данные о версии программы, передаваемые открытым текстом каждые 10 сек., могут быть заданы в параметре TCPNick в фале ‘speakfre.ini’. Это можно использовать для некоторого скрытия трафика SpeakFreely или для передачи своего ника, отображаемого в окне текущего соединения.

Также я уделил особое внимание ревизии исходного кода для устранения утечек DNS при установке исходящего и приеме входящего соединения в ТСР-режиме, за исключением установки прямого соединения с доменом. Но при других действиях пользователя я не могу этого гарантировать.

Использование с Tor Browser:

  1. Скачайте архив Tor Browser и распакуйте в папку.
  2. Скачайте архив SpeakFrealy и распакуйте в папку.
  3. Запустите Tor Browser и дождитесь подключения к сети Tor.
  4. После первого запуска создайте скрытый сервис: на панели Vidalia выберите Setup -> Servises -> +
    Введите параметры Virtual Port 127.0.0.1:17447 и Target 127.0.0.1:17447 и также укажите папку, в которой будет храниться секретный ключ. Скопируйте созданную onion-ссылку и используйте ее в качестве своего телефонного номера.
  5. Запустите SpeakFrealy. Теперь Вы можете принимать входящие звонки.
  6. Установите значение буфера для компенсации задержек (Options -> Jitter Compensations) 1/4 сек для не анонимного режима (прямое TCP соединение), 1 сек для режима односторонней анонимности (соединения через Tor), и 3 сек для режима двухсторонней анонимности (соединение со скрытым сервисом Tor).
  7. Для установки анонимного исходящего звонка выполните Connection -> New ... и введите onion-ссылку вашего абонента с символом $ в начале и номером порта после двоеточия ( например,
    $fjqiejvvem6fb26u.onion:17447
    ), после чего нажмите ОК и ожидайте соединение в течение 20-40 сек.
  8. Для установки соединения с односторонней анонимностью используйте доменное имя или IP-адрес c символом $ в начале и номером порта после двоеточия (например,
    $bob.dyndns.org:17447
    ), после чего нажмите ОК и ожидайте соединение в течение 10-20 сек.
  9. Для установки не анонимного соединения используйте доменное имя или IP-адрес с номером порта после двоеточия (например,
    123.45.67.89:17447
    ), после чего нажмите ОК и ожидайте соединение в течение 3-5 сек.

Использование с TorChat:

  1. Скачайте архив TorChat и распакуйте в папку.
  2. Откройте для редактирования файл ... \ torchat-windows \ bin \ Tor \ torrc.txt и непосредственно после строки
    HiddenServicePort 11009 127.0.0.1:11009
    добавьте новую строку
    HiddenServicePort 17447 127.0.0.1:17447
  3. Запустите TorChat. В случае первого запуска будет создан ваш идентификатор. Используйте его в качестве вашего телефонного номера SpeakFreely, добавив символ $ в начале и .onion:17447 в конце.
  4. Скачайте архив SpeakFreely и распакуйте в папку. Откройте файл 'speakfre.ini' и измените значение порта в параметре
    SocksAdr = 127.0.0.1:11109
  5. Запустите SpeakFrealy. Теперь Вы можете принимать входящие звонки и выполнять исходящие звонки, как описано выше.

Перехват с помощью AdvOR:

  • Скачайте архив AdvOR и распакуйте в папку.
  • Запустите AdvOR. Нажмите Connect и дождитесь соединеия с сетью Tor. При необходимости перезапустите AdvOR и повторите попытку подключения.
  • Скачайте SpeakFreely и распакуйте в папку.
  • На панели слева программы AdvOR выберите Intercept - Quick Start. Затем щелкните Run на панели справа и в файловом диалоге выберите Speakfre.exe в ее папке. AdvOR самостоятельно запустит SpeakFreely в режиме работы через сеть Tor.
  • Для выполнения исходящего соединения используйте IP-адрес, доменное имя или onion-ссылку БЕЗ символа $ в начале (как для режима прямого соединения), например
    fjqiejvvem6fb26u.onion:17447
    AdvOR перехватит соединение и направит поток данных через сеть Tor.

Contacts:

Вопросы, комментарии, сообщения об ошибках, идеи направляйте на электронный адрес проекта: torfone@ukr.net или на мой личный адрес: gegel <at> riseup <dot> net

 

speakfreely logo