NR | SRC | NAZWA I STRUKTURA | OPIS |
1 | H | $BadPass |
Informacja o tym że autoryzacja nie powiodła się (hasło
przysłane poleceniem $MyPass nie jest poprawne).
Kierunek: hub -> klient Parametry: | |
1 | J,O,H | $ConnectToMe |
Kierunek: Parametry: |
2 | J | $Direction |
Kierunek: Parametry: |
3 | J | $FileLength |
Informacja o wielkości pliku, o który pytano poleceniem $Get (podczas bezpośredniego połączenia między klientami). Stąd klient ściągający dane, wie ile bajtów danych ma się spodziewać. Kierunek: klient -> klient Parametry: fileSize| |
4 | J,H | $ForceMove |
Żądanie przekierowania na innego huba. Można zrobić balansowanie obciążenia ( 2 huby i przekierowania w zależności od ilości udostępnionych danych, pory dnia, lub osiedla z którego klient się łączy ) Kierunek: hub -> klient Parametry: hubName| |
5 | J | $Get |
Prośba o ściągnięcie, lub dociągnięcie pliku (podczas bezpośredniego połączenia między klientami). Drugi klient powinien odpowiedzieć komendą $FileLength, po czym wysyłamy komendę $Send wyzwalającą transfer danych. Kierunek: klient -> klient Parametry: fileName$startByte| |
6 | J,O | $GetINFO |
Prośba o dane klienta. Hub analizuje pole nick
i przesyła komendę do konkretnego klienta.
Odbiorca powinien odpowiedzieć komendą $MyINFO. Kierunek: klient -> hub -> klient Parametry: nick senderNick| |
7 | J,O | $GetNickList | Prośba o przysłanie listy nicków podłączonych do huba.
Hub odpowiada poleceniem $NickList oraz $OpList. Kierunek: klient -> hub Parametry: | |
1 | O,H | $GetPass |
Prośba o autoryzcję (sprawdzanie prawa do nicka).
W odpowiedzi klient przysyła polecenie $MyPass z hasłem. Kierunek: hub -> klient Parametry: | |
8 | J,O | $Hello |
Informacja do wszystkich, że podłączył się nowy klient.
Klienci powinni odpowiedzieć komendą $MyINFO przesyłając mu informacje o sobie (J). Kierunek: hub -> all Parametry: nick| |
21 | H | $HubIsFull |
Wysyłane do klienta wtedy, gdy nie ma możliwości przekierowania, a hub jest już pełny. Kierunek: hub -> klient Parametry: | |
9 | J,H | $HubName |
Informacja wysyłana przez huba do dopiero co podłączonego klienta. Kierunek: hub -> klient Parametry: hubName| |
10 | J,O,H | $Key |
Odpowiedź klienta na polecenie $Lock (żądanie autentykacji). Klucz key jest wyliczany na podstawie algorytmu zaszytego w kliencie i pola salt przysłanego poleceniem $Lock. Kierunek: klient -> hub; klient <-> klient Parametry: key| |
1 | O,H | $Kick |
Karne rozłączenie od huba. Tylko admin ma takie prawo. Kierunek: klient -> hub Parametry: nick| |
11 | J,O,H | $Lock |
Żądanie autentykacji. Jest to zabezpieczenie utrudniające połączenie się do huba niekomercyjnym klientom.
Na nasze szczęście algorytm wyliczania klucza został już złamany. :) W odpowiedzi
klient powinien przysłać do
huba komendę $Key z wyliczonym na podstawie
salt kluczem.
Autentykacja jest przeprowadzana również podczas bezpośredniego
połączenia między klientami (sesja download) i to w obie strony.
Długość salt jest zmienna (conajmniej 3 bajty - w (H) długość jest losowana z przedziału 50-100, a znaki spomiędzy '%' - 'z'),
, natomiast privateKey nie jest w żadnym z analizowanych źródeł wykorzystywane.
Kierunek: hub -> klient; klient <-> klient Parametry: salt Pk=privateKey| |
1 | O,H | $LoggedIn |
Informacja o tym że autoryzacja powiodła się (hasło
przysłane poleceniem $MyPass jest poprawne) i użytkownik
został zalogowany na hubie.
Kierunek: hub -> klient Parametry: | |
12 | J | $MaxedOut |
Kierunek: Parametry: |
1 | O | $MultiSearch |
Kierunek: Parametry: |
13 | J,O | $MyINFO |
Informacja o sobie samym. Hub zapisuje sobie wszystkie parametry
i rozsyła to polecenie do pozostałych klientów
(dodając na początku $ALL - stąd wynika,
że istnieje też wersja $MyINFO ale adresowana do konkretnego
klienta). Kierunek: klient -> hub; hub -> all Parametry: nick description$ $connectionTypeF$email$sharedBytes$| (klient -> hub) $ALL nick description$ $connectionTypeF$email$sharedBytes$| (hub -> all) |
14 | J | $MyNick |
Informacja o nicku. Jest to pierwsze polecenie które jest wysyłane podczas bezpośredniego połączenia między klientami (sesja download). Kierunek: klient -> klient Parametry: nick| |
13 | O,H | $MyPass |
Odpowiedź na $GetPass czyli potwierdzenie prawa do nicka.
Jeśli hasło się zgadza, to hub rozsyła do wszystkich $Hello
z informacją, że jest nowy użytkownik.
Jeśli jest to użytkownik z prawami admina, to hub rozsyła
do wszystkich polecenia $LoggedIn oraz $Hello.
Jeśli hasło jest niepoprawne, następuje rozłączenie klienta (O), lub wysłanie komendy
$BadPass (H). Kierunek: klient -> hub Parametry: password| |
15 | J,O | $NickList |
Lista wszystkich nicków zalogowanych na hubie (bez rozróżnienia czy jest to admin, czy nie).
Jest to odpowiedź serwiera na komendę $GetNickList.
Zwracana lista nicków jest rozdzielona separatorem '$$'.
Użytkownik z prawami admina widzi dodatkowo użytkownika HubSecurity (jako pierwszego na zwracanej liście). Kierunek: hub -> klient Parametry: nick1$$nick2$$nick3| |
4 | O | $OpForceMove |
Żądanie przekierowania użytkownika z prawami admina na innego huba.
Trzeba by sprawdzić dokładnie to polecenie, bo jest ono potencjalnym 'słabym punktem'. ;)
i można by się pokusić o prawa admina na hubach ogólnopolskich... Kierunek: hub -> klient Parametry: hubName| |
16 | J,O | $OpList |
Lista adminów zalogowanych na hubie.
Jest to odpowiedź serwiera na komendę $GetNickList.
Zwracana lista nicków jest rozdzielona separatorem '$$'.
Użytkownik z prawami admina widzi dodatkowo użytkownika HubSecurity (jako pierwszego na liście). Kierunek: hub -> klient Parametry: nick1$$nick2$$nick3| |
17 | J | $Quit |
Eleganckie zakończenie połączenia. Hub usuwa nadawcę ze swojej listy, a następnie rozsyła polecenie $Quit do pozostałych klientów, żeby mogli również usunąć nadawcę ze swoich list. Kierunek: klient -> hub -> all Parametry: nick| |
18 | J,O,H | $RevConnectToMe |
Kierunek: Parametry: |
19 | J,O,H | $Search |
Wyszukiwanie pliku. Ze struktury wynika, że huby mogą przekazywać między sobą to polecenie. Kierunek: klient -> hub -> [hub] -> all Parametry: Hub:senderNick ifSize?ifLess?size?dataType?pattern| |
20 | J | $Send |
Polecenie wyzwalające potok danych podczas sesji download (między klientami). Wysyłane uprzednio polecenia $Get i $FileLength określają który plik jest przesyłany, od którego bajtu i jaka porcja danych jest transmitowana. Kierunek: klient -> klient Parametry: | |
21 | J,O,H | $SR |
Kierunek: Parametry: |
22 | J,H | $To |
Wysłanie wiadomości prywatnej ( na chacie DC ). Kierunek: klient -> hub -> klient Parametry: nick To: senderNick$<senderNick>message| |
23 | J,H | $ValidateNick |
Walidacja nicka. Wysyłana do huba zaraz po $Key
(czyli na początku połączenia).
Hub sprawdza czy nick nie jest już zajęty lub zabanowany. W nicku nie mogą wystąpić znaki ' ' oraz '$'.
Jeśli nick jest chroniony haslem to wysyłane jest polecenie
$GetPass po to by potwierdzić prawo do korzystania z nicka (O).
Hub rozsyła $Hello do wszystkich klientów informując ich,
że podłączył się nowy użytkownik (O). Kierunek: klient -> hub Parametry: nick| |
24 | J,H | $Version |
Informacja o wersji klienta. Nie ma w tej chwili żadnego zastosowania. Kierunek: klient -> hub Parametry: clientVersion| |