#!/usr/bin/env python3 # PROGRAM SMS3 # Version fuer das faible-Projekt # Version: 23.5.2024 # Autor: Arno Pasternak # Das Programm unterliegt der GPL, Version 3 # ========================================== import os class SatzKlasse: def __init__(self): self.satz = "Dies ist ein neuer Satz" # print self.satz def einlesen(self): print ("Bitte Satz eingeben: ") self.satz = input() print (self.satz) def ausgeben(self): print (self.satz) def verschluesseln(self, codewort): buchstabe = ""; codebuchstabe = "" asciizahl = 0; codeasciizahl = 0 stelle = 0; codestelle = 0 zusatz = 0 verschluesselter_satz = "" while stelle < len(self.satz): buchstabe = self.satz[stelle] codebuchstabe = codewort[codestelle] asciizahl = ord(buchstabe) codeasciizahl = ord(codebuchstabe) asciizahl = asciizahl + codeasciizahl - 64 + zusatz buchstabe = chr(asciizahl) verschluesselter_satz = verschluesselter_satz + buchstabe stelle = stelle + 1 zusatz = zusatz + 1 if zusatz > 2: zusatz = 0 codestelle = codestelle + 1 if codestelle == len(codewort): codestelle = 0 zusatz = 0 self.satz = verschluesselter_satz def entschluesseln(self, codewort): buchstabe = ""; codebuchstabe = "" asciizahl = 0; codeasciizahl = 0 stelle = 0; codestelle = 0 entschluesselter_satz = "" zusatz = 0 while stelle < len(self.satz): buchstabe = self.satz[stelle] codebuchstabe = codewort[codestelle] asciizahl = ord(buchstabe) codeasciizahl = ord(codebuchstabe) asciizahl = asciizahl - codeasciizahl + 64 - zusatz buchstabe = chr(asciizahl) entschluesselter_satz = entschluesselter_satz + buchstabe stelle = stelle + 1 zusatz = zusatz + 2 if zusatz > 5: zusatz = 0 codestelle = codestelle + 1 if codestelle == len(codewort): codestelle = 0 zusatz = 0 self.satz = entschluesselter_satz def senden(self, dateiname): datei = open(dateiname, "w") datei.write(self.satz) datei.close() def holen(self, dateiname): if not os.path.exists(dateiname): self.satz = "SMS nicht vorhanden" else: datei = open(dateiname) self.satz = datei.readline() datei.close() # Ende Satzklasse # ========================================================= # BEGINN des Programms print("") print("==============================================================") print(" SMS Programm mit Public-Key-Verschluesselung") print("==============================================================") print("==============================================================") print("") print("") sms = None codewort = None teilnehmer = None absender = None empfaenger = None wahl = None codewort = chr(0) print("") print("Bitte gib Deinen Namen an: ") teilnehmer = input("") sms = SatzKlasse() wahl = "" while wahl != "Q": print("") print("==============================================================") print("E: Einlesen ** A: Ausgeben") print("S: Senden ** H: Holen") print("V: Verschluesseln ** D: Entschluesseln") print("Z: Zeigen alle SMS ** C: Codewort eingeben") print("Q: QUIT") print("") print("Bitte waehlen: ") wahl = input("") wahl = wahl.upper() print("") print("--------------------------------------------------------------") if wahl == 'Z': import subprocess subprocess.call(["./verzeichnis.sh"]) if wahl == 'C': print("Bitte Codewort eingeben: ") codewort = input() if wahl == 'E': sms.einlesen() if wahl == 'A': sms.ausgeben() if wahl == 'S': print("Bitte Empfaenger eingeben: ") empfaenger = input() sms.senden("%s_%s.sms" % (empfaenger, teilnehmer)) print("Die SMS wurde versandt.") if wahl == 'H': print("Bitte Absender eingeben: ") absender = input() sms.holen("%s_%s.sms" % (teilnehmer, absender)) print("Folgende SMS wurde erhalten:") sms.ausgeben() if wahl == 'V': sms.verschluesseln(codewort) print("Verschluesselt: ") sms.ausgeben() if wahl == 'D': sms.entschluesseln(codewort) print("Entschluesselt: ") sms.ausgeben() # ENDE des Programmes