A Python Base64 modulja egy hatékony eszköz az üzenetek kódolására és dekódolására. Használhatja adatok biztonságos küldésére az interneten keresztül. A webhelyek, alkalmazások és kommunikációs szolgáltatások szokásos eljárása ezt a fajta kódolást, hogy megvédje az érzékeny adatokat az ellenséges hackerektől.
A Base64 modul pár funkcióval rendelkezik, amelyek segítségével üzeneteket kódolhat és dekódolhat, így némi extra biztonságot ad az adatátvitelhez.
A Tkinter és a Base64 modul
A Tkinter lehetővé teszi az asztali alkalmazások létrehozását. Számos widgetet kínál, például gombokat, címkéket és szövegdobozokat, amelyek megkönnyítik az alkalmazások fejlesztését, túl sok erőfeszítés nélkül. Hihetetlen grafikus felületű programokat készíthet a Tkinterrel. Te talán készítsen egy egyszerű számológépet, egy teendőlista alkalmazás, vagy a gépelési teszt játék. A Tkinter rendszerbe való telepítéséhez nyissa meg a terminált, és írja be:
pip install tkinter
A BASE64 funkciókat biztosít a bináris adatok ASCII-be kódolásához, és visszakódolja azokat binárissá. Támogatja mind a szabványos, mind az URL-biztonságos kódolást, amely biztonságosabbá teszi az információtovábbítást. Egy karakterlánc Base64 karakterré alakításához szerezze be az egyes karakterek ASCII-értékét, és számítsa ki a 8 bites binárisát. Alakítsa át ezt a 6 bites darabot a számjegyek újracsoportosításával, majd a megfelelő decimális értékükre való konvertálásával. Végül használja a Base64 kódolási táblázatot az egyes tizedesjegyekhez tartozó Base64 értékek lekéréséhez.
Üzenetek kódolása és dekódolása Pythonban
A projekt forráskódja megtalálható benne GitHub adattár.
Kezdje mindkét modul importálásával. Inicializálja a Tkinter-példányt, és jelenítse meg a gyökérablakot. Állítsa be az ablak címét, méreteit pixelben és háttérszínét.
tól től tkinter import *
import alap64
gyökér = Tk()
root.geometry("750x400")
root.configure (background="víz")
root.title("Üzenetek kódolása és dekódolása Python használatával")
A Címke widgetek használatával hasznos információkat jeleníthet meg az alkalmazásról. A címke elfogadja a szülőablakot, amelybe el szeretné helyezni, a szöveget, amelyet meg kell jelenítenie, valamint a betűtípus stílusát, színét és háttérszínét. Használat csomag() a widget elrendezési blokkba rendezéséhez, mielőtt a szülő widgetbe helyezné. A StringVar megkönnyíti a widgetek, például a címke vagy bejegyzés értékének szabályozását.
Címke (gyökér, szöveg="Python Message Encoder and Decoder", font="arial 25 félkövér", fg='fehér', bg="lila").csomag()
Szöveg = StringVar()
kulcs = StringVar()
mód = StringVar()
Eredmény = StringVar()
Határozzon meg egy függvényt Kódol() amely elfogad egy kulcsot a kódoláshoz és a dekódoláshoz az üzenettel együtt. Határozzon meg egy üres listát, és ismételje meg az üzenet hosszáig. Állítsa be a kulcs indexét a művelet modulusaként, és tárolja az értékét a kulcs_c változóban. Használat ord() hogy megkapjuk a karakter Unicode értékét és használjuk chr() hogy megkapjuk a megadott értéket képviselő karaktert.
Adja hozzá ezt az értéket a listához. Csatlakoztassa a lista minden elemét egy üres karakterlánccal, és használja a kódol() metódus a karakterlánc utf-8 kódolású változatának visszaadásához. A base64.urlsafe_b64encode() metódus ezt a bemenetet kódolja, és a - jelet +-ra, a _-t pedig /-re cseréli.
defKódol(kulcsüzenet):
enc = []számára én ban ben tartomány (len (üzenet)):
kulcs_c = kulcs[i % len (kulcs)]
enc.append (chr((ord (message[i]) + ord (kulcs_c)) % 256))
Visszatérés base64.urlsafe_b64encode("".join (enc).encode()).decode()
Határozzon meg egy függvényt Dekódolás() amely elfogad egy kulcsot a kódoláshoz és a dekódoláshoz az üzenettel együtt. Határozzon meg egy üres listát, és dekódolja az üzenetet. Iteráljon az üzenet hosszáig, és állítsa be a művelet modulusát indexként, és tárolja az értékét a kulcs_c-ben. Az alábbi módon fűzze hozzá a Unicode karakterlánc-üzenet dekódolásának karakterét. Adja vissza a dekódolt karakterláncot.
defDekódolni(kulcsüzenet):
dec = []
üzenet = base64.urlsafe_b64decode (message).decode()számára én ban ben tartomány (len (üzenet)):
kulcs_c = kulcs[i % len (kulcs)]
dec.append (chr((256 + rendelés (üzenet[i]) - parancs (kulcs_c)) % 256))
Visszatérés"".join (dec)
Határozzon meg egy függvényt Mód() amely megkapja a felhasználó által az Entry widgetben megadott módot, és meghívja a megfelelő funkciót a kiválasztás szerint. Ha a felhasználó nem ír be érvényes választ, jelenítsen meg egy hibaüzenetet.
defMód():
ha (mode.get() == "E"):
Result.set (Kódolás (key.get(), Text.get()))
elif (mode.get() == "D"):
Result.set (Dekódolás (key.get(), Text.get()))
más:
Result.set("Érvénytelen mód")
Határozzon meg egy függvényt Kijárat() a háttérben futó tolmács megölésére és leállítására. Határozzon meg egy Reset() függvényt az Entry mező tartalmának törléséhez.
defKijárat():
root.destroy()
defVisszaállítás():
Text.set("")
key.set("")
mode.set("")
Result.set("")
Címke és bejegyzés widgetek meghatározása az Üzenet, a Kulcs, a Mód és a Szöveg számára. Adja meg a szülőablakot, amelybe el szeretné helyezni őket, a betűstílust, a szöveget és a háttérszínt. A rendszerezéshez állítsa be a koordinátákat is.
Címke (gyökér, font="arial 17 félkövér", szöveg='Üzenet', fg='fekete', bg="aqua").hely (x=60, y=100)
Bejegyzés (gyökér, font="Arial 15", textvariable=Szöveg, bg='fehér').hely (x=450, y=100)Címke (gyökér, font="arial 17 félkövér", szöveg='Kulcs', fg='fekete', bg="aqua").hely (x=60, y=130)
Bejegyzés (gyökér, font="Arial 15", szövegváltozó=kulcs, bg='fehér').hely (x=450, y=130)Címke (gyökér, font="arial 17 félkövér", szöveg="Mód (E-kódolás, D-dekódolás)", fg='fekete', bg="aqua").hely (x=60, y=160)
Bejegyzés (gyökér, font="Arial 15", textvariable=mode, bg='fehér').hely (x=450, y=160)
Címke (gyökér, font="arial 17 félkövér", szöveg='Szöveg', fg='fekete', bg="aqua").hely (x=60, y=190)
Bejegyzés (gyökér, font="arial 15 félkövér", textvariable=Eredmény, bg='fehér').hely (x=450, y=190)
Hasonlóképpen határozzon meg három gombot az eredmény megtekintéséhez, a mezők alaphelyzetbe állításához és a program leállításához. A gomboknak van egy speciális paramétere, a parancs, amely bevesz egy függvényt, és kattintásra végrehajtja azt.
Gomb (gyökér, font="arial 15 félkövér", szöveg='Eredmény', padx=2, bg='Világos szürke', parancs=Mód).place (x=100, y=240)
Gomb (gyökér, font="arial 15 félkövér", szöveg='Visszaállítás', szélesség=6, command=Reset, bg='Zöld', padx=2).hely (x=300, y=240)
Gomb (gyökér, font="arial 15 félkövér", szöveg='Állj meg', szélesség=6, command=Exit, bg='Piros', padx=2, pady=2).hely (x=500, y=240)
A mainloop() függvény arra utasítja a Pythont, hogy futtassa a Tkinter eseményhurkot, és figyelje az eseményeket (például a gombnyomásokat), amíg be nem zárja az ablakot.
root.mainloop()
Az üzenetkódoló / dekódoló működés közben
A program futtatásakor a program megjelenít egy ablakot, ahol meg kell adni egy üzenetet, egy kulcsot és egy módot. A 2009-es gombbal a Kódolási mód kiválasztásakor megjelenik az üzenet Kihasználni átváltozik f8KRwpvCnlLChcKjwp5Sf8KW.
Hasonlóképpen, ha a kódolt üzenetet másoljuk és visszaillesztjük a bemenetre a dekódoláshoz, akkor az eredeti üzenetet kapjuk vissza.
Kiberbiztonság Python használatával
A Python segítségével olyan szkripteket írhat, amelyek automatizálják a biztonsági ellenőrzéseket, figyelik a hálózatokat és keresik a sebezhetőségeket. Használhatja robusztus alkalmazások létrehozására, amelyek hitelesítést használnak annak érdekében, hogy csökkentsék annak esélyét, hogy egy támadó feltörje adatait.
A kiberbiztonsági szakértők gyakran a Python segítségével webalkalmazás-tűzfalakat építenek az alkalmazások megfigyelésére. Fenyegetésészlelési elemzést végezhetnek a Machine Learning segítségével. Ezzel az architektúrával sokkal könnyebb egyéni behatolási teszteket létrehozni és biztonsági protokollokat érvényesíteni.