Kody serwera CCcam/OScam: Konfiguracja& Przewodnik po konfiguracji
\n\nKody serwera są podstawą uwierzytelniania peer-to-peer w CCcam i OScam. Jeśli konfigurujesz swoje pierwsze połączenie lub rozwiązujesz problem, dlaczego węzły nie akceptują twojego połączenia, zrozumienie, jak działają kody serwera, jest niezbędne. Ten przewodnik obejmuje prawdziwe szczegóły techniczne—dokładne ścieżki plików, polecenia, które faktycznie uruchomisz, oraz dlaczego rzeczy zawodzą, gdy tak się dzieje.
\n\nCzym są kody serwera w CCcam i OScam?
\n\nDefinicja i cel
\n\nKod serwera to kryptograficznie generowany token uwierzytelniający, który identyfikuje twoją instancję CCcam lub OScam dla zdalnych węzłów. Myśl o tym jak o odcisku palca maszyny—unikalnym, wrażliwym na czas i związanym z kluczem szyfrowania DES twojej instalacji.
\n\nKody serwera zastąpiły proste uwierzytelnianie za pomocą nazwy użytkownika/hasła, ponieważ są trudniejsze do złamania metodą brute force. Zamiast przesyłać dane uwierzytelniające przez sieć, sam kod dowodzi, że posiadasz instalację, nie ujawniając hasła. Węzeł weryfikuje, czy kod pasuje do oczekiwanego identyfikatora węzła, a połączenie jest akceptowane lub odrzucane w milisekundach.
\n\nRóżnica między kodami serwera CCcam i OScam
\n\nOba systemy używają generacji kodów opartej na DES, ale implementują to inaczej. Kody CCcam są generowane przez sam binarny plik CCcam przy użyciu własnego algorytmu związanego z wersją CCcam i identyfikatorem sprzętu twojego systemu. Kody OScam pochodzą z binarnego pliku oscam i używają innej implementacji DES, chociaż koncepcja jest identyczna.
\n\nPraktyczna różnica: kod serwera CCcam nie będzie działał jako kod OScam i odwrotnie. Nie możesz ich mieszać w tej samej konfiguracji. Jeśli używasz CCcam, wyciągasz i używasz kodów CCcam. Instalacja OScam? Otrzymujesz kody OScam z oscam.log.
\n\nJak kody serwera umożliwiają połączenia peer
\n\nGdy łączysz się z węzłem, oto co się dzieje. Twoja instancja wysyła swój kod serwera. Węzeł sprawdza go w swojej liście dozwolonych kodów. Jeśli pasuje do identyfikatora węzła w ich konfiguracji, połączenie się otwiera. Jeśli nie pasuje, połączenie jest odrzucane i rejestrowane jako niepowodzenie uwierzytelnienia.
\n\nDlatego kody serwera muszą być dokładne—pojedynczy uszkodzony znak i weryfikacja DES węzła zawodzi. Węzeł nie akceptuje częściowych dopasowań ani kodów "wystarczająco bliskich".
\n\nImplikacje bezpieczeństwa związane z udostępnianiem kodów serwera
\n\nKod serwera identyfikuje całą twoją instalację. Jeśli podzielisz się nim z węzłem, mogą się uwierzytelnić jako ty. Jeśli ten kod wycieknie publicznie lub trafi w nieufne ręce, ktokolwiek może podszyć się pod twój węzeł. Dlatego kody powinny być udostępniane tylko węzłom, które wyraźnie autoryzujesz.
\n\nZaleta: kody nie są trwałe. Zrestartuj CCcam lub OScam, a nowy kod zostanie wygenerowany. Stary kod staje się nieaktualny natychmiast. To sprawia, że kompromitacja kodu jest odzyskiwalna—nie jesteś uwięziony z naruszoną poświadczeniem jak hasło.
\n\nFormat i składnia kodu serwera CCcam
\n\nStandardowa struktura kodu CCcam
\n\nTypowy kod serwera CCcam wygląda tak (przykład zanonimizowany):
\n\nA1 B2 C3 D4 E5 F6 G7 H8 I9 J0 K1 L2 M3 N4 O5 P6
To 16 bajtów w formacie szesnastkowym. Cały kod zawsze ma 16 bajtów—nigdy krótszy, nigdy dłuższy. Każda para znaków to jeden bajt. Ta stała długość sprawia, że analizowanie jest niezawodne na różnych platformach.
\n\nKod jest generowany przez CCcam po szyfrowaniu DES klucza materiału twojego węzła. Ostateczne 16 bajtów to to, co jest wyświetlane i udostępniane innym. Nie zobaczysz nieszyfrowanego klucza—tylko szyfrowane wyjście.
\n\nID węzła i składniki klucza DES
\n\nZa kulisami, twoje ID węzła i klucz DES są łączone podczas generowania kodu. ID węzła to numeryczny identyfikator, który konfigurujesz (lub taki, który jest automatycznie przypisywany). Klucz DES pochodzi z twojej instalacji—zwykle jest to kombinacja wersji binarnej, adresu MAC systemu i innych identyfikatorów sprzętowych na urządzeniach ARM.
\n\nDlatego kody różnią się między maszynami. Jeśli skopiujesz swój plik binarny CCcam z jednego urządzenia na drugie, otrzymasz różne kody, ponieważ podpisy sprzętowe są różne. Szyfrowanie DES produkuje różne wyjście dla różnych wejść.
\n\nObliczanie i walidacja sumy kontrolnej
\n\nCCcam nie publikuje swojego dokładnego algorytmu sumy kontrolnej, ale kod jest walidowany przez ponowne obliczenie. Gdy peer otrzymuje twój kod, wykonuje tę samą operację DES po swojej stronie, używając ID węzła, które podałeś. Jeśli ich wyjście zgadza się z twoim, uwierzytelnienie się powiodło. Jeśli nie, połączenie jest odrzucane.
\n\nDlatego synchronizacja czasu ma znaczenie. Niektóre wersje CCcam włączają znacznik czasu do obliczeń DES. Jeśli zegar systemowy jest bardzo niedokładny, suma kontrolna peera nie będzie się zgadzać z twoją.
\n\nOdczytywanie wyjścia kodu z logów CCcam
\n\nTwój kod serwera CCcam jest rejestrowany, gdy usługa się uruchamia. Sprawdź/tmp/cccam.log na większości instalacji Linux:
grep "kod serwera" /tmp/cccam.log
Zobaczysz coś takiego:
\n\n18:45:32 CCcam uruchomiony
18:45:35 Mój kod to: A1 B2 C3 D4 E5 F6 G7 H8 I9 J0 K1 L2 M3 N4 O5 P6
Niektóre wersje logują to jako "Kod węzła" lub po prostu "kod to". Dokładne sformułowanie różni się w zależności od wersji CCcam. Ważna część: 16 bajtów szesnastkowych w sekwencji.
\n\nJeśli nie widzisz linii z kodem w logu, to albo CCcam nie uruchomił się poprawnie, albo log jest obrócony i stary. Uruchom ponownie usługę i obserwuj wyjście logu w czasie rzeczywistym.
\n\nWygasanie kodu i cykle odświeżania
\n\nKody CCcam nie mają ustalonego terminu ważności. Są statyczne, dopóki nie uruchomisz ponownie usługi. Jednak niektóre kody serwera zawierają komponent czasowy, który partnerzy mogą weryfikować. Jeśli zegar systemowy znacznie się rozjeżdża, partner może zacząć odrzucać twój kod, nawet jeśli nie uruchomiłeś ponownie.
\n\nPonowne uruchomienie CCcam wymusza regenerację kodu. Nowy kod natychmiast unieważnia stary. Żaden partner nie zaakceptuje starego kodu, gdy twoja usługa wróci online.
\n\nNie ma ręcznego polecenia "odśwież kod". Możesz albo ponownie uruchomić usługę, albo poczekać, aż skonfigurowany interwał odświeżania kodu (jeśli twoja wersja to wspiera - większość nie).
\n\nGenerowanie i pobieranie kodów serwera
\n\nEkstrakcja kodu z CCcam za pomocą Telnet (Port 16001)
\n\nNajszybszym sposobem na uzyskanie kodu serwera jest telnetowanie do portu zarządzania CCcam. Domyślny port to 16001:
\n\ntelnet localhost 16001
Zobaczysz monit. Wpisz:
kod
Odpowiedź to twój aktualny kod serwera. Ta metoda działa nawet jeśli plik dziennika jest brakujący lub obrócony. To najpewniejszy sposób na weryfikację twojego kodu w tej chwili.
Jeśli telnet wygasa, upewnij się, że CCcam rzeczywiście działa i port nie jest zablokowany przez zaporę. W przypadku konfiguracji Docker lub kontenerowych upewnij się, że port 16001 jest poprawnie mapowany.
Znalezienie kodu w lokalizacji pliku oscam.log OScam
OScam zapisuje swój kod w pliku oscam.log. Ścieżki różnią się w zależności od instalacji, ale typowe lokalizacje to:
/var/etc/oscam/oscam.log
/etc/oscam/oscam.log
/tmp/oscam.log
Szukaj linii z kodem:
grep -i "kod" /var/etc/oscam/oscam.log | tail -20
Szukaj linii zawierającej "kod to" lub "kod węzła" po którym następuje 16 bajtów szesnastkowych. OScam zazwyczaj loguje to raz przy uruchomieniu:
[oscam] Mój kod to: 12 34 56 78 9A BC DE F0 11 22 33 44 55 66 77 88
Jeśli oscam.log nie istnieje lub jest pusty, OScam może nie logować poprawnie. Sprawdź, czy użytkownik oscam ma uprawnienia do zapisu w katalogu dziennika. Uruchom ponownie OScam i natychmiast przeglądaj dziennik, aby uchwycić wiadomość startową.
Generowanie nowych kodów poprzez ponowne uruchomienie vs. metody ręczne
Uruchom ponownie usługę:
systemctl restart CCcam
lubsystemctl restart oscam
Obserwuj logi natychmiast po:
\n\ntail -f /tmp/cccam.log
lubtail -f /var/etc/oscam/oscam.log
Zobaczysz nowy kod w ciągu kilku sekund. Nie ma ręcznej komendy generowania kodu. Program binarny generuje go automatycznie przy uruchomieniu, odczytując Twój identyfikator węzła, informacje o sprzęcie i zegar systemowy.
\n\nJeśli potrzebujesz nowego kodu, ale nie chcesz przerywać usługi, niektóre konfiguracje używają menedżerów procesów lub klastrowania, które pozwalają na łagodne restarty. Ale wynik zawsze jest taki sam: nowy restart, nowy kod.
\n\nNarzędzia do analizy i walidacji kodu
\n\nMożesz zweryfikować format kodu serwera bez łączenia się z rówieśnikami. Ważny kod to zawsze:
\n\n- \n
- 16 bajtów (32 znaki szesnastkowe) \n
- Tylko szesnastkowe (0-9, A-F) \n
- Typowo oddzielone spacjami (np. AA BB CC DD...) lub ciągłe (AABBCCDD...) \n
Użyj grep z regex, aby zweryfikować:
\n\necho "A1 B2 C3 D4 E5 F6 G7 H8 I9 J0 K1 L2 M3 N4 O5 P6" | grep -iE '^([0-9A-F]{2} ){15}[0-9A-F]{2}$'
Jeśli wzór pasuje, format jest ważny. To nie weryfikuje, czy kod jest kryptograficznie poprawny, tylko że jest poprawnie sformatowany.
\n\nRóżnice w generowaniu kodu między platformami (Linux/ARM/Enigma2)
\n\nBinarne pliki CCcam są kompilowane dla różnych architektur: x86 Linux, ARM (popularny w dekoderach) oraz Enigma2 (własna wersja Linuxa). Każdy plik binarny generuje różne kody, nawet przy tym samym identyfikatorze węzła i zegarze, ponieważ podpis identyfikatora sprzętowego jest inny.
\n\nDlatego nie możesz skopiować kodu z dekodera Enigma2 na komputer z Linuxem i oczekiwać, że będzie działał. Sam plik binarny jest częścią obliczeń DES. Kod Enigma2 działa tylko na sprzęcie Enigma2 uruchamiającym tę konkretną wersję binarną.
\n\nJeśli migrujesz z jednej platformy na drugą (np. stary dekoder Enigma2 na serwer Linux), musisz uzyskać nowe kody z nowej platformy. Nie możesz ponownie użyć starych kodów.
\n\nKonfigurowanie kodów serwera w CCcam.cfg i oscam.conf
\n\nDodawanie kodów peer do składni CCcam.cfg
\n\nNie przechowujesz własnego kodu w CCcam.cfg. Zamiast tego przechowujesz kody swoich peerów. Oto struktura sekcji peer:
\n\n[peer]
\nhostname = peer.example.com
\nport = 16001
\ncode = A1 B2 C3 D4 E5 F6 G7 H8 I9 J0 K1 L2 M3 N4 O5 P6
\nnodeid = 0x12345678
Liniacode to miejsce, w którym umieszczasz kod serwera swojego peera.nodeid to to, co twój CCcam oczekuje, że peer zidentyfikuje. Gdy peer się łączy, wysyła swój kod. Twoja instancja weryfikuje, czy pasuje do nodeid i kodu, które skonfigurowałeś.
Wielu peerów potrzebuje wielu bloków [peer]:
\n\n[peer]
\nhostname = peer1.example.com
\nport = 16001
\ncode = AA BB CC DD EE FF 00 11 22 33 44 55 66 77 88 99
\nnodeid = 0x11111111
\n
\n[peer]
\nhostname = peer2.example.com
\nport = 16001
\ncode = 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 00
\nnodeid = 0x22222222
Zachowanie odstępów i wielkości liter ma znaczenie. Używaj wielkich liter w hex (lub małych - obie działają). Upewnij się, że kod ma dokładnie 16 bajtów z odpowiednimi odstępami, w przeciwnym razie nie uda się go sparsować.
\n\nKonfiguracja systemu kart OScam z kodami serwera
\n\nW pliku oscam.conf OScam kody serwera są odniesione w inny sposób. OScam używa deklaracji systemu kart:
\n\n[cccam]
\nport = 16001
\n
\n[reader]
\nlabel = remote_peer
\nprotocol = cccam
\ndevice = peer.example.com,16001
\ncode = A1 B2 C3 D4 E5 F6 G7 H8 I9 J0 K1 L2 M3 N4 O5 P6
\nnodeid = 0x12345678
Linia kodu w sekcji [reader] identyfikuje twojego peera. Gdy OScam się łączy, wysyła swój własny kod i oczekuje na otrzymanie kodu peera. Jeśli nie pasują do skonfigurowanych, połączenie się nie udaje.
\n\nWalidacja kodu OScam jest surowsza niż w niektórych wersjach CCcam. Białe znaki, wielkość liter i dokładny format mają znaczenie. Jeśli połączenie się nie uda, sprawdź, czy kod w oscam.conf pasuje znak po znaku do tego, co wysyła peer.
Konfiguracja portu (Domyślnie 16001, alternatywy 16002)
Port 16001 jest domyślnym portem dla połączeń peer CCcam. Niektóre konfiguracje używają 16002 jako alternatywy, ale wymaga to konfiguracji po obu stronach.
Aby użyć portu niebędącego domyślnym w CCcam.cfg:
[peer]
hostname = peer.example.com
port = 16002
code = A1 B2 C3 D4 E5 F6 G7 H8 I9 J0 K1 L2 M3 N4 O5 P6
nodeid = 0x12345678
Instancja peer'a musi również nasłuchiwać na porcie 16002. Jeśli peer nasłuchuje tylko na 16001, a próbujesz się z nim połączyć na 16002, połączenie zakończy się czasem oczekiwania.
Reguły zapory muszą zezwalać na port. Wiele dostawców usług internetowych domyślnie blokuje 16001. Jeśli nie możesz się połączyć, spróbuj sprawdzić, czy port jest osiągalny:
telnet peer.example.com 16001
Jeśli to zakończy się czasem oczekiwania, port prawdopodobnie jest zablokowany. Przełączenie na wyższy port (powyżej 50000) czasami omija filtry ISP, ale obie strony muszą zgodzić się na numer portu.
Ustawienia Bounce i Reshare z walidacją kodu
Kody serwera są weryfikowane przy każdym połączeniu, a nie tylko podczas początkowego uścisku dłoni. Ma to znaczenie dla konfiguracji bounce i reshare, gdzie Twój CCcam przekazuje połączenia przez wielu peerów.
W konfiguracji bounce:
[peer]
hostname = bounce.example.com
port = 16001
\nkod = 99 88 77 66 55 44 33 22 11 00 FF EE DD CC BB AA
\nid_węzła = 0x87654321
\nprzeskok = 1
Kod musi być poprawny dla każdego skoku. Jeśli kod węzła przeskokowego się zmieni (np. zrestartuje), twoje połączenie zakończy się niepowodzeniem, dopóki nie zaktualizujesz kodu w swojej konfiguracji. Dlatego monitorowanie logów w poszukiwaniu błędów uwierzytelniania jest kluczowe w konfiguracjach przeskokowych.
\n\nReshare (wiele kart, rozdzielonych do wielu węzłów) działa podobnie. Każde połączenie węzła wymaga ważnych kodów serwera.
\n\nTestowanie połączeń po wprowadzeniu kodu
\n\nPo dodaniu węzła z jego kodem serwera, natychmiast przetestuj połączenie:
\n\nsystemctl restart CCcam
\nsleep 5
\ntail -f /tmp/cccam.log | grep peer.example.com
Szukaj linii takiej jak:
\n\npołączono z peer.example.com:16001
\nuwierzytelniony dopasowany kod
Jeśli zobaczysz "uwierzytelnianie nie powiodło się" lub "niezgodność kodu", kod jest błędny lub węzeł go odrzucił. Sprawdź, czy kod dokładnie odpowiada temu, co węzeł ci wysłał.
\n\nW OScam sprawdź oscam.log:
\n\ntail -f /var/etc/oscam/oscam.log | grep "remote_peer"
Szukaj wiadomości "połączono" lub "uwierzytelnione". Błędy połączenia będą wyraźnie widoczne z znacznikami czasu.
\n\nRozwiązywanie problemów z kodami serwera
\n\nNiekompatybilność kodu i błędy połączenia
\n\nNajczęstszym problemem jest literówka w kodzie. Jeden błędny znak przerywa autoryzację. Zawsze kopiuj/wklej kody zamiast wpisywać je ręcznie. Jeśli musisz wpisać, użyj skryptu walidacji kodu, aby zweryfikować przed ponownym uruchomieniem usługi.
\n\nJeśli połączenie nie powiedzie się, wyodrębnij zarówno swój kod, jak i kod partnera i porównaj bajt po bajcie:
\n\necho "Twój kod: A1 B2 C3 D4 E5 F6 G7 H8 I9 J0 K1 L2 M3 N4 O5 P6"
\necho "Kod partnera: A1 B2 C3 D4 E5 F6 G7 H8 I9 J0 K1 L2 M3 N4 O5 P7"
Widzisz różnicę na końcu? P6 vs. P7. To jest niezgodność kodu. Partner odrzuci połączenie.
\n\nWygasłe lub przestarzałe kody
\n\nKody technicznie nie są "wygasłe" w taki sposób, jak może być hasło. Jednak jeśli partner ponownie uruchomi swoją usługę, ich kod się zmienia. Nie dowiesz się o tym, chyba że się z Tobą skontaktują. Twoja konfiguracja nadal ma stary kod, więc połączenia będą się nie udawać.
\n\nRozwiązanie: poproś partnera o ich aktualny kod i zaktualizuj swoją konfigurację. Jeśli partner często się restartuje i nie informuje Cię, rozważ użycie dynamicznego mechanizmu aktualizacji lub skryptu, który okresowo sprawdza nowe kody.
\n\nAby wykryć przestarzałe kody w logach, szukaj uporczywych błędów autoryzacji z konkretnym partnerem:
\n\ngrep "autoryzacja nie powiodła się" /tmp/cccam.log | tail -20
Jeśli widzisz, że ten sam partner nieustannie się nie udaje w ciągu ostatniej godziny, ich kod prawdopodobnie się zmienił.
\n\nProblemy z kompatybilnością platformy
\n\nKod wygenerowany na urządzeniu Enigma2 nie będzie działał, jeśli przeniesiesz instalację na Linux. Binarny plik jest inny, podpis sprzętowy jest inny, a wynik DES jest inny.
\n\nPodobnie, CCcam 2.1.x i 2.2.x mogą generować nieco różne formaty kodów na tym samym sprzęcie. Jeśli aktualizujesz CCcam, wyodrębnij nowy kod po aktualizacji i rozdystrybuuj go do partnerów.
\n\nAby zweryfikować platformę:
\n\nplik /usr/bin/cccam
To pokazuje typ binarny (x86, ARM itp.). Jeśli peer jest na innej platformie, ich format kodu może nie być bezpośrednio kompatybilny z logiką walidacji twojej instalacji.
\n\nProblemy z zaporą i NAT blokujące uwierzytelnianie kodu
\n\nNawet jeśli kod jest poprawny, połączenie nie udaje się, jeśli zapora blokuje port 16001 lub 16002. Uwierzytelnianie kodu nigdy się nie odbywa, ponieważ najpierw zawodzi handshake TCP.
\n\nPrzetestuj osiągalność, zanim zaczniesz martwić się kodami:
\n\ntelnet peer.example.com 16001
Jeśli to się zawiesza lub przekracza czas, port jest zablokowany. Kod jest nieistotny.
\n\nZa NAT? Peer musi przekierować port 16001 (lub twój niestandardowy port) na swój wewnętrzny adres IP. Jeśli tego nie zrobi, ich kod jest niedostępny z internetu, mimo że jest poprawny.
\n\nPotwierdź, że port peera jest otwarty i osiągalny z zewnątrz:
\n\nnmap -p 16001 peer.example.com
Jeśli port jest filtrowany lub zamknięty, problemem jest zapora/NAT, a nie kod.
\n\nAnaliza logów w przypadku błędów odrzucenia kodu
\n\nCCcam rejestruje decyzje uwierzytelniające w /tmp/cccam.log. Wyszukaj komunikaty o odrzuceniu:
\n\ngrep -i "reject\\|fail\\|error" /tmp/cccam.log | grep -i code
Wiadomości różnią się w zależności od wersji, ale szukaj:
\n\n- \n
- "niezgodność kodu" \n
- "uwierzytelnienie nie powiodło się" \n
- "nieprawidłowy kod" \n
- "partner odrzucony" \n
Te komunikaty wskazują, że partner albo nie rozpoznał twojego kodu, albo ty nie rozpoznałeś jego. Ponownie zweryfikuj, czy kody się zgadzają i czy obie strony używają kompatybilnych binariów.
\n\nDla OScam sprawdź oscam.log w podobny sposób:
\n\ngrep -i "uwierzytelnienie\\|błąd\\|problem" /var/etc/oscam/oscam.log
Wiadomości OScam są zazwyczaj bardziej szczegółowe. Szukaj nazwy czytnika (np. "remote_peer") i śledź, co się wydarzyło.
\n\nTypowe błędy w konfiguracji
\n\nBłędy związane z białymi znakami są powszechne. Niektóre edytory dodają spacje na końcu linii:
\n\nkod = A1 B2 C3 D4 E5 F6 G7 H8 I9 J0 K1 L2 M3 N4 O5 P6 [ukryta spacja tutaj]
Parser może odrzucić całą linię. Użyj edytora hex lub zweryfikuj składnię konfiguracji przed ponownym uruchomieniem:
\n\ncat /etc/CCcam/CCcam.cfg | od -c | grep -i kod
To pokazuje surowe bajty, w tym wszelkie ukryte białe znaki.
\n\nWrażliwość na wielkość liter zazwyczaj nie jest problemem (zarówno AA, jak i aa są akceptowane), ale różne wersje CCcam mogą być bardziej rygorystyczne. Trzymaj się wielkich liter dla spójności.
\n\nNiezgodności nodeid to kolejna pułapka. Nodeid jest oddzielny od kodu. Jeśli skonfigurujesz nodeid w swoim wpisie peer, ale peer używa innego nodeid, uwierzytelnienie się nie powiedzie. Zweryfikuj zarówno kod, JAK I nodeid z peerem.
\n\nBezpieczeństwo i najlepsze praktyki dotyczące kodów serwera
\n\nKody serwera są wrażliwe. Nie publikuj ich na publicznych forach ani w pastebin. Jeśli podejrzewasz, że twój kod został skompromitowany, natychmiast uruchom ponownie swoją usługę, aby unieważnić go i wygenerować nowy.
\n\nUdostępniaj kody serwera tylko z peerami, którym całkowicie ufasz. Wycieczka kodu daje komuś możliwość podszywania się pod twoją instalację. Nie mogą używać twojej karty, ale mogą przechwytywać połączenia przeznaczone dla ciebie.
\n\nPrzechowuj logi przez co najmniej 7 dni, aby móc wykryć, kiedy dokonano nieautoryzowanych połączeń, jeśli kod wycieknie. Szukaj prób połączeń z nieznanych adresów IP.
\n\nPodczas usuwania peera, uruchom ponownie swoją usługę, aby wymusić regenerację kodu. To zapobiega ponownemu połączeniu się starego peera z pamięcią podręczną kodu (choć w praktyce jest to mało prawdopodobne).
\n\nDla produkcyjnych konfiguracji z wieloma peerami, rozważ dokumentowanie zmian kodu w prywatnym pliku logów z znacznikami czasu. To pomoże ci audytować, którzy peerzy mają aktualne kody, a którzy mogą być nieaktualni.
\n\nZaawansowane: Analiza na poziomie pakietów uwierzytelniania kodu serwera
\n\nJeśli połączenie nie udaje się, a logi nie wyjaśniają dlaczego, tcpdump może ujawnić, co tak naprawdę jest wysyłane:
\n\ntcpdump -i eth0 -A host peer.example.com and port 16001
Nie zobaczysz rzeczywistego kodu w postaci tekstu (jest zaszyfrowany), ale możesz zweryfikować, że dane są wymieniane i że połączenie nie wygasa na poziomie TCP.
\n\nSzukaj wzorców: jeśli peer zamyka połączenie natychmiast po wysłaniu danych, odrzucili twój kod. Jeśli połączenie wisi i wygasa, zapora ogniowa lub usługa peera nie odpowiada.
\n\nDla głębszej analizy niektórzy użytkownicy uruchamiają tcpdump do pliku i analizują go w Wireshark, ale na tym poziomie rozwiązywania problemów zazwyczaj napotykasz znany problem: zły kod, zapora ogniowa lub usługa, która nie działa.
\n\nDocker i wdrożenia kontenerowe
\n\nJeśli uruchamiasz CCcam lub OScam w kontenerze Docker, kod serwera utrzymuje się po restarcie kontenera, o ile wolumen trwały jest zamontowany. Jeśli nie używasz wolumenu, kod zmienia się za każdym razem, gdy kontener jest restartowany, ponieważ środowisko kontenera jest inne.
\n\nAby zapewnić stabilne kody w Dockerze:
\n\ndocker run -v /opt/cccam:/root/cccam -p 16001:16001 cccam:latest
Opcja-v /opt/cccam:/root/cccammontuje katalog hosta do kontenera. Logi i konfiguracje są zachowywane, a także generowany kod (zakładając, że binarny plik przechowuje kod w sposób deterministyczny).
Bez wolumenu, wyodrębnij kod po każdym restarcie:
\n\ndocker exec cccam_container sh -c "telnet localhost 16001<<< 'kod'"
To pozwala uzyskać aktualny kod bez potrzeby przeglądania logów. Natychmiast zaktualizuj swoich partnerów nowym kodem.
\n\nP: Jaka jest różnica między kodem CCcam a kodem OScam?
\nCCcam używa swojej własnej, specyficznej dla binariów implementacji DES do generowania kodów, podczas gdy OScam używa nieco innej wersji DES w binarnym pliku oscam. Oba generują 16-bajtowe kody szesnastkowe, które służą temu samemu celowi autoryzacji, ale podstawowe szyfrowanie jest różne. Kod CCcam nigdy nie zadziała w konfiguracji OScam i odwrotnie. Dzieje się tak, ponieważ klucze DES i metody obliczeniowe są różne. Jeśli korzystasz z obu usług na różnych maszynach, potrzebujesz oddzielnych kodów dla każdej z nich. Nie są one wymienne.
\nP: Jak często kody serwera wygasają lub się zmieniają?
\nKody serwera nie mają wbudowanego timera wygasania. Są statyczne, dopóki nie uruchomisz ponownie usługi. Po ponownym uruchomieniu CCcam lub OScam, kod jest natychmiast regenerowany, a stary kod staje się nieaktualny. Niektóre wersje CCcam zawierają komponent znaczników czasu w obliczeniach DES, co oznacza, że synchronizacja czasu ma znaczenie — jeśli zegar systemowy znacznie się rozjeżdża, węzły mogą zacząć odrzucać twój kod nawet bez ponownego uruchomienia. Ogólnie rzecz biorąc, kody powinny być uważane za trwałe przez czas działania usługi, a nie rotowane ręcznie jak hasła. Jedynym wyjątkiem jest sytuacja, gdy celowo chcesz wymusić rotację kodu przez ponowne uruchomienie usługi.
\nP: Czy mogę używać tego samego kodu serwera na wielu urządzeniach?
\nNie. Kody są specyficzne dla węzła i związane z binarnym kodem oraz sprzętem każdej instalacji. Jeśli skopiujesz ten sam kod na dwa różne maszyny, wystąpią konflikty, ponieważ szyfrowanie DES jest specyficzne dla urządzenia. Każda maszyna musi wygenerować swój własny kod. W środowiskach Docker, jeśli sklonujesz kontener i uruchomisz obie instancje, początkowo będą miały ten sam kod (ponieważ są tym samym obrazem), ale jak tylko jedna z nich zostanie uruchomiona ponownie, kody się rozdzielą. Aby uruchomić wiele instancji CCcam na tym samym sprzęcie, każda musi mieć swój własny identyfikator węzła i wygeneruje swój unikalny kod.
\nP: Dlaczego mój kod serwera jest odrzucany przez węzły?
\nKilka powodów: (1) Kod jest przestarzały — węzeł został uruchomiony ponownie i wygenerował nowy kod. Poproś ich o aktualny kod. (2) Niedopasowanie platformy — twój CCcam i CCcam węzła są na różnych architekturach (Enigma2 vs. Linux), a formaty kodów nie są kompatybilne. (3) Błędy w białych znakach lub formatowaniu w pliku konfiguracyjnym — nadmiarowe spacje lub mieszany przypadek mogą zakłócić analizę. (4) Zapora blokująca port 16001 zanim walidacja kodu w ogóle się odbędzie. (5) Problemy z synchronizacją czasu — jeśli twój zegar systemowy jest zbyt do przodu lub z tyłu, suma kontrolna DES nie przechodzi. (6) Identyfikator węzła węzła nie pasuje do tego, co skonfigurowałeś — zweryfikuj zarówno kod, jak i identyfikator węzła z węzłem. (7) Różne wersje CCcam z niekompatybilnym generowaniem kodu. Sprawdź logi pod kątem komunikatów "autoryzacja nie powiodła się" lub "niezgodność kodu", zweryfikuj, czy kod pasuje znak po znaku, i potwierdź, że port jest osiągalny.
\nP: Jak mogę zweryfikować, że kod serwera jest poprawnie sformatowany?
\nPoprawny kod serwera to zawsze 16 bajtów danych szesnastkowych (łącznie 32 znaki szesnastkowe). Sprawdź format za pomocą grep:echo "A1 B2 C3..." | grep -iE '^([0-9A-F]{2} ){15}[0-9A-F]{2}$'. Jeśli wzór pasuje, format jest poprawny. Możesz także ręcznie policzyć bajty — jeśli widzisz 16 par oddzielonych spacjami, takich jak "AA BB CC...", jest poprawnie sformatowany. Aby zweryfikować, że kod jest kryptograficznie ważny bez łączenia się z węzłami, telnetuj do swojej lokalnej usługi i poproś o kod bezpośrednio:telnet localhost 16001 następnie wpiszcode. Porównaj swój wynik z tym, co masz w konfiguracji. Jeśli się zgadzają, jest w porządku. To nie wymaga kontaktowania się z węzłami i ryzykowania odrzucenia.
P: Co powinienem zrobić, jeśli udostępniłem mój kod serwera i chcę cofnąć dostęp?
\nNatychmiast uruchom ponownie swoją usługę CCcam lub OScam. Nowy kod jest generowany automatycznie przy uruchomieniu, a stary kod staje się nieważny w ciągu kilku sekund. Każdy partner korzystający ze starego kodu nie będzie w stanie się uwierzytelnić. Cofnięcie dostępu następuje natychmiast po twojej stronie. Partnerzy nie będą mogli ponownie połączyć się, ponieważ ich zapisany kod już nie pasuje do twojego. To jest zaleta systemu opartego na kodach — nie musisz ręcznie zmieniać hasła ani aktualizować białej listy. Proste ponowne uruchomienie unieważnia wszystkie wcześniej udostępnione kody. Jeśli musisz cofnąć dostęp do konkretnego partnera, zachowując dostęp dla innych, możesz usunąć wpis tego partnera z pliku konfiguracyjnego, ale ponowne uruchomienie jest najszybszym sposobem na unieważnienie wszystkich kodów jednocześnie. Dla bezpieczeństwa, uruchom ponownie natychmiast, jeśli podejrzewasz, że kod został skompromitowany.
\n