»Telegraf« – e-post utan internet

God dag!

Jag skulle vilja dela med mig av intressanta tankar till gemenskapen om att skapa en autonom decentraliserad e-posttjÀnst och praktiskt demonstrera hur en befintlig implementering fungerar.

Ursprungligen utvecklades "Telegraf" som ett amatörmedel för kommunikation mellan medlemmarna i vÄr lilla studentgemenskap, som pÄ olika sÀtt har Àgnat sig Ät datorvetenskap och kommunikation.

Nota Bene: "Telegraf" Ă€r ett amatörmedel för kommunikation; den praktiska nyttan att anvĂ€nda det i industriell skala framstĂ„r som ganska problematisk, men det Ă€r knappast en frĂ„ga vi kan anse vara vĂ€sentlig — vĂ„r huvudsakliga mĂ„lsĂ€ttning Ă€r frĂ€mst att vĂ€cka intresse för utvecklingen av kommunikationssystem av detta slag.

Vi tenderar att anse att ökat intresse för utvecklingen av olika kommunikationssystem Àr en viktig och nödvÀndig uppgift, eftersom förstÄelsen för de grundlÀggande principerna bakom hur dessa system fungerar och vad de bygger pÄ Àr nyckeln till att öka medborgarnas medvetenhet om frÄgor kring informationssÀkerhet.

»Telegraf« – e-post utan internet

Achtung!För att undvika eventuella missförstĂ„nd — i vissa fall kan bilder blĂ€ddras:
»Telegraf« – e-post utan internet

Systemet bygger pĂ„ frivilliga insatser och rent engagemang — vi gillar helt enkelt det vi gör. Du kan betrakta det som en hobby och ha rĂ€tt — eftersom det fortfarande finns entusiaster av kommunikation via papper; "Telegraf" kan oftast ses som en digital implementation av vanliga postprinciper.

"Telegraf" Ă€r en autonom motsvarighet till e-post som möjliggör överföring av enkla textmeddelanden utan anvĂ€ndning av internet. "Telegraf" kan pĂ„ ett eller annat sĂ€tt relateras till Sneakernet — ett sĂ€tt att utbyta information utan att anvĂ€nda ett nĂ€tverk.

USB-minnen anvĂ€nds som brevlĂ„dor, och datorer fungerar som terminaler — de utgör former av Ă„tkomstpunkter för mottagning och överföring av elektronisk korrespondens.

LĂ„t oss övervĂ€ga ett enkelt exempel pĂ„ hur man interagerar med systemet. Vi har tvĂ„ USB-minnen och en terminal tillgĂ€nglig. I skriptet anges de nödvĂ€ndiga globala variablerna för den fortsatta interaktionen med systemet — terminalnumret, sökvĂ€gen till rotkatalogen och mer.

Om vi ansluter det avtagbara lagringsenheten till terminalen och startar skriptet, kommer det att försöka hĂ€mta utgĂ„ende meddelanden frĂ„n katalogen /mnt/Telegraph/Outbox och flytta dem till sitt minne, för att dĂ€refter kontrollera om det finns nya meddelanden i sitt minne för den aktuella anvĂ€ndaren. Om sĂ„dana finns — skriva dem i /mnt/Telegraph/Inbox.

Registrering av nya enheter

Det sker pÄ ett ganska rutinmÀssigt sÀtt. Skriptet hittar nya USB-minnen som Àr anslutna till systemet och försöker matcha deras unika identifierare med de som finns i rotkatalogen. Om enheterna tidigare inte registrerats, kommer de att formateras enligt de regler som faststÀllts av "Telegrafen".

Efter registreringen av en ny enhet ser rotstrukturen ut pÄ följande sÀtt:

View post on imgur.com

I konfigurationsfilen config.ini, som ligger i rotkatalogen pĂ„ USB-minnet, finns systeminformation — unik identifierare och hemlig nyckel.

View post on imgur.com

Ge mÀnniskor rom!

Nej, men allvarligt talat! KÀllkoden kan vi fÄ tag pÄ hÀr, och nu Àr det dags att börja gÄ frÄn teori till praktik.

Men jag mÄste sÀga nÄgra ord om hur meddelandesystemet faktiskt fungerar.

Först ska vi förstÄ vad den elva siffror lÄnga unika identifieraren bestÄr av. Till exempel, 10455000001.

Första siffran, 1, representerar landsnumret. Den internationella koden — 0, medan Ryssland i detta fall — 1.

Sedan följer fyra siffror som representerar regionnumret dĂ€r terminalen Ă€r belĂ€gen. 0455 — detta Ă€r Kolomna stadsomrĂ„de.

DĂ€refter följer tvĂ„ siffror, — 00, — som Ă€r specifikt kopplade till terminalnumret.

Och först dĂ€refter — fyra siffror som Ă€r det ordningsnummer som Ă€r knutet till denna terminal. Detta Ă€r — 0001. Det finns ocksĂ„ en 0000 — detta nummer tillhör sjĂ€lva terminalen. Du kan inte skicka skriftlig korrespondens till det, men terminalen anvĂ€nder detta nummer för att skicka tjĂ€nstemeddelanden till anvĂ€ndarna. Till exempel, om ett meddelande inte kunde levereras av nĂ„gon anledning.

View post on imgur.com

I roten av vÄr "inkorg" finns det tvÄ kataloger som Àr nödvÀndiga för att ta emot och skicka textmeddelanden. NÀr en enhet kopplas till terminalen laddas utgÄende meddelanden frÄn katalogen "Outbox" till servern, medan inkommande meddelanden, som sig bör, laddas upp i katalogen "Inbox".

Varje fil namnges beroende pÄ katalog med mottagarens eller avsÀndarens nummer.

Om vi försöker skicka ett meddelande till en icke-existerande mottagare, kommer terminalen att skicka oss ett felmeddelande.

View post on imgur.com

Men om vi beslutar att skicka ett meddelande till en mottagare som befinner sig pÄ en annan terminal (oavsett om den finns eller inte), kommer det att lagras i terminalens minne tills agenten överför skriftlig korrespondens frÄn vÄr terminal till sin.

View post on imgur.com

NĂ€r avdelningens agent 10500000000 (med andra ord — postbudet) ansluter sin enhet till vĂ„r terminal kommer de utgĂ„ende meddelandena att överföras till hans lagringsmedium. Senare, nĂ€r han kopplar sin enhet till sin terminal, kommer dessa meddelanden att överföras till terminalens minne och vĂ€nta pĂ„ att mottagaren ska hĂ€mta dem till sitt flashminne.

Kommunikationssession

LÄt oss försöka skicka ett meddelande med texten "Hej!" frÄn 10455000001 till 10455000002.

View post on imgur.com

Det var allt!

Jag ser fram emot all kritik angÄende projektets kÀllkod och sjÀlva artikeln.

Tack för uppmÀrksamheten.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster