portal Michała Hanćkowiaka
Begin main content
Search · Index
No registered users in community Materiały
in last 10 minutes

SIK - tematy projektów

Uwagi do projektów/referatów:
1. każdy projekt wykonuje jedna osoba! (tzn nie ma projektów 2 lub więcej -osobowych)
2. referaty ZAWSZE muszą zawierać prezentację "na żywo" programu lub skryptu,
połączoną z objaśnieniem kodu i jak ten kod działa!
3. najlepiej skonsultować z prowadzącym treść referatu...

/// ciąg dalszy tematów projektów (10.2021) ///

Prj 1 "czat audio"
Chodzi o możliwość przekazywania strumienia audio między użytkownikami
w trybie halfduplex (tzn jeden nadaje - wielu słucha).
Obsługę dzwięku dostarcza pakiet "snack" (j. Tcl), jednak w tym zadaniu nie trzeba go używać;
chodzi tylko o to aby zapewnić, że w danej chwili "jeden nadaje a wielu słucha",
przy czym WYMAGA się aby cały czas była spełniona "zasada X":
    jeśli istnieje słuchający to musi istnieć nadający.
       (zasada ta wynika ze specyficznych cech pakietu snack...)
Oprogramowanie klienta powinno zawierać guzik "chcę nadawać",
który jest zielony gdy możemy mówić i czerwony gdy słuchamy...
W ramach tego prj należy wymyśleć sposób przetestowania czy zasada X jest spełniona...

Prj 2 "skalowalny serwer mp3"
Zaprogramuj serwer plików mp3 ...
1. klienci zwracają się do serwera z prośbą o przekazanie pliku mp3 o danej nazwie
    wcześniej mogą otrzymać listę plików wysyłając linie "lista\n" do serwera
2. może się zgłosić >1000 klientów równocześnie i nie powinno to popsuć serwera
3. serwer potrafi równocześnie wysyłać wiele plików mp3 (małymi kawałkami)
4. klienci mogą albo zapisywac przychdzący plik na dysku albo odgrywać go na bieżąco
    (odgrywać można pakietem snack; niekoniecznie...)
Sugestia: można ten serwer łatwo zaprogramować (jednowątkowo!!) w języku Tcl,
używając m.in. zdarzeń plikowych "writable" i trybu nieblokującego puts...

Prj 3 "telewizja internetowa"
Zbudować system telewizji internetowej składający sie z "serwera" z webkamerą (który transmituje obraz)
oraz wielu "klientów" połączonych z serwerem przy pomocy prot. tcp, otrzymujących klatki filmu...
Serwer powinien być JEDNO-wątkowy, a mimo to przystosowany do obsługi wielu klientów
używających połączeń o różnej przepustowości
(chodzi o odpowiednie zastosowanie zdarzeń plikowych i trybu blokującego/nieblok.)
Przykład jak odczytywać klatki filmu z webkamery pod linuxem (z pliku /dev/video) webkam.tcl

Prj 5 "streaming mp4 + guzik do przesuwania czasu"
możliwość oglądania filmów mp4, które znajdują się na serwerze;
możliwość przesuwania czasu w filmach (jak w odtwarzaczu DVD/VHS);
klientem pokazującym film może być program typu (g)xine lub odp. androidowy;
wskazówki: oprzeć się na prot http,
można użyć programów typu ffmpeg do transkodowania na żywo,
j. Tcl ma wszystkie potrzebne narzędzia do wykonania tego projektu,
(socket, open, close, read/puts/gets, fconfigure, fileevent, fcopy)
Uwaga: ten projekt jest nieco prosty więc trzeba go nieco poszerzyć,
może dodać 2 tryby pracy: transmisję filmu nad TCP (http) i nad UDP (rtp? co z klientem??)

Prj 6 "badanie topolopgii internetu"
głównie przy pomocy polecenia traceroute...

Prj 7 "aplikacje vic/vat bez multicastingu"
aplikacje mbone (vic,vat) służą do tworzenia telekonferencji audio/video;
w zasadzie wymagają one multicastingu (mc) do działania,
przy pomocy różnych sztuczek z prot UDP można uniknąć mc...

Prj 9 "symulatro NS-2; obsługa dodatkowych prot"
chodzi o protokoły: BGP, MPLS, wifi, gsm/gprs (do wyboru jeden!)
nie chodzi tu o zrobienie własnego rozszerzenia ns-2,
tylko o znalezienie i wypróbowanie istniejących...
patrz temat G ćwiczeń...

Prj 10 "TOR, adresy exit nodes, inne zastosowania, konfiguracja"
(siec tor - patrz temat D, opis(1))
Napisz program wyciągający informacje o węzłach exit sieci TOR;
adresy tych węzłów są widoczne dla serwerów do których się podłączamy za pośrednictwem tor-a
informacje o adresie ip można uzyskać przy pomocy usługi "whois"
musisz wymyśleć także sposób na zmuszenie sieci tor aby zmieniła Twoją tożsamość
..................
Dodatkowo podaj inne zastosowania sieci tor.
..................
Omów także szerzej konfigurację węzła sieci tor.

Prj 11 "puppy linux z iproute2"
chodzi o przygotowanie pliku .iso z puppy linux-em 5.0.0,
ze zmodyfikowanym kernelem, w taki sposób aby zawierał pełną obsługę iproute2,
czyli m.in. "kształtowanie ruchu sieciowego";
(uwaga: nie chodzi tylko o doinstalowanie polecenia "tc" !!!
należy także dokompilować różne moduły, ew. przekompilować cały kernel).

Druga część tego projektu: omówić wybrane zagadnienie związane z polecenim "tc",
np. kolejki typu CBQ...

Prj 13 "OAUTH"
uwierzytelnianie przez facebook-a, google-a;
omówić ten temat we wszystkich możliwych konfiguracjach,
dla aplikacji webowych, nie-webowych...
różnice między oauth v1 vs v2
plus prezentacja NA ŻYWO skryptów czy aplikacji

Prj 14 "SFTP, zdalne przetwarzanie plików"
Napisać bibl. w j. C pozwalającą łatwo przetwarzać zdalnie pliki
dostępne przez prot SFTP obsługiwany przez serwer sshd.
Przez przetwarzanie pliku rozumiem możliwość otwarcia pliku,
wykonywania zapisów i odczytów, oraz zmianę bieżącej pozycji w pliku.
Patrz: bibl. libssh2 oraz man ssh; man ssh_config; man sshd; man sshd_config; itp.
Dodatkowo należy zaimpl. możliwość zakładania blokady na fragment pliku,
czego podobno prot SFTP nie umożliwia...

Prj 15 "PKI, openssl, szersze omówienie"
Należy omówić i zaprezentować procedurę wystawiania certyfikatów SSL,
przy pomocy narzędzi dostępnych w OpenSSL (o ile to wystarczy);
ma to wykraczać poza to co jest robione w temacie D(2),
tzn nie chodzi tu jedynie o skrypt CA.pl;
uwzględnić łańcuch CA (CA root, CA_1, CA_2, ..., cert serwera);
jak stworzyć taki łańcuch zwany "łańcuchem zaufania" ??;
wyjaśnić dlaczego w zadaniu D.11b wystarczy podać cert "CA root"
(nie trzeba podawać cert pośrednich CA) i wszystko działa,
tj. uwierzytelnienie serwera się udaje ?!?!?!;
ustalić jaka jest właściwie rola opcji -cadir w pkg tls j. Tcl;
Materiały: -1-, -2-, -3-, intermediate CA, x.509, pkg j. Tcl "pki" (doc, pki-0.11.tar.gz)

Prj 16 "OpenSSL, libcrypto, nakładka dla j. Tcl lub innego"
Bibl. dyn. libcrypto.so zawiera wiele algorytmów kryptograficznych,
np. szyfry symetryczne: DES, blowfish, RC4, AES, ...
w ramach projektu należy przygotować nakładkę dla j. skryptowego na tę bibliotekę,
tzn wywoływać fun. z libcrypto i opakować je w proc/OOP;
w j. Tcl służą do tego celu pkg: ffidl (ffidl_bin.zip) lub critcl;
szczególnie istotne jest udostępnienie nowszych rozwiązań, np. alg. AES...
Ten prj dotyczy języków które NIE MAJĄ już takiego rozwiązania (python odpada!).

/// ciąg dalszy tematów projektów (10.2021) ///

uwaga: portal używa ciasteczek tylko do obsługi tzw. sesji...