Open Source Python İle Kendi Şifre Depolama Uygulamanızı Yapın

Rhanta

discord.gg/valohell2025
Efsane Üye
Katılım
7 Haz 2024
Mesajlar
1,135
Beğeniler
402
Yaş
20
İletişim
Merhaba Ben Rhanta
Bu Gün Size Forumda Daha Önce Hiç Paylaşılmayan Bir Proje Paylaşıcam
Bu Projem Size Hem Güvenli Şifreler Oluşturuyor Hemde Onları Şifreleme İle Saklıyor
Bu Programın %60 Civarını Kendim Kodladım

Kodu Çalıştırmak için Bir Python Dosyası Oluşturmal Ve O python Dosyasını İstediğiniz Bir Klasörün İçine Atmalısınız.
Nedeni Uygulama Şifreleri Gizlemek İçin 3 tane Dosya Oluşturuyor

Şimdi İndirmeniz Gereken ikitane Kütüphane Bulunmaktadır
1. cryptography
2. pyperclip
Bunların İkisinide Direkt İndirmek İsterseniz Bu Kodu Cmd ye girebilirsiniz :
pip install pyperclip cryptography

Dip Not : Bu Güne Kadar Hep Arkamda Olan , Bana Destek Veren @BlackPlague Ye Çok Teşekkür Ederim

Uygulamayı Tamamen Open Source Yapıyorum İsteyen Paylaşsın Üzerine Ekleme Yapsın.

Şimdi Kullanıma Gelelim

Kodu Çalıştırdığınızda Sizden Bir Şifre Girmenizi İsticek Bu Şifre Uygulamayı Koruma Amaçlı.
Şifre Girdikten Sonra Ana Şifre Diye Bir Yer Açılcak Oraya Belirlediğiniz Şifreyi Girceksiniz.
Bu Programı Her Açtığınızda Ana Şifre Sorucak Ve Girmek Zorundasınız. Yanlış Şifre Girildiği Taktirde Uygulama Kendini Kapatıyor
Şifre Ekleme Öncelikle Ana Şifreyi Girdikden Sonra Ana Menüye Atıcak Sizi.
Ardından Şifre Ekleye Basın Bir İsim girinn hangi site , oyun a kayıt olcaksanız isim girin iste karısmaması için
girdikden sonra otomatik şifrenizi hazırlicak hazırladıkdan sonra Şifreleri Görüntüleden Eklediğiniz Şifreleri Görebilirsiniz
Ancak O Şifreleri Gör Düğmesine Bastığınızda Güvenlik Amaçlı Ana Şifre Sorucak Yani Sizin Belirlediğiniz Şifreyi Sorucak O Şifreyi Girince ListBoxda Kaydeddiğiniz Şifreler Gözükücektir İyi Forumlar

Python:
import tkinter as tk
from tkinter import messagebox, simpledialog, ttk, Listbox
from cryptography.fernet import Fernet
import json
import os
import pyperclip
import random
import string

def generate_key():
    key = Fernet.generate_key()
    with open("secret.key", "wb") as key_file:
        key_file.write(key)

def load_key():
    return open("secret.key", "rb").read()

def encrypt_password(password):
    key = load_key()
    f = Fernet(key)
    return f.encrypt(password.encode())

def decrypt_password(encrypted_password):
    key = load_key()
    f = Fernet(key)
    return f.decrypt(encrypted_password).decode()

def save_data(data):
    with open('passwords.json', 'w') as file:
        json.dump(data, file)

def load_data():
    if os.path.exists('passwords.json'):
        with open('passwords.json', 'r') as file:
            try:
                return json.load(file)
            except json.JSONDecodeError:
                messagebox.showwarning("Hata", "Veri dosyası geçersiz. Yeniden oluşturulacak.")
                return {}
    return {}

def generate_random_password(length=12, use_special_chars=True):
    characters = string.ascii_letters + string.digits
    if use_special_chars:
        characters += string.punctuation
    return ''.join(random.choice(characters) for _ in range(length))

def set_master_password():
    master_password = simpledialog.askstring("Ana Şifre Belirle", "Yeni ana şifre:")
    if master_password:
        encrypted_master_password = encrypt_password(master_password)
        with open("master_password.json", "w") as file:
            json.dump({"master_password": encrypted_master_password.decode()}, file)
        messagebox.showinfo("Başarılı", "Ana şifre başarıyla ayarlandı.")
    else:
        messagebox.showwarning("Uyarı", "Lütfen bir ana şifre girin.")

def check_master_password():
    master_password = simpledialog.askstring("Ana Şifre", "Ana şifreyi girin:")
    with open("master_password.json", "r") as file:
        data = json.load(file)
        if decrypt_password(data["master_password"].encode()) == master_password:
            return True
        else:
            messagebox.showwarning("Uyarı", "Ana şifre yanlış.")
            return False

def add_password():
    website = simpledialog.askstring("Yeni Şifre Ekle", "Web sitesi:")
   
    if website:
        password = generate_random_password()
        encrypted_password = encrypt_password(password)
       
        data = load_data()
        data[website] = {"password": encrypted_password.decode(), "note": ""}
        save_data(data)
       
        messagebox.showinfo("Başarılı", f"Şifre başarıyla oluşturuldu!\nWeb Site: {website}\nŞifre: {password}")
    else:
        messagebox.showwarning("Uyarı", "Lütfen bir web sitesi girin.")

