0xcafebabe -- per aspera ad astra

Dokument pobrany z: http://www.anadoxin.org/blog/node/9

Brud i ryba -- dirt + FiSH
Tagi:  •    •    •  

Jeśli denerwuje cię support FiSH'a dla XChat'a, a nie chce ci się kompilować plugina do irssi, to może powinieneś zainteresować się dirtem. Dirt to jest proxy do IRC które obsługuje kodowanie zgodne z FiSHem, dzięki czemu można korzystać z jakiegokolwiek klienta, aby móc komunikować się w bezpieczny sposób. Z takim narzędziem nie ma znaczenia, czy do Twojego klienta istnieje plugin FiSH'a czy nie, wszystko jest filtrowane przez proxy – to, co dostajesz jest rozkodowane, a to, co wysyłasz jest kodowane. Proste i użyteczne.

Jakoże dirt jest dopiero w wersji 1.0 alfa, kilka funkcji jeszcze nie ma, kilka prawdopodobnie nie działa jeszcze tak jak powinno. Nie spotkałem się jeszcze z żadnym bugiem (korzystam z niego dopiero parę godzin), ale jedno z głównych ograniczeń to brak obsługi kodowania/dekodowania topic'a kanału. Domyślnie topic będzie ustawiany w postaci zdekodowanej przez cały czas, co jest oczywiście niedopuszczalne i ogólnie insecure ;), oprócz tego nie będzie widać zakodowanych topiców. Postanowiłem więc coś na ten temat zaradzić. ;)

Mój patch którego możesz pobrać na dole tego posta naprawia ten problem w prosty sposób – przy włączonym kodowaniu (/encon) topic przy ustawianiu będzie najpierw kodowany, natomiast przy wyłączonym kodowaniu (/encoff) topic będzie ustawiany w postaci „czystej”.

Instalacja

Aby zainstalować patcha, potrzebne ci będą przede wszystkim źródła dirt'a. Rozpakuj źródła do jakiegoś katalogu (do rozpakowywania polecam atool'a):

  1. antek@redrazor ~/dev/source $ aunpack dirt-1.0.0a25-source.zip
  2. (...)
  3. antek@redrazor ~/dev/source $ cd dirt-1.0.0a25-source
  4. antek@redrazor ~/dev/source/dirt-1.0.0a25-source $

Następny krok to ściągnięcie mojego patcha (link na końcu posta) i przegranie go do katalogu z plikami .cpp i .h. Teraz można zaaplikować patcha:

  1. antek@redrazor ~/dev/source/dirt-1.0.0a25-source $ patch -b -p0 < dirt-topic-a1.patch
  2. patching file proxy.cpp

Przełącznik -b spowoduje stworzenie kopii patchowanego pliku (w tym przypadku to jest proxy.cpp). Jeśli wystąpi jakiś błąd, oryginalny plik będzie znajdował się w pliku proxy.cpp.orig. Po spatchowaniu proxy.cpp można skompilować program wywołując:

  1. antek@redrazor ~/dev/source/dirt-1.0.0a25-source $ make unix

co spowoduje stworzenie programu dirt. Niekompletna dokumentacja może utrudnić konfigurację proxy, dlatego wspomnę że dirt korzysta z portu 1088, na którym czeka na połączenia SOCKS4, oraz z portu 6666 na który można się łączyć przy pomocy klientów irc bez obsługi proxy SOCKS. Dla przykładu, XChat posiada support dla SOCKS (Settings->Preferences->Network setup).

Nie udało mi się zmusić irssi do skorzystania z proxy SOCKS, ale wystarczyło połączyć się z localhost'em na porcie 6666 aby otrzymać komunikat:

  1. 22:40 -!- Dirt 1.0.0 alpha 25
  2. 22:40 -!- Use /dirt jump [server] [port] to connect to IRC

co utwierdziło mnie w przekonaniu, że proxy działa wyśmienicie. Miłego szyfrowania i nie dajcie się złapać. ;)

Patch do ściągnięcia stąd.
Nowsza wersja patcha dostępna jest w nowszym poście. (link). Przed ściągnięciem nowszej wersji sprawdź najpierw czy nie istnieje przypadkiem jeszcze nowsza wersja. ;) -- a1.