Zacznę powoli od prostych i starych protokołów. Jednym z takich jest właśnie Quote Of The Day znany również pod nazwą RFC865 który według wikipedii ma zapewniać niekończący się strumień mądrości prosto z portu numer 17.

Tak właściwie, to nie wiem dlaczego powstał specjalny protokół i własny port dla tak banalnej usługi ale nie jest to teraz istotne bo i tak nikt tego nie używa.

Co ciekawe nie mogłem nawet znaleść oficjalnej paczki w repozytoriach debiana i slackware dla tego protokołu. W zasadzie jedyne co znalazłem to pozostałości po usłudze zwanej simptcp o, tutaj.

Znalazłem też dwa nadal działające serwery które udostępniają tą funkcjonalność źródło.

No tak, ale to już było a ja chcę się zająć implementacją tej usługi dla siebie. Oczywiste rozwiązanie to internetowy kotek - nc i fortune. Dzięki nim możemy bez problemu i w najłatwiejszy możliwy sposób zaimplementować ten protokół u siebie.

nc -l -p 17 -e /usr/games/fortune

Ale to by było zbyt proste :) Poza tym taka komenda to dość samobójcze podejście do problemu, ponieważ port 17 (a dokładniej każdy port < 1024) może obsługiwać tylko root co raczej nie jest bezpieczne. Co prawda nie ma pewnie żadnego exploitu na fortune ale i tak lepiej tego nie robić w ten sposób.

Poza tym to świetna okazja na odświerzenie wiedzy na temat linuxowych socketów i biblioteki do obsługi połączeń TCP.

Dlatego też napisałem własną, prostą wersję takiego programu - qotdd.

Nie jest to nic specjalnego, ale działa całkiem fajnie. Program w pewnym sensie działa jak proste proxy dla aplikacji fortune ale nie naraża systemu bo zrzuca uprawnienia zaraz po zajęciu portu.

Więcej na temat połączenia się z usługą możecie znaleść na stronie mojego mikrusa pod tym adresem uw515.mikr.us.