def view_passwords():
    if check_master_password():
        data = load_data()
        if not data:
            messagebox.showinfo("Bilgi", "Henüz eklenmiş bir şifre yok.")
            return

        password_listbox.delete(0, tk.END)
        for website, info in data.items():
            decrypted_password = decrypt_password(info["password"].encode())
            password_listbox.insert(tk.END, f"Site : {website}")
            password_listbox.insert(tk.END, f"Şifre : {decrypted_password}")
            password_listbox.insert(tk.END, "--------------")
    else:
        messagebox.showwarning("Uyarı", "Ana şifre yanlış.")

def delete_password():
    website = simpledialog.askstring("Şifre Sil", "Silinecek web sitesi:")
   
    if website:
        data = load_data()
        if website in data:
            del data[website]
            save_data(data)
            messagebox.showinfo("Başarılı", f"{website} için şifre silindi.")
        else:
            messagebox.showwarning("Uyarı", "Belirtilen web sitesi bulunamadı.")
    else:
        messagebox.showwarning("Uyarı", "Lütfen bir web sitesi girin.")

def copy_password():
    selected = password_listbox.curselection()
    if selected:
        website = password_listbox.get(selected[0]).split(': ')[1]
        data = load_data()
        if website in data:
            decrypted_password = decrypt_password(data[website]['password'].encode())
            pyperclip.copy(decrypted_password)
            messagebox.showinfo("Başarılı", f"{website} şifresi kopyalandı.")
        else:
            messagebox.showwarning("Hata", "Şifre bulunamadı.")
    else:
        messagebox.showwarning("Hata", "Lütfen bir site seçin.")

def search_password():
    search_term = simpledialog.askstring("Şifre Ara", "Aranacak siteyi girin:")
    if search_term:
        data = load_data()
        password_listbox.delete(0, tk.END)
        for website, info in data.items():
            if search_term.lower() in website.lower():
                decrypted_password = decrypt_password(info["password"].encode())
                password_listbox.insert(tk.END, f"Site : {website}")
                password_listbox.insert(tk.END, f"Şifre : {decrypted_password}")
                password_listbox.insert(tk.END, "--------------")
    else:
        messagebox.showwarning("Hata", "Bir site ismi girin.")

def toggle_dark_mode():
    if root.cget('bg') == '#f0f0f0':
        root.configure(bg="#333")
        password_listbox.configure(bg="#555", fg="white")
    else:
        root.configure(bg="#f0f0f0")
        password_listbox.configure(bg="white", fg="black")

def main_interface():
    global root, password_listbox
    root = tk.Tk()
    root.title("Ana Şifre ile Şifre Yöneticisi")
    root.geometry("400x500")
    root.configure(bg="#f0f0f0")

    password_listbox = Listbox(root, width=50, height=10)
    password_listbox.pack(pady=20)

    ttk.Button(root, text="Yeni Şifre Ekle", command=add_password).pack(pady=5)
    ttk.Button(root, text="Şifreleri Görüntüle", command=view_passwords).pack(pady=5)
    ttk.Button(root, text="Şifre Sil", command=delete_password).pack(pady=5)
    ttk.Button(root, text="Şifreyi Kopyala", command=copy_password).pack(pady=5)
    ttk.Button(root, text="Şifre Ara", command=search_password).pack(pady=5)
    ttk.Button(root, text="Koyu Mod", command=toggle_dark_mode).pack(pady=5)

    root.mainloop()

if not os.path.exists("secret.key"):
    generate_key()

if not os.path.exists("master_password.json"):
    set_master_password()

if check_master_password():
    main_interface()
else:
    messagebox.showwarning("Uyarı", "Yanlış ana şifre. Program kapatılıyor.")
 
Elinize Sağlık
 
Eline sağlık benimde kullanacağım bir uygulama olmuş :perfect:
 
Teşekkür Ederim Aklımda Daha Çok Plan Var Ama Hangi Birini Yapim derken bunu Yapı verdim Yinede Beğendiğin İçin Minnetarım.
Bence Gayet Kullanışlı Olmuş örnek bazı arkadaşlar 30 40 metin2 hesabi açıp loncalık çar yapiyor bu sayede şifreleri saklayabilirler unutmamak açısından vesaire gibi düşünüyorum bende valorant hilesi ariyordum cg gelmiş ama efsane üye :) üzdü bi tık ama bu da iyi geldi
 
Eline sağlık benimde kullanacağım bir uygulama olmuş :perfect:
Sen Kullancıksan Ne Mutlu Bana

Bence Gayet Kullanışlı Olmuş örnek bazı arkadaşlar 30 40 metin2 hesabi açıp loncalık çar yapiyor bu sayede şifreleri saklayabilirler unutmamak açısından vesaire gibi düşünüyorum bende valorant hilesi ariyordum cg gelmiş ama efsane üye :) üzdü bi tık ama bu da iyi geldi
Teşekkür Ederim :D
 
F0zvBEY.png


Gayet güzel olmuş, özellikle olası bir rat vb durumuna karşı şifreleri encrypt etmen çok başarılı. py dosyası exe'ye dönüştürülür ve korunursa extra olarak da güvenlik sağlanır. Ellerine sağlık.
 
F0zvBEY.png


Gayet güzel olmuş, özellikle olası bir rat vb durumuna karşı şifreleri encrypt etmen çok başarılı. py dosyası exe'ye dönüştürülür ve korunursa extra olarak da güvenlik sağlanır. Ellerine sağlık.
Zaten Onun İçin encrypt Ekledim Yoksa Güvenliğin Bir Amacı Kalmazdı Beğenmene Sevindim :D
 

  Şuanda konuyu görüntüleyen kullanıcılar


Üst Alt