Loading...
Kody serwera CCcam/OScam: Przewodnik po konfiguracji i ustawieniach

Kody serwera CCcam/OScam: Konfiguracja& Przewodnik po konfiguracji

\n\n

Kody 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\n

Czym są kody serwera w CCcam i OScam?

\n\n

Definicja i cel

\n\n

Kod 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\n

Kody 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\n

Różnica między kodami serwera CCcam i OScam

\n\n

Oba 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\n

Praktyczna 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\n

Jak kody serwera umożliwiają połączenia peer

\n\n

Gdy łą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\n

Dlatego 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\n

Implikacje bezpieczeństwa związane z udostępnianiem kodów serwera

\n\n

Kod 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\n

Zaleta: 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\n

Format i składnia kodu serwera CCcam

\n\n

Standardowa struktura kodu CCcam

\n\n

Typowy kod serwera CCcam wygląda tak (przykład zanonimizowany):

\n\n

A1 B2 C3 D4 E5 F6 G7 H8 I9 J0 K1 L2 M3 N4 O5 P6

\n\n

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\n

Kod 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\n

ID węzła i składniki klucza DES

\n\n

Za 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\n

Dlatego 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\n

Obliczanie i walidacja sumy kontrolnej

\n\n

CCcam 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\n

Dlatego 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\n

Odczytywanie wyjścia kodu z logów CCcam

\n\n

Twój kod serwera CCcam jest rejestrowany, gdy usługa się uruchamia. Sprawdź/tmp/cccam.log na większości instalacji Linux:

\n\n

grep "kod serwera" /tmp/cccam.log

\n\n

Zobaczysz coś takiego:

\n\n

18: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

\n\n

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\n

Jeś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\n

Wygasanie kodu i cykle odświeżania

\n\n

Kody 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\n

Ponowne 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\n

Nie 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\n

Generowanie i pobieranie kodów serwera

\n\n

Ekstrakcja kodu z CCcam za pomocą Telnet (Port 16001)

\n\n

Najszybszym sposobem na uzyskanie kodu serwera jest telnetowanie do portu zarządzania CCcam. Domyślny port to 16001:

\n\n

telnet localhost 16001

\n\n

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
lub
systemctl restart oscam

\n\n

Obserwuj logi natychmiast po:

\n\n

tail -f /tmp/cccam.log
lub
tail -f /var/etc/oscam/oscam.log

\n\n

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\n

Jeś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\n

Narzędzia do analizy i walidacji kodu

\n\n

Moż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
\n\n

Użyj grep z regex, aby zweryfikować:

\n\n

echo "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}$'

\n\n

Jeśli wzór pasuje, format jest ważny. To nie weryfikuje, czy kod jest kryptograficznie poprawny, tylko że jest poprawnie sformatowany.

\n\n

Różnice w generowaniu kodu między platformami (Linux/ARM/Enigma2)

\n\n

Binarne 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\n

Dlatego 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\n

Jeś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\n

Konfigurowanie kodów serwera w CCcam.cfg i oscam.conf

\n\n

Dodawanie kodów peer do składni CCcam.cfg

\n\n

Nie 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

\n\n

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ś.

\n\n

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

\n\n

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\n

Konfiguracja systemu kart OScam z kodami serwera

\n\n

W 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

\n\n

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\n

Walidacja 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

\n\n

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\n

Reshare (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\n

Testowanie połączeń po wprowadzeniu kodu

\n\n

Po dodaniu węzła z jego kodem serwera, natychmiast przetestuj połączenie:

\n\n

systemctl restart CCcam
\nsleep 5
\ntail -f /tmp/cccam.log | grep peer.example.com

\n\n

Szukaj linii takiej jak:

\n\n

połączono z peer.example.com:16001
\nuwierzytelniony dopasowany kod

\n\n

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\n

W OScam sprawdź oscam.log:

\n\n

tail -f /var/etc/oscam/oscam.log | grep "remote_peer"

\n\n

Szukaj wiadomości "połączono" lub "uwierzytelnione". Błędy połączenia będą wyraźnie widoczne z znacznikami czasu.

\n\n

Rozwiązywanie problemów z kodami serwera

\n\n

Niekompatybilność kodu i błędy połączenia

\n\n

Najczę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\n

Jeśli połączenie nie powiedzie się, wyodrębnij zarówno swój kod, jak i kod partnera i porównaj bajt po bajcie:

\n\n

echo "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"

\n\n

Widzisz różnicę na końcu? P6 vs. P7. To jest niezgodność kodu. Partner odrzuci połączenie.

\n\n

Wygasłe lub przestarzałe kody

\n\n

Kody 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\n

Rozwią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\n

Aby wykryć przestarzałe kody w logach, szukaj uporczywych błędów autoryzacji z konkretnym partnerem:

\n\n

grep "autoryzacja nie powiodła się" /tmp/cccam.log | tail -20

\n\n

Jeśli widzisz, że ten sam partner nieustannie się nie udaje w ciągu ostatniej godziny, ich kod prawdopodobnie się zmienił.

\n\n

Problemy z kompatybilnością platformy

\n\n

Kod 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\n

Podobnie, 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\n

Aby zweryfikować platformę:

\n\n

plik /usr/bin/cccam

\n\n

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\n

Problemy z zaporą i NAT blokujące uwierzytelnianie kodu

\n\n

Nawet 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\n

Przetestuj osiągalność, zanim zaczniesz martwić się kodami:

\n\n

telnet peer.example.com 16001

\n\n

Jeśli to się zawiesza lub przekracza czas, port jest zablokowany. Kod jest nieistotny.

\n\n

Za 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\n

Potwierdź, że port peera jest otwarty i osiągalny z zewnątrz:

\n\n

nmap -p 16001 peer.example.com

\n\n

Jeśli port jest filtrowany lub zamknięty, problemem jest zapora/NAT, a nie kod.

\n\n

Analiza logów w przypadku błędów odrzucenia kodu

\n\n

CCcam rejestruje decyzje uwierzytelniające w /tmp/cccam.log. Wyszukaj komunikaty o odrzuceniu:

\n\n

grep -i "reject\\|fail\\|error" /tmp/cccam.log | grep -i code

\n\n

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
\n\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\n

Dla OScam sprawdź oscam.log w podobny sposób:

\n\n

grep -i "uwierzytelnienie\\|błąd\\|problem" /var/etc/oscam/oscam.log

\n\n

Wiadomości OScam są zazwyczaj bardziej szczegółowe. Szukaj nazwy czytnika (np. "remote_peer") i śledź, co się wydarzyło.

\n\n

Typowe błędy w konfiguracji

\n\n

Błędy związane z białymi znakami są powszechne. Niektóre edytory dodają spacje na końcu linii:

\n\n

kod = A1 B2 C3 D4 E5 F6 G7 H8 I9 J0 K1 L2 M3 N4 O5 P6 [ukryta spacja tutaj]

\n\n

Parser może odrzucić całą linię. Użyj edytora hex lub zweryfikuj składnię konfiguracji przed ponownym uruchomieniem:

\n\n

cat /etc/CCcam/CCcam.cfg | od -c | grep -i kod

\n\n

To pokazuje surowe bajty, w tym wszelkie ukryte białe znaki.

\n\n

Wraż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\n

Niezgodnoś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\n

Bezpieczeństwo i najlepsze praktyki dotyczące kodów serwera

\n\n

Kody 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\n

Udostę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\n

Przechowuj 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\n

Podczas 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\n

Dla 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\n

Zaawansowane: Analiza na poziomie pakietów uwierzytelniania kodu serwera

\n\n

Jeśli połączenie nie udaje się, a logi nie wyjaśniają dlaczego, tcpdump może ujawnić, co tak naprawdę jest wysyłane:

\n\n

tcpdump -i eth0 -A host peer.example.com and port 16001

\n\n

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\n

Szukaj 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\n

Dla 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\n

Docker i wdrożenia kontenerowe

\n\n

Jeś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\n

Aby zapewnić stabilne kody w Dockerze:

\n\n

docker run -v /opt/cccam:/root/cccam -p 16001:16001 cccam:latest

\n\n

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).

\n\n

Bez wolumenu, wyodrębnij kod po każdym restarcie:

\n\n

docker exec cccam_container sh -c "telnet localhost 16001<<< 'kod'"

\n\n

To pozwala uzyskać aktualny kod bez potrzeby przeglądania logów. Natychmiast zaktualizuj swoich partnerów nowym kodem.

\n\n
\n\n
\n

P: Jaka jest różnica między kodem CCcam a kodem OScam?

\n

CCcam 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.

\n
\n\n
\n

P: Jak często kody serwera wygasają lub się zmieniają?

\n

Kody 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.

\n
\n\n
\n

P: Czy mogę używać tego samego kodu serwera na wielu urządzeniach?

\n

Nie. 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.

\n
\n\n
\n

P: Dlaczego mój kod serwera jest odrzucany przez węzły?

\n

Kilka 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.

\n
\n\n
\n

P: Jak mogę zweryfikować, że kod serwera jest poprawnie sformatowany?

\n

Poprawny 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.

\n
\n\n
\n

P: Co powinienem zrobić, jeśli udostępniłem mój kod serwera i chcę cofnąć dostęp?

\n

Natychmiast 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
\n\n