«Telegraph» — e-mail bez internetu

Dzień dobry!

Chciałbym podzielić się z społecznością interesującymi myślami na temat tworzenia autonomicznej, zdecentralizowanej poczty elektronicznej i praktycznie zademonstrować działanie już istniejącej realizacji.

Początkowo «Telegraph» był rozwijany jako amatorskie narzędzie komunikacji między członkami naszej małej społeczności studenckiej, która w ten czy inny sposób poświęciła się informatyce i komunikacji.

Nota Bene: «Telegraph» — amatorskie narzędzie komunikacji; uzyskanie praktycznych korzyści na dużą skalę wydaje się dość problematyczne, jednak problem ten trudno uznać za istotny — głównym celem jest przyciągnięcie uwagi do opracowania tego rodzaju systemów komunikacyjnych.

Uważamy, że zwiększenie ogólnego zainteresowania w obszarze rozwoju różnych systemów komunikacji jest potrzebne i dość ważne, ponieważ zrozumienie podstawowych zasad działania tych systemów jest kluczowe dla podnoszenia świadomości obywateli w kwestiach bezpieczeństwa informacji.

«Telegraph» — e-mail bez internetu

Uwaga!Aby uniknąć ewentualnych nieporozumień — w niektórych przypadkach obrazy można przeglądać:
«Telegraph» — e-mail bez internetu

System opiera się na dobrowolnych inicjatywach i czystym entuzjazmie — po prostu lubimy to, co robimy. Można to uznać za hobby i nie będzie to błędne — w końcu istnieją entuzjaści komunikacji przy użyciu tradycyjnej korespondencji; «Telegraph» można w większości przypadków uznać za cyfrową realizację zasad działania zwykłej poczty.

«Telegraph» jest autonomicznym odpowiednikiem poczty elektronicznej, który pozwala na przesyłanie prostych wiadomości tekstowych bez użycia internetu. «Telegraph» w takim czy innym stopniu można odnieść do Sneakernet — sposobu wymiany informacji bez użycia sieci.

Jako skrzynki pocztowe wykorzystywane są pamięci USB, natomiast w roli placówek pocztowych występują terminale — komputery, które stanowią swoiste punkty dostępu do odbioru i przesyłania elektronicznej korespondencji.

Rozważmy najprostszy przykład interakcji z systemem. Mamy dwie pamięci USB i jeden terminal. W samym skrypcie zdefiniowane są niezbędne zmienne globalne do późniejszej interakcji z systemem — numer terminala, ścieżka do katalogu głównego i inne.

Jeśli podłączymy zewnętrzny nośnik do terminala i uruchomimy skrypt, spróbuje on uzyskać wychodzące wiadomości z katalogu /mnt/Telegraph/Outbox i przenieść je do swojej pamięci, a następnie sprawdzić, czy w jego pamięci znajdują się nowe wiadomości dla aktualnego użytkownika. Jeśli takowe istnieją — zapisze je w /mnt/Telegraph/Inbox.

Rejestracja nowych urządzeń

Odbywa się dość prozaicznie. Skrypt odnajduje nowe pamięci USB podłączone do systemu i próbuje dopasować ich unikalne identyfikatory do tych, które są przedstawione w katalogu głównym. Jeśli urządzenia nie były wcześniej rejestrowane, zostaną sformatowane zgodnie z zasadami określonymi przez „Telegraph”.

Po zarejestrowaniu nowego urządzenia struktura katalogu głównego przyjmuje następujący kształt:

View post on imgur.com

W pliku konfiguracyjnym config.ini, który znajduje się w katalogu głównym pamięci USB, znajdują się informacje systemowe — unikalny identyfikator i klucz tajny.

View post on imgur.com

Dajcie ludziom rum!

Nie, no, poważnie! Można zdobyć źródła tutaj, a my już powoli musimy przechodzić od teorii do praktyki.

Ale muszę jeszcze powiedzieć kilka słów o tym, jak w praktyce działa system wymiany wiadomości.

Na początek przyjrzyjmy się, z czego składa się jedenastocyfrowy unikalny identyfikator. Na przykład, 10455000001.

Pierwsza cyfra, 1, odpowiada za numer kraju. Kod międzynarodowy — 0, Rosja w tym przypadku to — 1.

Następnie idą cztery cyfry, które odpowiadają za numer regionu, w którym znajduje się terminal. 0455 — to Kolomiecki okręg miejski.

Za nimi idą dwie cyfry, — 00, — odpowiadające bezpośrednio za numer terminala.

A dopiero potem — cztery cyfry, które są numerem porządkowym użytkownika przypisanego do danego terminala. U nas to — 0001. Istnieje także 0000 — ten numer należy bezpośrednio do samego terminala. Nie można wysłać na niego pisemnej korespondencji, ale sam terminal korzysta z tego numeru do wysyłania wiadomości służbowych do użytkowników. Na przykład, jeśli wiadomość nie mogła zostać dostarczona z jakiegokolwiek powodu.

View post on imgur.com

W głównym katalogu naszej „skrzyńki pocztowej” znajdują się dwie katalogi niezbędne do odbierania i wysyłania wiadomości tekstowych. Podczas podłączania urządzenia do terminala, z katalogu „Outbox” na serwer przesyłane są wiadomości wychodzące, a do katalogu „Inbox”, co logiczne, ładowane są wiadomości przychodzące.

Każdy plik w zależności od katalogu nosi numer odbiorcy lub nadawcy.

Jeśli spróbujemy wysłać wiadomość do nieistniejącego odbiorcy, terminal wyśle nam komunikat o błędzie.

View post on imgur.com

Jednak jeśli postanowimy wysłać wiadomość do odbiorcy, który znajduje się na innym terminalu (niezależnie od tego, czy on istnieje, czy nie), zostanie ona zapisana w pamięci terminala, dopóki agent nie przeniesie pisemnej korespondencji z naszego terminala do swojego.

View post on imgur.com

Kiedy agent oddziału 10500000000 (innymi słowy – listonosz) podłączy swoje urządzenie do naszego terminala, wychodzące wiadomości zostaną przekazane do jego pamięci. Następnie, gdy podłączy swoje urządzenie do swojego terminala, te wiadomości zostaną przesłane do pamięci terminala i będą czekać, aż odbiorca pobierze je na swój dysk flash.

Sesja komunikacyjna

Spróbujmy przesłać wiadomość z treścią „Cześć!” od 10455000001 do 10455000002.

View post on imgur.com

Na tym kończymy!

Będę wdzięczny za wszelką krytykę dotycząca kodu źródłowego projektu oraz samego artykułu.

Dziękuję za uwagę.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster