HiddenLanguage v1.0

PHOTO EMBED

Sat Jul 29 2023 13:58:01 GMT+0000 (Coordinated Universal Time)

Saved by @kubasobr4 #python

import tkinter as tk
from tkinter import messagebox
import random
import smtplib

from email.mime.multipart import MIMEMultipart
import time
from email.mime.base import MIMEBase
from email import encoders

import getpass
from email.mime.text import MIMEText
obsah_desifrovane_zpravy = ""


def tlacitko_klik():

    okno.destroy()
    menu = tk.Tk()
    menu.geometry("800x700")
    # menu.configure(bg="light gray")
    menu.title("HiddenLanguage")


    label1 = tk.Label(menu,text="\n" +"Šifrovat či Dešifrovat?",font=("Arial",30,"bold"))
    label1.pack()

    label2 = tk.Label(menu,text="Chcete šifrovat nebo dešifrovat?",font=("Arial",15))
    label2.pack()

    def tlacitko_klik_sif():
        import json
        # Tady se vyčistí soubory txt ze speciálního nastavení = 1) nápověda v emailu, 2) přezdívka v emailu
        with open("napoveda_uzivatel", "w") as file:
            file.write("")

        data = {}
        with open("prezdivka.json", "w") as json_file:
            json.dump(data, json_file)


        #Přes tento kod se uloží hodnoty a spustí funkce Šifrování a email.
        def ulozeni_hodnot_mail():
            # Získáme text z textboxu (Text widgetu)
            zprava_ke_skryti = textbox_obsah.get("1.0", "end-1c")  # "1.0" označuje začátek a "end-1c" označuje konec textu
            nazev_souboru_sifr = (str(textbot_nazev_souboru.get("1.0", "end-1c")) + ".txt")
            odesilatel = textbot_odesilatel.get("1.0", "end-1c")
            prijemce = textbot_prijemce.get("1.0", "end-1c")
            heslo = textbot_odesilatel_heslo.get("1.0", "end-1c")
            #List který slouží pro for i in range dole


            with open("zprava_ke_skryti.txt","w") as file:
                file.write(zprava_ke_skryti)
            with open(nazev_souboru_sifr, "w") as file:
                file.write(nazev_souboru_sifr)
            with open("odesilatel.txt","w") as file:
                file.write(odesilatel)
            with open("prijemce.txt","w") as file:
                file.write(prijemce)
            with open("heslo.txt", "w") as file:
                file.write(heslo)

            # Tady získáváme informace ke každé informaci v podobě True False (jestli je pole prázdné nebo ne) Stačí aby bylo jedno a bude error
            if not zprava_ke_skryti.strip() or not nazev_souboru_sifr.strip() or not odesilatel.strip() or not prijemce.strip() or not heslo.strip():
                messagebox.showinfo("Upozornění", "Vyplňte všechna pole!")

            if odesilatel.strip():
                if not odesilatel[-10:] == "@gmail.com":
                    messagebox.showinfo("Upozornění", "Jediná možná adresa u odesílatele e-mailu je @gmail.com!")

            Sifrovani(zprava_ke_skryti, nazev_souboru_sifr)
            with open("sifrovani.txt", "r") as file:
                sifrovany_text = file.read()
                oznamena_sifra = tk.Label(sifrovani_okno, text=(
                        "Vaše skrytá zakodovaná šifra zní takto: " + str(sifrovany_text)),
                                          font=("Arial", 15))
                oznamena_sifra.place(x=150, y=650, width=600, height=100)
            email(odesilatel, prijemce, heslo, nazev_souboru_sifr)
            messagebox.showinfo("Upozornění", "Úspěšně odeslán email!")
            program_bude_ukoncen = tk.Label(sifrovani_okno,
                                            text="Toto okno bude do pár sekund zavřeno.Poté budete moci program použít znovu.")
            program_bude_ukoncen.place(x=250, y=650, width=600, height=100)
            time.sleep(5)
            sifrovani_okno.destroy()
            time.sleep(2)
            Uvodni_menu()



        #Vytvoření šifrovacího okna
        sifrovani_okno = tk.Tk()
        sifrovani_okno.geometry("1920x1080")
        sifrovani_okno.title("Šifrování")
        menu.destroy()

        def zpet_do_menu():
            sifrovani_okno.destroy()
            Uvodni_menu()

        label1 = tk.Label(sifrovani_okno ,text="Šifrování", font=("Arial", 30))
        label1.pack()

        label2 = tk.Label(sifrovani_okno,text="Níže napište svoji zprávu, jenž chcete šifrovat.", font=("Arial", 15))
        label2.pack()
        textbox_obsah = tk.Text(sifrovani_okno, height=10,width=50, font=("Arial", 15))
        textbox_obsah.pack(pady=20)


        label3 = tk.Label(sifrovani_okno,padx=30, text="Zde napište název pro soubor, v němž bude uložen kod.", font=("Arial", 15))
        label3.pack()
        textbot_nazev_souboru = tk.Text(sifrovani_okno, height=1,width=30, font=("Arial", 15))
        textbot_nazev_souboru.pack(pady=20)

        #EMAIL
        email_odesilatel_label = tk.Label(sifrovani_okno,padx=35, text="Zadejte váš email", font=("Arial", 15))
        email_odesilatel_label.pack()
        textbot_odesilatel = tk.Text(sifrovani_okno, height=1, width=30, font=("Arial", 15))
        textbot_odesilatel.pack(pady=20)

        email_prijemce_label = tk.Label(sifrovani_okno, padx=45, text="Zadejte email dané osoby", font=("Arial", 15))
        email_prijemce_label.pack()
        textbot_prijemce = tk.Text(sifrovani_okno, height=1, width=30, font=("Arial", 15))
        textbot_prijemce.pack(pady=20)

        email_odesilatel_label_heslo = tk.Label(sifrovani_okno, padx=50, text="Zadejte vaše heslo", font=("Arial", 15))
        email_odesilatel_label_heslo.pack()
        textbot_odesilatel_heslo = tk.Text(sifrovani_okno, height=1, width=30, font=("Arial", 15))
        textbot_odesilatel_heslo.pack(pady=20)

        kontrola = tk.Button(sifrovani_okno,text="Odeslat", command=ulozeni_hodnot_mail,font=("Arial",20),bg = "gray", fg = "black", activebackground = "blue",activeforeground="white")
        kontrola.pack(pady=10)

        poznamka = tk.Label(sifrovani_okno, text="Kod v souboru, jemuž dáváte název je takový kod bez mezer, který je důležitý při dešifrování." + "\n" +"Odesílatel musí mít emailovou adresu od Gmailu. Příjemce nemusí." + "\n" +"Heslo vámi zadané se nikam neukládá a za to vám ručím. Celý programovací kod je veřejně přístupný.", font=("Arial", 10))
        poznamka.pack(pady=10)

        navraceni_do_menu = tk.Button(sifrovani_okno,text="Vrátit se do menu",command=zpet_do_menu,font=("Arial",12,"bold"),bg="blue",fg="white",activeforeground="black")
        navraceni_do_menu.pack()

        #------------------------------------------------------------

        # Tady jsou definovány checkboxy které se ptají na návod a přezdívku
        #Funkce SE SPUSTÍ JAKMILE UŽIVATEL ZMÁČKNE TLAČÍTKO PRO ULOŽENÍ



        def otevri_vyskakovaci_okno():
            vyskakovaci_okno = tk.Toplevel()
            vyskakovaci_okno.geometry("900x500")
            vyskakovaci_okno.title("Nastavení nápovědy v mailu")


            # Tady je definován textbox který se objeví jakmile je v druhé možnosti zaškrtnuto jakože ano
            # Tady bude textbox, který se zobrazí pouze jakmile je zaškrtnutá možnost 1
            def on_text_click(event):
                if textbox.get("1.0",
                               tk.END).strip() == "Napište přezdívku, jenž se objeví v emailu. Dbejte na svoji anonymitu. Přece jen, je to k tomu vytvořené!":
                    textbox.delete("1.0", tk.END)  # Smazat původní text při kliknutí do pole
                    textbox.config(fg='black')  # Změnit barvu textu na černou

            def on_focus_out(event):
                if textbox.get("1.0", tk.END).strip() == "":
                    textbox.insert("1.0",
                                   "Napište přezdívku, jenž se objeví v emailu. Dbejte na svoji anonymitu. Přece jen, je to k tomu vytvořené!")  # Pokud uživatel nezadal žádný text, vrátit původní placeholder
                    textbox.config(fg='grey')  # Nastavit barvu textu na šedou

            # Placeholder - původní text, který se zobrazuje, dokud uživatel nezačne psát
            placeholder = "Napište přezdívku, jenž se objeví v emailu. Dbejte na svoji anonymitu. Přece jen, je to k tomu vytvořené!"

            textbox = tk.Text(vyskakovaci_okno, height=3, width=40, wrap="word", fg='grey',font=("Arial",10))
            textbox.insert("1.0", placeholder)
            textbox.bind('<FocusIn>', on_text_click)  # Při kliknutí do pole
            textbox.bind('<FocusOut>', on_focus_out)  # Když pole ztratí focus (kliknutí mimo pole)
            #KONEC TEXTBOXUUUUUUUUUUU

            def on_checkbox_click():
                if napoveda.get() == 1:
                    with open("napoveda_uzivatel", "w") as file:
                        file.write("ano")
                else:
                    with open("napoveda_uzivatel", "w") as file:
                        file.write("ne")

            def chce_jmeno_checkbox_klik():
                if chce_jmeno_y_n.get() == 1:
                    textbox.pack(pady=10)
                else:
                    textbox.pack_forget()

            # Zde jsou checkboxy a otazky
            label = tk.Label(vyskakovaci_okno, text="Nastavení nápovědy", font=("Arial", 20),activeforeground="blue")
            label.pack(pady=10)
            label_napoveda = tk.Label(vyskakovaci_okno,
                                      text="A) Pokud zaškrtnete checkbox, tak bude mail obsahovat návod k dešifrování zprávy." + "\n" + "Pokud nezaškrtnete checkbox, tak nápověda v mailu nebude.",font=("Arial",11),activeforeground="blue")
            label_napoveda.pack(pady=10)

            napoveda = tk.IntVar()
            checkbox = tk.Checkbutton(vyskakovaci_okno,
                                      text="Chci aby email obsahoval nápovědu k řešení",
                                      font=("Arial", 12), variable=napoveda, command=on_checkbox_click)
            checkbox.pack(pady=10)


            # Tady je část kodu jenž se zaobývá uživatelem
            label_uzivatel = tk.Label(vyskakovaci_okno,
                                      text="B) Tady je checkbox, který pokud zaškrtnete tak budete mít možnost vymyslet si vlastní přezdívku." + "\n" + "Pokud nezaškrtnete tuto možnost, tak počítač při odeslání mailu přečte název vašeho usera na pc např host nebo tomáš apod.",
                                      font=("Arial", 11), activeforeground="blue")
            label_uzivatel.pack(pady=10)

            chce_jmeno_y_n = tk.IntVar()
            jmeno_uzivatele = tk.Checkbutton(vyskakovaci_okno,
                                      text="Chci si sám vytvořit přezdívku",
                                      font=("Arial", 12), variable=chce_jmeno_y_n, command=chce_jmeno_checkbox_klik)
            jmeno_uzivatele.pack(pady=10)

            #Toto uloží hodnoty z checkboxu
            def ulozeni_hodnot():
                import json
                if chce_jmeno_y_n.get() == 1:
                    prezdivka = textbox.get("1.0", "end-1c")

                    data = {
    "chce_prezdivku": True,
    "prezdivka": prezdivka
                    }

                    with open("prezdivka.json", "w") as json_file:
                        json.dump(data, json_file)
                vyskakovaci_okno.destroy()


            odeslat_button = tk.Button(vyskakovaci_okno,height=3,width=20,text="Potvrdit",command=ulozeni_hodnot,font=("Arial",16,"bold"),bg="blue",fg="white",activeforeground="black")
            odeslat_button.place(x=320,y=360)


        specialni_nastaveni = tk.Button(sifrovani_okno,text="Speciální nastavení",command=otevri_vyskakovaci_okno,font=("Arial",12,"bold"),bg="red",fg="white",activeforeground="black")
        specialni_nastaveni.pack(pady=5)


        #Konfigurace mailu
        def email(odesilatel,prijemce,password,nazev_souboru):
            import json
            import datetime

            with open("prezdivka.json", "r") as json_file:
                nactena_data = json.load(json_file)

            chceprezdivku = nactena_data["chce_prezdivku"]
            if chceprezdivku == True:
                qw = nactena_data["prezdivka"]
            else:
                qw = getpass.getuser()

            # Získání aktuálního času
            cas = datetime.datetime.now()
            hodiny_cas = cas.strftime("%H:%M:%S")
            formatovany_cas = cas.strftime("%Y-%m-%d %H:%M:%S")

            sender_password = password

            # Email configuration
            sender_email = odesilatel
            receiver_email = prijemce
            subject = "Byla vám poslána záhadná zpráva"

            with open(nazev_souboru,"r") as file:
                nova_abeceda = file.read()
            with open("napoveda_uzivatel","r") as file:
                napoveda_ano_ne = file.read()
            if napoveda_ano_ne == "ano":
                html_message = f"""<p><span style="font-family: Arial, Helvetica, sans-serif;"><strong><span style="font-size: 36px; color: rgb(0, 0, 0); text-shadow: rgba(136, 136, 136, 0) 0px 0px 0px;">Byla v&aacute;m odesl&aacute;na z&aacute;hadn&aacute; zpr&aacute;va</span></strong></span></p>
<p><span style="font-size: 26px;"><span style="font-family: Arial, Helvetica, sans-serif;"><strong>Co to m&aacute; znamenat?</strong></span></span></p>
<p>
    <font face="Arial, Helvetica, sans-serif"><span style="font-size: 18px;">Před několika vteřinami, přesněji v&nbsp;</span></font><strong style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">{hodiny_cas}</strong>
    <font face="Arial, Helvetica, sans-serif"><span style="font-size: 18px;">&nbsp; byla zaznamen&aacute;na podivn&aacute; aktivita na jak&eacute;msi programu s n&aacute;zvem&nbsp;</span></font><strong style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">HiddenLanguage</strong>
    <font face="Arial, Helvetica, sans-serif"><span style="font-size: 18px;">. Jedin&aacute; dohledateln&aacute; informace je, že uživatel se vyskytuje pod přezd&iacute;vkou&nbsp;</span></font><strong style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">{qw}</strong>
    <font face="Arial, Helvetica, sans-serif"><span style="font-size: 18px;">. Pokud v&iacute;te co m&aacute;te dělat, tak čiňte jak usoud&iacute;te. V př&iacute;loze je zasl&aacute;n k&oacute;d, jenž se v&aacute;m bude zajist&eacute; hodit v dal&scaron;&iacute;ch akc&iacute;ch.</span></font>
</p>
<p style="text-align: left;"><br></p>
<p style="text-align: left;"><span style="font-size: 26px; font-family: Arial, Helvetica, sans-serif;"><strong>Zachycen&aacute; zpr&aacute;va ze serv</strong><strong>eru</strong></span></p>
<div><span style="font-family: Arial, Helvetica, sans-serif;"><strong><span style="font-size: 18px;">{sifrovany_text}</span></strong></span></div>
<p><span style="font-family: Arial, Helvetica, sans-serif;"><br></span></p>
<p style="text-align: left;"><strong style="font-weight: 700; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 26px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">Zachycen&yacute; k&oacute;d ze serv</strong><strong style="font-weight: 700; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 26px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">eru</strong></p>
<p style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;"><strong>{nova_abeceda}</strong></span></p>
<p style="text-align: left;"><br></p>
<p><br></p>
<p><span style="font-family: Arial, Helvetica, sans-serif;"><br></span></p>
<p style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;"><strong>Tvůrce HiddenLanguage</strong><img src="https://myfiles.space/user_files/168855_15d4659979401e54/168855_custom_files/img1690038712.jpeg" alt="He know where you are" style="margin: 0 auto; display: block; width: 1100px;" width="1100" height="614"></span></p>
<p style="text-align: left;"><br></p>
<p style="text-align: center;"><br></p>
<p style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;"><strong>Doba odesl&aacute;n&iacute;: {formatovany_cas}</strong></span></p>
<p style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;"><strong>Soubor ke stažen&iacute;: <a href="https://www.mediafire.com/file/blnje4ut0ped9pi/HiddenLanguage.exe/file" target="_blank" rel="noopener noreferrer">MediaFire Download</a><br></strong></span></p>
<div style="color: red;"><br></div>
"""

            else:
                html_message = f"""<p><span style="font-family: Arial, Helvetica, sans-serif;"><strong><span style="font-size: 36px; color: rgb(0, 0, 0); text-shadow: rgba(136, 136, 136, 0) 0px 0px 0px;">Byla v&aacute;m odesl&aacute;na z&aacute;hadn&aacute; zpr&aacute;va</span></strong></span></p>
<p><span style="font-size: 26px;"><span style="font-family: Arial, Helvetica, sans-serif;"><strong>Co to m&aacute; znamenat?</strong></span></span></p>
<p>
    <font face="Arial, Helvetica, sans-serif"><span style="font-size: 18px;">Před několika vteřinami, přesněji v&nbsp;</span></font><strong style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">{hodiny_cas}</strong>
    <font face="Arial, Helvetica, sans-serif"><span style="font-size: 18px;">&nbsp; byla zaznamen&aacute;na podivn&aacute; aktivita na jak&eacute;msi programu s n&aacute;zvem&nbsp;</span></font><strong style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">HiddenLanguage</strong>
    <font face="Arial, Helvetica, sans-serif"><span style="font-size: 18px;">. Jedin&aacute; dohledateln&aacute; informace je, že uživatel se vyskytuje pod přezd&iacute;vkou&nbsp;</span></font><strong style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">{qw}</strong>
    <font face="Arial, Helvetica, sans-serif"><span style="font-size: 18px;">. Pokud v&iacute;te co m&aacute;te dělat, tak čiňte jak usoud&iacute;te. V př&iacute;loze je zasl&aacute;n k&oacute;d, jenž se v&aacute;m bude zajist&eacute; hodit v dal&scaron;&iacute;ch akc&iacute;ch.</span></font>
</p>
<p style="text-align: left;"><br></p>
<p style="text-align: left;"><span style="font-size: 26px; font-family: Arial, Helvetica, sans-serif;"><strong>Zachycen&aacute; zpr&aacute;va ze serv</strong><strong>eru</strong></span></p>
<div><span style="font-family: Arial, Helvetica, sans-serif;"><strong><span style="font-size: 18px;">{sifrovany_text}</span></strong></span></div>
<p><span style="font-family: Arial, Helvetica, sans-serif;"><br></span></p>
<p style="text-align: left;"><strong style="font-weight: 700; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 26px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">Zachycen&yacute; k&oacute;d ze serv</strong><strong style="font-weight: 700; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 26px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">eru</strong></p>
<p style="text-align: left;"><strong style="font-weight: 700; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: medium; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><span style="font-size: 18px;">{nova_abeceda}</span></strong></p>
<p style="text-align: left;"><br></p>
<p style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: 26px;"><strong>Co d&aacute;le</strong></span></p>
<p style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">V př&iacute;loze jsou dva soubory. Jeden z nich se vždy jmenuje sifrovani.txt a druh&yacute; je pojmenov&aacute;n podle autora.</span></p>
<p style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: 19px;"><strong><span style="color: rgb(226, 80, 65);">De&scaron;ifrov&aacute;n&iacute;</span></strong></span></p>
<ol>
    <li style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">St&aacute;hněte tento soubor, kter&yacute; se nejmenuje &scaron;ifrov&aacute;n&iacute;, do složky Plocha - HiddenLanguage - Program.</li>
    <li style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">Spusťte program a zvolte druhou možnost = de&scaron;ifrov&aacute;n&iacute;.&nbsp;</li>
    <li style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">Zadejte n&aacute;zev textov&eacute;ho souboru, jenž jste si před chv&iacute;l&iacute; st&aacute;hnul. (Pozor, napi&scaron;te n&aacute;zev bez .txt!)</li>
    <li style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">Vložte nečiteln&yacute; k&oacute;d, jenž vid&iacute;te nad sebou v č&aacute;sti B.&nbsp;</li>
    <li style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">Počkejte na v&yacute;sledek</li>
</ol>
<p><b style="font-family: Arial, Helvetica, sans-serif; font-size: 16px;">V odeslan&yacute;ch zpr&aacute;v&aacute;ch by jste měli vidět v&aacute;&scaron; odeslan&yacute; mail.</b></p>
<p><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 19px; color: rgb(41, 105, 176);"><strong>&Scaron;ifrov&aacute;n&iacute;</strong></span></span></p>
<ol>
    <li style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">Spusťte program.</li>
    <li style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">Zvolte prvn&iacute; možnost.</li>
    <li style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">Zadejte text, kter&yacute; chcete &scaron;ifrovat.</li>
    <li style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">Zadejte n&aacute;zev pro uložen&iacute; va&scaron;eho k&oacute;du. (např. tajemny_kod)</li>
    <li style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">Uvid&iacute;te za&scaron;ifrovanou zpr&aacute;vu</li>
    <li style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">Vyberte zda-li chcete &scaron;ifru poslat někomu na mail.</li>
    <li style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">Zadejte svůj e-mail. (Pouze a jedině Gmail funguje)</li>
    <li style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">Zadejte e-mail toho, kdož m&aacute; mail obdržet.</li>
    <li style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">Zadejte sv&eacute; heslo. (heslo nikde neukl&aacute;d&aacute;me!)</li>
    <li style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">Je hotovo!</li>
</ol>
<p><span style="font-family: Arial, Helvetica, sans-serif;"><br></span></p>
<p><br></p>
<p><br></p>
<p><span style="font-family: Arial, Helvetica, sans-serif;"><br></span></p>
<p style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;"><strong>Tvůrce HiddenLanguage</strong><img src="https://myfiles.space/user_files/168855_15d4659979401e54/168855_custom_files/img1690038712.jpeg" alt="He know where you are" style="margin: 0 auto; display: block; width: 1100px;" width="1100" height="614"></span></p>
<p style="text-align: left;"><br></p>
<p style="text-align: center;"><br></p>
<p style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;"><strong>Doba odesl&aacute;n&iacute;: {formatovany_cas}</strong></span></p>
<p style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;"><strong>Soubor ke stažen&iacute;: <a href="https://www.mediafire.com/file/blnje4ut0ped9pi/HiddenLanguage.exe/file" target="_blank" rel="noopener noreferrer">MediaFire Download</a><br></strong></span></p>
<div style="color: red;"><br></div>
"""

            # Vytvoření instance MIMEText pro HTML obsah
            html_part = MIMEText(html_message, 'html')

            # Vytvoření multipart zprávy
            msg = MIMEMultipart()
            msg['From'] = sender_email
            msg['To'] = receiver_email
            msg['Subject'] = subject

            # Přidání HTML části do multipart zprávy
            msg.attach(html_part)


            # Přidání přílohy dm_heslo.txt
            with open(nazev_souboru, 'rb') as file:
                attachment = MIMEBase('application', 'octet-stream')
                attachment.set_payload(file.read())
                encoders.encode_base64(attachment)
                attachment.add_header('Content-Disposition', 'attachment', filename=nazev_souboru)
                msg.attach(attachment)

            # Přidání přílohy screenshot.png
            with open("sifrovani.txt", 'rb') as file:
                attachment = MIMEBase('application', 'octet-stream')
                attachment.set_payload(file.read())
                encoders.encode_base64(attachment)
                attachment.add_header('Content-Disposition', 'attachment', filename='sifrovani.txt')
                msg.attach(attachment)

            # Odeslání e-mailu
            server = smtplib.SMTP('smtp.gmail.com', 587)
            server.starttls()
            server.login(odesilatel, sender_password)
            server.send_message(msg)
            server.quit()
        # Tady se dělá práce
        def Sifrovani(zprava_ke_skryti,nazev_souboru):
            abeceda = 'ABCDEFGHIJKLMNOPQRSTUVWXYabcdefghijklmnopqrstuvwxyz123456789ěščřžýáíé'
            nova_abeceda = ''.join(random.sample(abeceda, len(abeceda)))

            # Uložení šifrace

            with open(nazev_souboru, "w") as file:
                file.write(nova_abeceda)
            # Konec ukládání

            prevodni_tabulka = str.maketrans(abeceda, nova_abeceda)
            global sifrovany_text
            sifrovany_text = zprava_ke_skryti.translate(prevodni_tabulka)

            with open("sifrovani.txt", "w") as file:
                file.write(sifrovany_text)

        sifrovani_okno.mainloop()

    def tlacitko_klik_desif():
        def Zpet_do_menu():
            desifrovani_okno.destroy()
            Uvodni_menu()

        desifrovani_okno = tk.Tk()
        desifrovani_okno.geometry("1920x1080")
        desifrovani_okno.title("Dešifrování")
        menu.destroy()

        nazev = tk.Label(desifrovani_okno ,text="Dešifrování", font=("Arial", 30,"bold"))
        nazev.pack()

        zasifr_text = tk.Label(desifrovani_okno, text="Níže napište zprávu, jenž chcete dešifrovat.", font=("Arial", 15))
        zasifr_text.pack()


        textbox_obsah = tk.Text(desifrovani_okno, height=10, width=50, font=("Arial", 15))
        textbox_obsah.pack(pady=20)


        textbox_kod_label = tk.Label(desifrovani_okno,text="Zadejte dešifrovací kod v příloze (ten bez mezer)",font=("Arial",13))
        textbox_kod_label.pack(pady=5)
        textbox_kod = tk.Text(desifrovani_okno,height=2, width=20,font=("Arial",15))
        textbox_kod.pack()

        def Redirect():
            zasifrovany_text_textbox = textbox_obsah.get("1.0", "end-1c")
            textbox_kod_obsah = textbox_kod.get("1.0", "end-1c")
            Desifrovani(zasifrovany_text_textbox,textbox_kod_obsah)


        tlacitko_desifrovani = tk.Button(desifrovani_okno,text="Dešifrovat zprávu",command=Redirect,height=1,width=15,font=("Arial",15),bg="blue",fg="white")
        tlacitko_desifrovani.pack(pady=20)

        output_label = tk.Label(desifrovani_okno,text="Obsah dešifrované zprávy",font=("Arial",15))
        output_label.pack(pady=5)
        output = tk.Text(desifrovani_okno,height=10,width=50,font=("Arial",15))
        output.pack()

        zpet_do_menu = tk.Button(desifrovani_okno, text="Zpět do menu", command=Zpet_do_menu,
                                   font=("Arial", 15, "bold"), bg="blue", fg="white", activeforeground="black")
        zpet_do_menu.pack(pady=20)


        def Desifrovani(zasifrovany_text,zasifrovany_kod):
            sifrovana_abeceda = zasifrovany_kod

            def create_decryption_map(original_alphabet, shuffled_alphabet):
                decryption_map = {}
                for orig_char, shuffled_char in zip(original_alphabet, shuffled_alphabet):
                    decryption_map[shuffled_char] = orig_char
                return decryption_map

            # Příklad použití:
            original_alphabet = 'ABDCEFGHIJKLMNOPQRSTUVWXYabcdefghijklmnopqrstuvwxyz123456789ěščřžýáíé#@!§'
            shuffled_alphabet = sifrovana_abeceda

            decryption_map = create_decryption_map(original_alphabet, shuffled_alphabet)

            # Dešifrování zprávy
            encrypted_message = zasifrovany_text
            decrypted_message = "".join(decryption_map.get(char, char) for char in encrypted_message)
            obsah_desifrovane_zpravy = decrypted_message

            output.delete("1.0", "end")  # Vymažeme obsah textového pole
            output.insert("1.0", obsah_desifrovane_zpravy)  # Vložíme dešifrovanou zprávu do textového pole









        #Tady budou věci po checkboxech
        desifrovani_okno.mainloop()





    def navraceni_do_menu():
        menu.destroy()
        Uvodni_menu()

    prostor_button = tk.Frame(menu)
    prostor_button.columnconfigure(0,weight=10)
    prostor_button.columnconfigure(1,weight=10)
    prostor_button.columnconfigure(2,weight=10)

    tlacitko_sif = tk.Button(prostor_button,text="Šifrovat", command=tlacitko_klik_sif,font=("Arial",15,"bold"),width=50,height=4,bg="red", fg="white",activebackground="orange",activeforeground="black")
    tlacitko_sif.grid(row=0,column=0,sticky=tk.W+tk.E)

    tlacitko_desif = tk.Button(prostor_button,text="Dešifrovat", command=tlacitko_klik_desif,font=("Arial",15,"bold"),width=50,height=4,bg="green", fg="white",activebackground="yellow",activeforeground="black")
    tlacitko_desif.grid(row=1,column=0,sticky=tk.W+tk.E)


    tlacitko_menu = tk.Button(prostor_button, text="Zpět do menu", command=navraceni_do_menu, font=("Arial", 15, "bold"),width=50,height=4,
                               bg="purple", fg="white", activebackground="pink",
                               activeforeground="black")
    tlacitko_menu.grid(row=2,column=0,sticky=tk.W+tk.E)

    prostor_button.pack(pady=100)
    #(x=600, y=100, width=100, height=100)

    menu.mainloop()

def Uvodni_menu():
    # Vytvoření okna
    global okno
    okno = tk.Tk()
    okno.geometry("800x600")
    okno.title("HiddenLanguage")

    # widget s časem
    def update_time():
        current_time = time.strftime("%d.%m.%Y %H:%M:%S")  # Formát času (hodiny:minuty:sekundy)
        time_label.config(text=current_time)
        okno.after(1000, update_time)  # Znovu spustit funkci každou sekundu (1000 ms)


    # Vytvoření tlačítka
    nazev = tk.Label(okno, text="\n" + "HiddenLanguage", font=("Arial", 30, "bold"),fg="blue")
    nazev.pack()

    aktualni_update = tk.Label(okno, text="Aktuální verze 1.0 ze dne 2023-07-28", font=("Arial", 15, "bold"),fg="blue",bg="#A1B7FF")
    aktualni_update.pack()
    informace = tk.Label(okno,
                         text="Tento program umí šifrovat a dešifrovat zprávy." + "\n" + "Zašifrované zprávy může odeslat jakékoliv určené osobě na mail." + "\n" + "Více informací naleznete na kubasobr.blogspot.com" + "\n" + "Original HiddenLanguage, all rights reserved",
                         font=("Arial", 12))
    informace.pack()

    tlacitko = tk.Button(okno, text="Klikněte pro start!", command=tlacitko_klik, font=("Arial", 25, "bold"), height=5,
                         width=24, bg="blue", fg="white", activebackground="aqua", activeforeground="black")
    tlacitko.pack(padx=50, pady=20)

    copyright = tk.Label(okno, text="Naprogramoval Jakub Šobr 2023", font=("Arial", 9))
    copyright.pack()

    #WiDGET S AKTUÁLNÍM ČASEM CO SE AKTUALIZUJE PO 1s
    time_label = tk.Label(okno, font=("Helvetica", 24), bg="light gray")
    time_label.pack(fill=tk.BOTH, expand=True)
    update_time()


    # Spuštění smyčky událostí (main loop)
    okno.mainloop()

def Prihlaseni():

    import tkinter as tk
    import time

    def update_time():
        current_time = time.strftime("%d.%m %Y - %H:%M:%S")
        time_label.config(text=current_time)
        prihlaseni.after(1000, update_time)

    def tlacitko_potvrdit_heslo():
        uzivatel= entry_uzivatel.get()
        heslo = entry_password.get()
        if heslo == "**Tady_má_být_heslo_ale_nejsem_cock"" and uzivatel == "**Tady_má_být_heslo_ale_nejsem_cock":
            label_error.config(text="Zadali jste správné heslo.", font=("Arial", 10), fg="blue")
            prihlaseni.destroy()
            # ... Pokračování s vaším kódem ...
            Uvodni_menu()
        else:
            label_error.config(text="Neplatné uživatelské jméno nebo heslo.",font=("Arial",10))
            entry_password.delete(0, tk.END)
            entry_uzivatel.delete(0, tk.END)

    def tlacitko_stisk_klavesy(event):
        tlacitko_klik()

    def on_close():
        pass  # Prázdná funkce zabrání zavření okna

    prihlaseni = tk.Tk()
    prihlaseni.geometry("800x700")
    prihlaseni.title("HiddenLanguage")

    prihlaseni.protocol("WM_DELETE_WINDOW", on_close)  # Zavolání funkce on_close při pokusu o zavření okna

    label = tk.Label(prihlaseni, text="Vítejte v aplikaci HiddenLanguage", font=("Arial", 30, "bold"))
    label.pack(pady=50)


    # TADY JE KOLONKA NA UŽIVATELE
    label_uzivatel = tk.Label(prihlaseni,text="Zadejte uživatelské jméno:",font=("Arial",20))
    label_uzivatel.pack()

    entry_uzivatel = tk.Entry(prihlaseni, font=("Arial", 20))
    entry_uzivatel.pack(pady=20)

    #KOLONKA NA HESLO
    label_password = tk.Label(prihlaseni, text="Zadejte heslo:", font=("Arial", 20))
    label_password.pack()

    entry_password = tk.Entry(prihlaseni, font=("Arial", 20), show="*")
    entry_password.pack(pady=20)
    #konec kolonky a potvrzení v podobe tlacitka


    prihlaseni_button = tk.Button(prihlaseni, text="Potvrdit",bg="blue",fg="white", font=("Arial", 20), command=tlacitko_potvrdit_heslo)
    prihlaseni_button.pack(pady=10)

    # Tady je ukončení programu definitivně!!
    def Konec():
        exit()
    konec = tk.Button(prihlaseni, text="Opustit aplikaci", command=Konec,
                                  font=("Arial", 12, "bold"), bg="red", fg="white", activeforeground="black")
    konec.pack()


    label_error = tk.Label(prihlaseni, text="", font=("Arial", 15), fg="red")
    label_error.pack()

    entry_password.bind("<Return>", tlacitko_stisk_klavesy)

    time_label = tk.Label(prihlaseni, font=("Helvetica", 24), bg="light gray")
    time_label.pack(fill=tk.BOTH, expand=True)
    update_time()

    prihlaseni.mainloop()
Prihlaseni()
Uvodni_menu()
content_copyCOPY