\x89PNG\r\n\x1a\n\x00\x00\x00\x0DIHDR\x00\x00\x00\x01\x00 \x00\x00\x01\x08\x06\x00\x00\x00\x1F\x15\xC4\x89\x00\x00\x00 \x0AIDATx\x9Ccb\x00\x00\x00\x06\x00\x03\x1A\x05\x9D\x00\x00 \x00\x00IEND\xAE\x42\x60\x82 csarite.com
KUJUNTI.ID MINISH3LL
Path : /var/www/html/yedekledb24/DatabaseBackupMasterv6/
(S)h3ll Cr3at0r :
F!le Upl0ad :

B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H

Current File : /var/www/html/yedekledb24/DatabaseBackupMasterv6/encryption_utils_simplified.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Veritabanı yedekleri için şifreleme yardımcı fonksiyonları.
"""

import os
import logging
import tempfile
import subprocess
from pathlib import Path

# Logging yapılandırması
logging.basicConfig(level=logging.INFO, 
                    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

def encrypt_file(input_file, recipients=None, output_file=None, passphrase=None):
    """
    Bir dosyayı GPG ile şifreler.
    
    Args:
        input_file (str): Şifrelenecek dosyanın yolu
        recipients (list, optional): Alıcı e-posta adresleri listesi (kullanılmıyor)
        output_file (str, optional): Çıktı dosyasının yolu (belirtilmezse input_file + .gpg)
        passphrase (str, optional): Şifreleme için şifre (symmetric encryption için)
        
    Returns:
        str: Şifrelenmiş dosyanın yolu veya None (başarısız olursa)
    """
    try:
        # Çıktı dosyası belirtilmemişse varsayılan kullan
        if not output_file:
            output_file = f"{input_file}.gpg"
        
        # Şifre verilmemişse çevre değişkeninden al
        if not passphrase:
            passphrase = os.environ.get('BACKUP_ENCRYPTION_PSK', '')
            if passphrase:
                logger.info("Şifreleme parolası çevre değişkeninden alındı (BACKUP_ENCRYPTION_PSK)")
        
        # Şifre yoksa şifreleme yapmaya çalışma
        if not passphrase:
            logger.error("Şifreleme için parola bulunamadı, lütfen şifre belirtin veya çevre değişkeni ayarlayın")
            return None
                
        # Echo ile şifreyi göndererek GPG komutunu çalıştırma (stdin üzerinden şifre göndermek için)
        echo_cmd = f'echo "{passphrase}" | gpg --batch --yes --passphrase-fd 0 --output {output_file} --symmetric {input_file}'
        
        # Komutu çalıştır (şifreyi göstermeyecek şekilde logla)
        safe_cmd = echo_cmd.replace(passphrase, "*****")
        logger.info(f"GPG komutu çalıştırılıyor: {safe_cmd}")
        
        result = subprocess.run(echo_cmd, shell=True, capture_output=True, text=True)
        
        # Sonucu kontrol et
        if result.returncode == 0:
            logger.info(f"Dosya başarıyla şifrelendi: {output_file}")
            return output_file
        else:
            logger.error(f"Dosya şifreleme hatası: {result.returncode}")
            logger.error(f"Hata detayı: {result.stderr}")
            return None
            
    except Exception as e:
        logger.error(f"Dosya şifreleme işlemi sırasında hata: {str(e)}")
        return None

def decrypt_file(input_file, output_file=None, passphrase=None):
    """
    GPG ile şifrelenmiş bir dosyayı çözer.
    
    Args:
        input_file (str): Şifresi çözülecek dosyanın yolu
        output_file (str, optional): Çıktı dosyasının yolu
        passphrase (str, optional): Şifre çözme için şifre
        
    Returns:
        str: Şifresi çözülmüş dosyanın yolu veya None (başarısız olursa)
    """
    try:
        # Çıktı dosyası belirtilmemişse geçici dosya oluştur
        if not output_file:
            input_path = Path(input_file)
            # .gpg uzantısını kaldır
            output_name = input_path.stem if input_path.suffix.lower() == '.gpg' else input_path.name
            output_file = os.path.join(tempfile.gettempdir(), output_name)
            
        # Şifre verilmemişse çevre değişkeninden al
        if not passphrase:
            passphrase = os.environ.get('BACKUP_ENCRYPTION_PSK', '')
            if passphrase:
                logger.info("Şifre çözme parolası çevre değişkeninden alındı (BACKUP_ENCRYPTION_PSK)")
        
        # Şifre yoksa şifre çözme yapmaya çalışma
        if not passphrase:
            logger.error("Şifre çözme için parola bulunamadı, lütfen şifre belirtin veya çevre değişkeni ayarlayın")
            return None
                
        # Echo ile şifreyi göndererek GPG komutunu çalıştırma (stdin üzerinden şifre göndermek için)
        echo_cmd = f'echo "{passphrase}" | gpg --batch --yes --passphrase-fd 0 --output {output_file} --decrypt {input_file}'
        
        # Komutu çalıştır (şifreyi göstermeyecek şekilde logla)
        safe_cmd = echo_cmd.replace(passphrase, "*****")
        logger.info(f"GPG komutu çalıştırılıyor: {safe_cmd}")
        
        result = subprocess.run(echo_cmd, shell=True, capture_output=True, text=True)
        
        # Sonucu kontrol et
        if result.returncode == 0:
            logger.info(f"Dosya şifresi başarıyla çözüldü: {output_file}")
            return output_file
        else:
            logger.error(f"Dosya şifre çözme hatası: {result.returncode}")
            logger.error(f"Hata detayı: {result.stderr}")
            return None
            
    except Exception as e:
        logger.error(f"Dosya şifre çözme işlemi sırasında hata: {str(e)}")
        return None

def list_gpg_keys():
    """
    Mevcut GPG anahtarlarını listeler.
    
    Returns:
        tuple: (public_keys, private_keys) - Python-gnupg modülünü kullanmadığımız için boş liste döner
    """
    # Python-gnupg yerine doğrudan komut kullanıldığı için boş döner
    return ([], [])

def import_gpg_key(key_data, private=False):
    """
    GPG anahtarını içe aktarır.
    
    Args:
        key_data (str): Anahtar verisi (ASCII-armored)
        private (bool): Özel anahtar mı?
        
    Returns:
        str: İçe aktarılan anahtarın parmak izi veya None
    """
    # Bu işlev uygulanmamış - ihtiyaç duyulursa doğrudan komut kullanarak uygulanabilir
    return None

def generate_gpg_key(name, email, passphrase=None, key_type="RSA", key_length=2048):
    """
    GPG anahtar çifti oluşturur.
    
    Args:
        name (str): Anahtar sahibinin adı
        email (str): Anahtar sahibinin e-posta adresi
        passphrase (str, optional): Özel anahtar için şifre
        key_type (str): Anahtar türü (RSA veya DSA)
        key_length (int): Anahtar uzunluğu (bit cinsinden)
        
    Returns:
        dict: Oluşturulan anahtar bilgileri veya None (başarısız olursa)
    """
    # Bu işlev uygulanmamış - şu anda simetrik şifreleme için anahtara ihtiyaç yok
    return None

© KUJUNTI.ID