Goedendag!
Ik wil graag interessante gedachten over het creëren van een autonome gedecentraliseerde e-mail met de gemeenschap delen en praktisch demonstreren hoe een bestaande implementatie werkt.
Oorspronkelijk werd 'Telegraaf' ontwikkeld als een amateurcommunicatiemiddel tussen de leden van onze kleine studentencommunity, die in een of andere hoedanigheid hun activiteiten aan computertechnologie en communicatie hebben gewijd.
Nota Bene: 'Telegraaf' is een amateurcommunicatiemiddel; het is vrij problematisch om praktische voordelen op industriële schaal te realiseren, maar we kunnen deze kwestie nauwelijks als essentieel beschouwen — onze voornaamste doelstelling is voornamelijk om aandacht te vestigen op de ontwikkeling van dit soort communicatiesystemen.
Wij zijn van mening dat het vergroten van de algemene interesse in de ontwikkeling van verschillende communicatiesystemen een noodzakelijke en belangrijk zaak is, aangezien het begrijpen van de fundamentele principes van hoe deze systemen werken en waarop ze zijn gebaseerd de sleutel is tot het vergroten van de bewustwording van burgers op het gebied van informatiebeveiliging.

Achtung!Om mogelijke misverstanden te voorkomen — in sommige gevallen kunnen afbeeldingen worden doorgelinkt:

Het systeem functioneert op vrijwillige basis en puur uit enthousiasme — we doen gewoon iets wat we leuk vinden. U kunt dit beschouwen als een hobby en u zit niet verkeerd — er zijn immers nog steeds liefhebbers van communicatie via geschreven correspondentie; 'Telegraaf' kan in de meeste gevallen worden gepresenteerd als een digitale implementatie van de werkwijze van gewone post.
'Telegraaf' is een autonome analogon van e-mail dat het mogelijk maakt om eenvoudige tekstberichten te verzenden zonder gebruik te maken van internet. 'Telegraaf' kan in zekere zin worden geclassificeerd als — een manier om informatie uit te wisselen zonder gebruik te maken van een netwerk.
USB-sticks worden als postbussen gebruikt, terwijl terminals — computers — fungeren als een soort toegangspunten voor het verzenden en ontvangen van elektronische correspondentie.
Laten we een eenvoudig voorbeeld van interactie met het systeem bekijken. We hebben twee USB-sticks en één terminal beschikbaar. In het script zijn de noodzakelijke globale variabelen gedefinieerd voor de verdere interactie met het systeem — het nummer van de terminal, het pad naar de root en dergelijke.
Als we de verwisselbare opslagapparaat op de terminal aansluiten en het script uitvoeren, zal het proberen om uitgaande berichten uit de directory te verkrijgen. /mnt/Telegraph/Outbox en deze in zijn geheugen op te slaan, daarna — controleren of er nieuwe berichten zijn voor de huidige gebruiker in zijn geheugen. Als die er zijn — deze opslaan in. /mnt/Telegraph/Inbox.
Registratie van nieuwe apparaten
Gaat vrij standaard. Het script vindt nieuwe USB-opslagapparaten die op het systeem zijn aangesloten en probeert hun unieke identificaties te koppelen aan die welke in de root zijn gepresenteerd. Als de apparaten eerder niet waren geregistreerd, worden ze geformatteerd volgens de door het 'Telegraaf' vastgestelde regels.
Na de registratie van een nieuw apparaat heeft de root de volgende structuur:
In het configuratiebestand config.ini, dat zich in de root van de USB-stick bevindt, staat informatie over het systeem — een unieke identificatie en een geheime sleutel.
Geef de mensen rum!
Nee, maar, serieus! De bronnen kunnen worden verkregen, , en het is al tijd om van de theorie naar de praktijk over te gaan.
Maar ik moet nog een paar woorden zeggen over hoe het systeem van berichtuitwisseling in de praktijk is ingericht.
Laten we beginnen met de analyse van waaruit de elf cijfers van de unieke identificatie bestaan. Bijvoorbeeld, 10455000001.
Het eerste cijfer, 1, staat voor het landnummer. De internationale code — 0, Rusland is in dit geval — 1.
Daarop volgen vier cijfers die het nummer van de regio aangeven waar de terminal zich bevindt. 0455 — dit is het Kolomenskiy stadsgebied.
Daarna volgen twee cijfers — 00, — die direct het nummer van de terminal aanduiden.
En pas daarna — vier cijfers, die het volgnummer van de gebruiker aangeven dat aan deze terminal is toegewezen. Voor ons is dit — 0001. Er is ook een 0000 — dit nummer behoort rechtstreeks tot de terminal zelf. Er kan geen schriftelijke correspondentie naar worden verzonden, maar de terminal gebruikt dit nummer om serviceberichten naar gebruikers te verzenden. Bijvoorbeeld, als een bericht om welke reden dan ook niet kon worden afgeleverd.
In de root van onze "postvak" bevinden zich twee mappen die nodig zijn om tekstberichten te ontvangen en te verzenden. Wanneer een apparaat op de terminal wordt aangesloten, worden uit de map "Outbox" de uitgaande berichten naar de server verzonden, en in de map "Inbox" worden, logisch, de binnenkomende berichten geladen.
Elk bestand is afhankelijk van de map benoemd met het nummer van de ontvanger of verzender.
Als we proberen een bericht naar een niet-bestaande ontvanger te sturen, zal de terminal ons een foutmelding sturen.
Als we besluiten een brief te sturen naar een ontvanger op een andere terminal (ongeacht of deze bestaat of niet), zal deze worden opgeslagen in het geheugen van de terminal totdat de agent de geschreven correspondentie van onze terminal naar de zijne heeft overgebracht.
Wanneer de agent van het kantoor 10500000000 (lees: postbode) zijn apparaat op onze terminal aansluit, worden de uitgaande brieven overgedragen naar zijn opslag. Later, wanneer hij zijn apparaat op zijn eigen terminal aansluit, zullen deze brieven in het geheugen van de terminal worden geplaatst en wachten tot de ontvanger ze op zijn USB-stick kan downloaden.
Communicatiesessie
Laten we proberen een bericht met de tekst "Hallo!" te versturen vanaf 10455000001 aan 10455000002.
Dat is alles!
Ik sta open voor elke kritiek op de broncode van het project en op het artikel zelf.
Dank u voor uw aandacht.
Bron: habr.com
